Utilisation de l'interface de ligne de commande du kit Kit SDK de chiffrement AWS - Kit SDK de chiffrement AWS

Si nous fournissons une traduction de la version anglaise du guide, la version anglaise du guide aura préséance en cas de contradiction. La traduction sera une traduction automatique.

Utilisation de l'interface de ligne de commande du kit Kit SDK de chiffrement AWS

Cette rubrique explique comment utiliser les paramètres dans l'Kit CLI de chiffrement AWS. Pour obtenir des exemples, consultez Exemples de l'interface de ligne de commande (CLI) du kit Kit SDK de chiffrement AWS. Pour obtenir la documentation complète, consultez Lisez les documents.

Procédure pour chiffrer et déchiffrer des données

L'Kit CLI de chiffrement AWS utilise les fonctions du kit Kit SDK de chiffrement AWS afin de faciliter le chiffrement et le déchiffrement de données en toute sécurité.

  • Lorsque vous chiffrez des données dans le kit Kit CLI de chiffrement AWS, vous spécifiez vos données en texte brut et une clé principale, telle que AWS Key Management Service (AWS KMS) clé principale client (CMK). Si vous utilisez un fournisseur de clés principales personnalisé, vous devez spécifier le fournisseur. Vous spécifiez également les emplacements de sortie pour le message chiffré et pour les métadonnées relatives à l'opération de chiffrement. Le contexte de chiffrement est facultatif, mais il est recommandé.

    aws-encryption-cli --encrypt --input myPlaintextData \ --master-keys key=1234abcd-12ab-34cd-56ef-1234567890ab \ --output myEncryptedMessage \ --metadata-output ~/metadata \ --encryption-context purpose=test

    L'Kit CLI de chiffrement AWS récupère une clé de données unique à partir de la clé principale et chiffre vos données. Elle renvoie un message chiffré et des métadonnées sur l'opération. Le message chiffré contient vos données chiffrées (texte chiffré) et une copie chiffrée de la clé de données. Vous n'avez pas à vous soucier du stockage, de la gestion ou de la perte de la clé de données.

     

  • Lorsque vous déchiffrez des données, vous transmettez votre message, le contexte de chiffrement facultatif, et l'emplacement de la sortie en texte brut et des métadonnées. Si vous utilisez un fournisseur de clés principales personnalisé, vous fournissez également la clé principale. Si vous utilisez une AWS KMS CMK, AWS KMS dérive le clé principale du message chiffré.

    aws-encryption-cli --decrypt --input myEncryptedMessage \ --output myPlaintextData \ --metadata-output ~/metadata \ --encryption-context purpose=test

    Le kit Kit CLI de chiffrement AWS utilise la clé principale pour déchiffrer la clé de données du message chiffré. Elle utilise ensuite la clé de données pour déchiffrer vos données. Elle renvoie vos données en texte brut et vos métadonnées sur l'opération.

Procédure pour spécifier une clé principale

Lorsque vous chiffrez des données dans le kit Kit CLI de chiffrement AWS, vous devez spécifier une clé principale. Vous pouvez utiliser une AWS KMS clé principale client (CMK) ou une clé principale à partir d'un fournisseur de clés principales personnalisé. Le fournisseur de clés principales personnalisé peut être n'importe quel fournisseur de clés principales compatible avec Python.

Pour spécifier un clé principale, utilisez le paramètre --master-keys (-m). Sa valeur est un ensemble d'attributs au format attribute=value. Les attributs que vous utilisez dépendent du fournisseur de clés principales et de la commande.

  • AWS KMS. Dans les commandes de chiffrement, vous devez spécifier un --master-keys avec un clé attribut. Les autres attributs sont facultatifs. Dans les commandes de déchiffrement, le paramètre --master-keys est facultatif et peut uniquement avoir un attribut profile.

  • fournisseur de clés principales personnalisé. Vous devez spécifier le paramètre --master-keys dans chaque commande. La valeur du paramètre doit avoir des attributs key et provider.

Vous pouvez inclure plusieurs paramètres --master-keys dans la même commande.

Attributs de paramètre des clés principales

La valeur du paramètre --master-keys comprend les attributs suivants et leurs valeurs.

Si le nom d'un attribut ou la valeur d'un attribut inclut des espaces ou des caractères spéciaux, entourez le nom et la valeur de guillemets. Par exemple: --master-keys key=12345 "provider=my cool provider".

Clé Préciser un clé principale

Utilisez l'attribut key pour identifier une clé principale. La valeur peut être n'importe quel identificateur de clé que le fournisseur de clés principales reconnaît.

--master-keys key=1234abcd-12ab-34cd-56ef-1234567890ab

Dans une commande de chiffrement, chaque valeur du paramètre --master-keys doit inclure au moins un attribut key et une valeur. Vous pouvez utiliser plusieurs attributs key dans chaque valeur du paramètre --master-keys.

aws-encryption-cli --encrypt --master-keys key=1234abcd-12ab-34cd-56ef-1234567890ab key=1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d

Dans les commandes de chiffrement qui utilisent AWS KMS CMKs, la valeur de clé peut être l'ID de clé, son ARN de clé, un nom d'alias ou un ARN d'alias. Par exemple, cette commande de chiffrement utilise un ARN d'alias dans la valeur de l'attribut key. Pour de plus amples informations sur les identificateurs de clé d'un AWS KMS CMK, veuillez consulter Identificateurs de clé dans le AWS Key Management Service Developer Guide.

aws-encryption-cli --encrypt --master-keys key=arn:aws:kms:us-west-2:111122223333:alias/ExampleAlias

Dans les commandes de déchiffrement qui utilisent un fournisseur de clés principales personnalisé, les attributs key et provider sont requis. L'attribut key n'est pas autorisé dans les commandes de déchiffrement qui utilisent une AWS KMS CMK.

aws-encryption-cli --decrypt --master-keys provider='myProvider' key='100101'
 : fournisseur Spécifiez la fournisseur de clés principales

L'attribut provider identifie le fournisseur de clés principales. La valeur par défaut est aws-kms, qui représente AWS KMS. Si vous utilisez un autre fournisseur de clés principales, l'attribut provider est obligatoire.

--master-keys key=12345 provider=my_custom_provider

Pour de plus amples informations sur l'utilisation de fournisseurs de clés principales personnalisés (non AWS KMS), veuillez consulter la rubrique Configuration avancée du fichier README pour le référentiel CLI AWS Encryption SDK.

Région Spécifiez un AWS Région

Utilisez l'attribut region pour spécifier la région AWS d'une AWS KMS CMK. L'attribut est valide uniquement dans les commandes de chiffrement et uniquement lorsque le fournisseur de clés principales est AWS KMS.

--encrypt --master-keys key=alias/primary-key region=us-east-2

Les commandes de l'Kit CLI de chiffrement AWS utilisent la région AWS qui est spécifiée dans la valeur de l'attribut key si elle inclut une région, par exemple un ARN. Si la valeur de key spécifie une région AWS, l'attribut region est ignoré.

L'attribut region est prioritaire sur les autres spécifications relatives à la région. Si vous n'utilisez pas d'attribut region, les commandes de l'Kit CLI de chiffrement AWS utilisent la région AWS spécifiée dans votre profil nommé de l'AWS CLI, le cas échéant, ou dans votre profil par défaut.

Profil Spécifier un profil nommé

Utilisez l'attribut profile pour spécifier un profil nommé de l'AWS CLI. Les profils nommés peuvent inclure des informations d'identification et une région AWS. Cet attribut n'est valide que lorsque la valeur fournisseur de clés principales est AWS KMS.

--master-keys key=alias/primary-key profile=admin-1

Vous pouvez utiliser l'attribut profile pour spécifier d'autres informations d'identification dans les commandes de chiffrement et de déchiffrement. Dans une commande de chiffrement, l'Kit CLI de chiffrement AWS utilise la région AWS du profil nommé uniquement lorsque la valeur de key n'inclut pas de région et qu'il n'y a pas d'attribut region. Dans une commande de déchiffrement, la région AWS du profil nommé est ignorée.

Comment spécifier plusieurs clés principales

Vous pouvez spécifier plusieurs clés principales dans chaque commande.

Si vous spécifiez plusieurs clé principale, la première clé principale génère (et chiffre) la clé de données qui est utilisée pour chiffrer vos données. L'autre clés principales ne chiffre que la clé de données. Le message chiffré contient les données chiffrées (ou texte chiffré) et un ensemble de clés de données chiffrées, une clé chiffrée par chaque clé principale. Toutes les clés principales peuvent déchiffrer une clé de données, puis déchiffrer les données.

Il existe deux façons de spécifier plusieurs clés principales :

  • Inclure plusieurs attributs key dans une valeur du paramètre --master-keys.

    $cmk_oregon=arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab $cmk_ohio=arn:aws:kms:us-east-2:111122223333:key/0987ab65-43cd-21ef-09ab-87654321cdef --master-keys key=$cmk_oregon key=$cmk_ohio
  • Inclure plusieurs paramètres --master-keys dans la même commande. Utilisez cette syntaxe lorsque les valeurs d'attribut que vous spécifiez ne s'appliquent pas à toutes les clés principales de la commande.

    --master-keys region=us-east-2 key=alias/primary_CMK \ --master-keys region=us-west-1 key=alias/primary_CMK

Procédure pour fournir une entrée

L'opération de chiffrement de l'Kit CLI de chiffrement AWS utilise des données en texte brut comme entrée et renvoie un message chiffré. L'opération de déchiffrement utilise un message chiffré comme entrée et renvoie des données en texte brut.

Le paramètre --input (-i), qui indique à l'Kit CLI de chiffrement AWS où trouver les données d'entrée, est nécessaire dans toutes les commandes de l'Kit CLI de chiffrement AWS.

Vous pouvez fournir une entrée des façons suivantes :

  • Utiliser un fichier.

    --input myData.txt
  • Utiliser un modèle de nom de fichier.

    --input testdir/*.xml
  • Utiliser un répertoire ou un modèle de nom de répertoire. Lorsque l'entrée est un répertoire, le paramètre --recursive (-r, -R) est obligatoire.

    --input testdir --recursive
  • Dirigez l'entrée vers la commande (stdin). Utilisez une valeur de - pour le paramètre --input. (Le paramètre --input est toujours obligatoire.)

    echo 'Hello World' | aws-encryption-cli --encrypt --input -

Procédure pour spécifier l'emplacement de sortie

Le paramètre --output indique à l'Kit CLI de chiffrement AWS où écrire les résultats de l'opération de chiffrement ou de déchiffrement. Il est nécessaire dans chaque commande de l'Kit CLI de chiffrement AWS. L'Kit CLI de chiffrement AWS crée un nouveau fichier de sortie pour chaque fichier d'entrée de l'opération.

Si un fichier de sortie existe déjà, l'Kit CLI de chiffrement AWS affiche un avertissement par défaut, puis remplace le fichier. Pour empêcher le remplacement, utilisez le paramètre --interactive, qui vous invite à confirmer avant le remplacement, ou le paramètre --no-overwrite, qui ignore l'entrée si la sortie doit entraîner un remplacement. Pour supprimer l’avertissement d’écrasement, utilisez --quiet. Pour capturer les erreurs et les avertissements à partir du Kit CLI de chiffrement AWS, utilisez le 2>&1 vers l’opérateur de redirection pour les écrire dans le flux de sortie.

Note

Les commandes qui remplacent les fichiers de sortie commencent par supprimer le fichier de sortie. Si la commande échoue, il est possible que le fichier de sortie soit déjà supprimé.

Vous pouvez spécifier l'emplacement de sortie de plusieurs façons.

  • Spécifiez un nom de fichier. Si vous spécifiez un chemin d'accès au fichier, tous les répertoires du chemin doivent exister avant l'exécution de la commande.

    --output myEncryptedData.txt
  • Spécifiez un répertoire. Le répertoire de sortie doit exister avant l'exécution de la commande.

    Si l'entrée contient des sous-répertoires, la commande reproduit les sous-répertoires sous le répertoire spécifié.

    --output Test

    Lorsque l'emplacement de sortie est un répertoire (sans nom de fichier), l'Kit CLI de chiffrement AWS crée des noms de fichiers de sortie à partir des noms des fichiers d'entrée, auxquels est ajouté un suffixe. Crypter les opérations en annexe .encrypted au nom du fichier d’entrée et aux opérations de déchiffrement .decrypted. Pour modifier le suffixe, utilisez le --suffix paramètre.

    Par exemple, si vous chiffrez file.txt, la commande de chiffrement crée file.txt.encrypted. Si vous décryptez file.txt.encrypted, la commande de déchiffrement crée file.txt.encrypted.decrypted.

     

  • Écrivez sur la ligne de commande (stdout). Entrez une valeur de - pour le paramètre --output. Vous pouvez utiliser --output - pour diriger la sortie vers une autre commande ou un autre programme.

    --output -

Procédure pour utiliser un contexte de chiffrement

L'Kit CLI de chiffrement AWS vous permet de fournir un contexte de chiffrement dans les commandes de chiffrement et de déchiffrement. Ce contexte n'est pas obligatoire, mais c'est une bonne pratique de chiffrement que nous recommandons.

Un contexte de chiffrement est un type de données authentifiées supplémentaires non secrètes et arbitraires. Dans l'Kit CLI de chiffrement AWS, le contexte de chiffrement se compose d'un ensemble de paires name=value. Vous pouvez utiliser n'importe quel contenu dans les paires, y compris les informations sur les fichiers, les données qui vous aident à identifier l'opération de chiffrement dans les journaux ou les données nécessaires pour vos droits ou vos stratégies.

Dans une commande de chiffrement

Le contexte de chiffrement que vous spécifiez dans une commande de chiffrement, ainsi que toutes paires supplémentaires ajoutées par le CMM, est lié de manière chiffrée aux données chiffrées. Il est également inclus (en texte brut) dans le message chiffré renvoyé par la commande. Si vous utilisez une AWS KMS clé principale client (CMK), le contexte de chiffrement peut également s'afficher en texte brut dans les enregistrements et les journaux d'audit, par exemple AWS CloudTrail.

L'exemple suivant illustre un contexte de chiffrement avec trois paires name=value.

--encryption-context purpose=test dept=IT class=confidential

Dans une commande de déchiffrement

Dans une commande de déchiffrement, le contexte de chiffrement vous permet de confirmer que vous déchiffrez le message chiffré correct.

Vous n'êtes pas tenu de fournir un contexte de chiffrement dans une commande de déchiffrement, même si un contexte de chiffrement a été utilisé pour le chiffrement. Toutefois, si vous en fournissez un, l'Kit CLI de chiffrement AWS vérifie que chaque élément du contexte de chiffrement de la commande de déchiffrement correspond à un élément du contexte de chiffrement du message chiffré. Si certains éléments ne correspondent pas, la commande de déchiffrement échoue.

Par exemple, la commande suivante déchiffre le message chiffré uniquement si son contexte de chiffrement inclut dept=IT.

aws-encryption-cli --decrypt --encryption-context dept=IT ...

Un contexte de chiffrement est un élément important de votre stratégie de sécurité. Cependant, lorsque vous choisissez un contexte de chiffrement, n'oubliez pas que ses valeurs ne sont pas secrètes. N'incluez aucune donnée confidentielle dans le contexte de chiffrement.

Pour spécifier un contexte de chiffrement

  • Dans une commande de chiffrement, utilisez le paramètre --encryption-context avec une ou plusieurs paires name=value. Séparez chaque paire par un espace.

    --encryption-context name=value [name=value] ...
  • Dans une commande de déchiffrement, la valeur du paramètre --encryption-context peut inclure des paires name=value, des éléments name (sans valeur) ou une combinaison des deux.

    --encryption-context name[=value] [name] [name=value] ...

Si name ou value dans une paire name=value contient des espaces ou des caractères spéciaux, placez la totalité de la paire entre guillemets.

--encryption-context "department=software engineering" "AWS Region=us-west-2"

Par exemple, cette commande de chiffrement inclut un contexte de chiffrement avec deux paires, purpose=test et dept=23.

aws-encryption-cli --encrypt --encryption-context purpose=test dept=23 ...

Ces commandes de déchiffrement réussiraient. Le contexte de chiffrement de chaque commande est un sous-ensemble du contexte de chiffrement d'origine.

\\ Any one or both of the encryption context pairs aws-encryption-cli --decrypt --encryption-context dept=23 ... \\ Any one or both of the encryption context names aws-encryption-cli --decrypt --encryption-context purpose ... \\ Any combination of names and pairs aws-encryption-cli --decrypt --encryption-context dept purpose=test ...

Cependant, ces commandes de déchiffrement échoueraient. Le contexte de chiffrement du message chiffré ne contient pas les éléments spécifiés.

aws-encryption-cli --decrypt --encryption-context dept=Finance ... aws-encryption-cli --decrypt --encryption-context scope ...

Procédure pour stocker les paramètres dans un fichier de configuration

Vous pouvez gagner du temps et éviter les erreurs de saisie en enregistrant souvent les paramètres et les valeurs de l'Kit CLI de chiffrement AWS utilisés dans des fichiers de configuration.

Un fichier de configuration est un fichier texte qui contient les paramètres et les valeurs d'une commande de l'Kit CLI de chiffrement AWS. Lorsque vous faites référence à un fichier de configuration dans une commande de l'Kit CLI de chiffrement AWS, la référence est remplacée par les paramètres et les valeurs du fichier de configuration. L'effet est le même que si vous aviez saisi le contenu d'un fichier dans la ligne de commande. Un fichier de configuration peut avoir n'importe quel nom et peut être situé dans n'importe quel répertoire auquel l'utilisateur actuel peut accéder.

L'exemple de fichier de configuration suivant, cmk.conf, spécifie deux AWS KMS CMKs dans des régions différentes.

--master-keys key=arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab --master-keys key=arn:aws:kms:us-east-2:111122223333:key/0987ab65-43cd-21ef-09ab-87654321cdef

Pour utiliser le fichier de configuration dans une commande, ajoutez au nom du fichier le signe arobase, @, en préfixe. Dans une console PowerShell, faites précéder le signe arobase, `@, d'un accent grave.

Cet exemple de commande utilise le fichier cmk.conf dans une commande de chiffrement.

Bash
$ aws-encryption-cli -e @cmk.conf -i hello.txt -o testdir
PowerShell
PS C:\> aws-encryption-cli -e `@cmk.conf -i .\Hello.txt -o .\TestDir

Règles des fichiers de configuration

Les règles relatives à l'utilisation des fichiers de configuration sont les suivantes :

  • Vous pouvez inclure plusieurs paramètres dans chaque fichier de configuration et les répertorier dans n'importe quel ordre. Répertoriez chaque paramètre avec ses valeurs (le cas échéant) sur une ligne distincte.

  • Utilisez # pour ajouter un commentaire à toute ou partie d'une ligne.

  • Vous pouvez inclure des références à d'autres fichiers de configuration. Ne faites pas précéder le signe @ d'un accent grave, même dans PowerShell.

  • Si vous utilisez des guillemets dans un fichier de configuration, le texte entre guillemets ne peut pas s'étendre sur plusieurs lignes.

Par exemple, voici le contenu d'un exemple de fichier encrypt.conf.

# Archive Files --encrypt --output /archive/logs --recursive --interactive --encryption-context class=unclassified dept=IT --suffix # No suffix --metadata-output ~/metadata @caching.conf # Use limited caching

Vous pouvez également inclure plusieurs fichiers de configuration dans une commande. Cet exemple de commande utilise à la fois les fichiers de configuration encrypt.conf et master-keys.conf.

Bash
$ aws-encryption-cli -i /usr/logs @encrypt.conf @master-keys.conf
PowerShell
PS C:\> aws-encryption-cli -i $home\Test\*.log `@encrypt.conf `@master-keys.conf

Ensuite, . Essayez le Kit CLI de chiffrement AWS exemples