À utiliser ReEncrypt avec un AWS SDKou CLI - AWS Key Management Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

À utiliser ReEncrypt avec un AWS SDKou CLI

Les exemples de code suivants montrent comment utiliserReEncrypt.

Les exemples d’actions sont des extraits de code de programmes de plus grande envergure et doivent être exécutés en contexte. Vous pouvez voir cette action en contexte dans l’exemple de code suivant :

CLI
AWS CLI

Exemple 1 : rechiffrer un message chiffré sous une autre KMS clé symétrique (Linux et macOS).

L'exemple de re-encrypt commande suivant montre la méthode recommandée pour rechiffrer des données avec AWS CLI.

Fournissez le texte chiffré dans un fichier. Dans la valeur du --ciphertext-blob paramètre, utilisez le fileb:// préfixe, qui indique CLI à lire les données d'un fichier binaire. Si le fichier ne se trouve pas dans le répertoire actuel, saisissez le chemin complet du fichier. Pour plus d'informations sur la lecture AWS CLIvaleurs de paramètres d'un fichier, voir Chargement AWS CLIparamètres d'un fichier < https://docs.aws.amazon.com/cli/ cli-usage-parameters-file latest/userguide/ .html> dans AWS Guide de l'utilisateur de l'interface de ligne de commande et meilleures pratiques pour les paramètres des fichiers locaux< https://aws.amazon.com/blogs/ best-practices-for-local developer/ -file-parameters/> dans le AWS Blog de l'outil de ligne de commande. Spécifiez la KMS clé source qui déchiffre le texte chiffré. Le --source-key-id paramètre n'est pas obligatoire lors du déchiffrement avec des clés de chiffrement symétriques. KMS AWS KMSpeut obtenir la KMS clé qui a été utilisée pour chiffrer les données à partir des métadonnées du blob de texte chiffré. Mais il est toujours recommandé de spécifier la KMS clé que vous utilisez. Cette pratique garantit que vous utilisez la KMS clé que vous voulez et vous empêche de déchiffrer par inadvertance un texte chiffré à l'aide d'une clé non fiable.Spécifiez la KMS clé de destination, qui chiffre à nouveau les données. Le paramètre est KMS toujours obligatoire. --destination-key-id Cet exemple utilise une cléARN, mais vous pouvez utiliser n'importe quel identifiant de clé valide. Demandez la sortie en texte brut sous forme de valeur de texte.Le --query paramètre indique de n'obtenir que la valeur du champ CLI à partir de la sortie. Plaintext Le --output paramètre renvoie la sortie sous forme de texte.Base64 décodez le texte en clair et enregistrez-le dans un fichier. L'exemple suivant montre comment rediriger (|) la valeur du Plaintext paramètre vers l'utilitaire Base64, qui le décode. Ensuite, il redirige (>) la sortie décodée vers le ExamplePlaintext fichier.

Avant d'exécuter cette commande, remplacez l'exemple de clé par IDs des identifiants de clé valides provenant de votre AWS .

aws kms re-encrypt \ --ciphertext-blob fileb://ExampleEncryptedFile \ --source-key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --destination-key-id 0987dcba-09fe-87dc-65ba-ab0987654321 \ --query CiphertextBlob \ --output text | base64 --decode > ExampleReEncryptedFile

Cette commande ne produit aucun résultat. La sortie de la re-encrypt commande est décodée en base64 et enregistrée dans un fichier.

Pour plus d'informations, voir ReEncrypt < https://docs.aws.amazon.com/kms/ latest/APIReference/API_ReEncrypt.html dans le AWS APIRéférence du service de gestion des clés.

Exemple 2 : pour rechiffrer un message chiffré sous une autre KMS clé symétrique (invite de commande Windows).

L'exemple de re-encrypt commande suivant est identique au précédent, sauf qu'il utilise l'certutilutilitaire pour décoder les données en texte brut en Base64. Cette procédure nécessite deux commandes, comme indiqué dans les exemples suivants.

Avant d'exécuter cette commande, remplacez l'exemple d'ID de clé par un ID de clé valide provenant de votre AWS .

aws kms re-encrypt ^ --ciphertext-blob fileb://ExampleEncryptedFile ^ --source-key-id 1234abcd-12ab-34cd-56ef-1234567890ab ^ --destination-key-id 0987dcba-09fe-87dc-65ba-ab0987654321 ^ --query CiphertextBlob ^ --output text > ExampleReEncryptedFile.base64

Ensuite, utilisez l'certutilutilitaire

certutil -decode ExamplePlaintextFile.base64 ExamplePlaintextFile

Sortie :

Input Length = 18 Output Length = 12 CertUtil: -decode command completed successfully.

Pour plus d'informations, voir ReEncrypt < https://docs.aws.amazon.com/kms/ latest/APIReference/API_ReEncrypt.html dans le AWS APIRéférence du service de gestion des clés.

  • Pour API plus de détails, voir ReEncryptAWS CLI Référence de commande.

Python
SDKpour Python (Boto3)
Note

Il y en a plus à ce sujet GitHub. Consultez l'exemple complet et apprenez à configurer et à exécuter dans AWS Référentiel d'exemples de code.

class KeyEncrypt: def __init__(self, kms_client): self.kms_client = kms_client def re_encrypt(self, source_key_id, cipher_text): """ Takes ciphertext previously encrypted with one key and reencrypt it by using another key. :param source_key_id: The ARN or ID of the original key used to encrypt the ciphertext. :param cipher_text: The encrypted ciphertext. :return: The ciphertext encrypted by the second key. """ destination_key_id = input( f"Your ciphertext is currently encrypted with key {source_key_id}. " f"Enter another key ID or ARN to reencrypt it: " ) if destination_key_id != "": try: cipher_text = self.kms_client.re_encrypt( SourceKeyId=source_key_id, DestinationKeyId=destination_key_id, CiphertextBlob=cipher_text, )["CiphertextBlob"] except ClientError as err: logger.error( "Couldn't reencrypt your ciphertext. Here's why: %s", err.response["Error"]["Message"], ) else: print(f"Reencrypted your ciphertext as: {cipher_text}") return cipher_text else: print("Skipping reencryption demo.")
  • Pour API plus de détails, voir ReEncryptAWS SDKpour Python (Boto3) Reference. API

Ruby
SDKpour Ruby
Note

Il y en a plus à ce sujet GitHub. Consultez l'exemple complet et apprenez à configurer et à exécuter dans AWS Référentiel d'exemples de code.

require "aws-sdk-kms" # v2: require 'aws-sdk' # Human-readable version of the ciphertext of the data to reencrypt. blob = "01020200785d68faeec386af1057904926253051eb2919d3c16078badf65b808b26dd057c101747cadf3593596e093d4ffbf22434a6d00000068306606092a864886f70d010706a0593057020100305206092a864886f70d010701301e060960864801650304012e3011040c9d629e573683972cdb7d94b30201108025b20b060591b02ca0deb0fbdfc2f86c8bfcb265947739851ad56f3adce91eba87c59691a9a1" sourceCiphertextBlob = [blob].pack("H*") # Replace the fictitious key ARN with a valid key ID destinationKeyId = "arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321" client = Aws::KMS::Client.new(region: "us-west-2") resp = client.re_encrypt({ ciphertext_blob: sourceCiphertextBlob, destination_key_id: destinationKeyId }) # Display a readable version of the resulting re-encrypted blob. puts "Blob:" puts resp.ciphertext_blob.unpack("H*")
  • Pour API plus de détails, voir ReEncryptAWS SDK for Ruby APIRéférence.

Rust
SDKpour Rust
Note

Il y en a plus à ce sujet GitHub. Consultez l'exemple complet et apprenez à configurer et à exécuter dans AWS Référentiel d'exemples de code.

async fn reencrypt_string( verbose: bool, client: &Client, input_file: &str, output_file: &str, first_key: &str, new_key: &str, ) -> Result<(), Error> { // Get blob from input file // Open input text file and get contents as a string // input is a base-64 encoded string, so decode it: let data = fs::read_to_string(input_file) .map(|input_file| base64::decode(input_file).expect("invalid base 64")) .map(Blob::new); let resp = client .re_encrypt() .ciphertext_blob(data.unwrap()) .source_key_id(first_key) .destination_key_id(new_key) .send() .await?; // Did we get an encrypted blob? let blob = resp.ciphertext_blob.expect("Could not get encrypted text"); let bytes = blob.as_ref(); let s = base64::encode(bytes); let o = &output_file; let mut ofile = File::create(o).expect("unable to create file"); ofile.write_all(s.as_bytes()).expect("unable to write"); if verbose { println!("Wrote the following to {}:", output_file); println!("{}", s); } else { println!("Wrote base64-encoded output to {}", output_file); } Ok(()) }
  • Pour API plus de détails, voir ReEncryptAWS SDKpour API référence à Rust.

Pour une liste complète des AWS SDKguides du développeur et exemples de code, voirUtilisation AWS KMS avec un AWS SDK. Cette rubrique inclut également des informations sur la mise en route et des détails sur SDK les versions précédentes.