À utiliser GenerateDataKey avec un AWS SDK ou 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 GenerateDataKey avec un AWS SDK ou CLI

Les exemples de code suivants montrent comment utiliserGenerateDataKey.

CLI
AWS CLI

Exemple 1 : pour générer une clé de données symétrique de 256 bits

L'generate-data-keyexemple suivant demande une clé de données symétrique de 256 bits à utiliser en dehors de. AWS La commande renvoie une clé de données en texte brut pour une utilisation et une suppression immédiates, ainsi qu'une copie de cette clé de données chiffrée sous la KMS clé spécifiée. Vous pouvez stocker en toute sécurité la clé de données chiffrée avec les données chiffrées.

Pour demander une clé de données de 256 bits, utilisez le key-spec paramètre avec une valeur de. AES_256 Pour demander une clé de données de 128 bits, utilisez le key-spec paramètre avec une valeur de. AES_128 Pour toutes les autres longueurs de clé de données, utilisez le number-of-bytes paramètre.

La KMS clé que vous spécifiez doit être une KMS clé de chiffrement symétrique, c'est-à-dire une KMS clé dont la valeur de spécification de SYMMETRIC clé est _. DEFAULT

aws kms generate-data-key \ --key-id alias/ExampleAlias \ --key-spec AES_256

Sortie :

{ "Plaintext": "VdzKNHGzUAzJeRBVY+uUmofUGGiDzyB3+i9fVkh3piw=", "KeyId": "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "CiphertextBlob": "AQEDAHjRYf5WytIc0C857tFSnBaPn2F8DgfmThbJlGfR8P3WlwAAAH4wfAYJKoZIhvcNAQcGoG8wbQIBADBoBgkqhkiG9w0BBwEwHgYJYIZIAWUDBAEuMBEEDEFogLqPWZconQhwHAIBEIA7d9AC7GeJJM34njQvg4Wf1d5sw0NIo1MrBqZa+YdhV8MrkBQPeac0ReRVNDt9qleAt+SHgIRF8P0H+7U=" }

La Plaintext (clé de données en texte brut) et la CiphertextBlob (clé de données cryptée) sont renvoyées au format codé en base64.

Pour plus d'informations, voir Data keys < https://docs.aws.amazon.com/kms/ latest/developerguide/concepts .html #data -keys dans le Guide du développeur du service de gestion des AWS clés.

Exemple 2 : pour générer une clé de données symétrique 512 bits

L'generate-data-keyexemple suivant demande une clé de données symétrique de 512 bits pour le chiffrement et le déchiffrement. La commande renvoie une clé de données en texte brut pour une utilisation et une suppression immédiates, ainsi qu'une copie de cette clé de données chiffrée sous la KMS clé spécifiée. Vous pouvez stocker en toute sécurité la clé de données chiffrée avec les données chiffrées.

Pour demander une longueur de clé autre que 128 ou 256 bits, utilisez le number-of-bytes paramètre. Pour demander une clé de données 512 bits, l'exemple suivant utilise le number-of-bytes paramètre avec une valeur de 64 (octets).

La KMS clé que vous spécifiez doit être une KMS clé de chiffrement symétrique, c'est-à-dire une KMS clé dont la valeur de spécification de SYMMETRIC clé est _. DEFAULT

NOTE: Les valeurs de la sortie de cet exemple sont tronquées pour être affichées.

aws kms generate-data-key \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --number-of-bytes 64

Sortie :

{ "CiphertextBlob": "AQIBAHi6LtupRpdKl2aJTzkK6FbhOtQkMlQJJH3PdtHvS/y+hAEnX/QQNmMwDfg2korNMEc8AAACaDCCAmQGCSqGSIb3DQEHBqCCAlUwggJRAgEAMIICSgYJKoZ...", "Plaintext": "ty8Lr0Bk6OF07M2BWt6qbFdNB+G00ZLtf5MSEb4al3R2UKWGOp06njAwy2n72VRm2m7z/Pm9Wpbvttz6a4lSo9hgPvKhZ5y6RTm4OovEXiVfBveyX3DQxDzRSwbKDPk/...", "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" }

Les Plaintext (clé de données en texte brut) et CiphertextBlob (clé de données cryptée) sont renvoyées au format codé en base64.

Pour plus d'informations, voir Data keys < https://docs.aws.amazon.com/kms/ latest/developerguide/concepts .html #data -keys dans le Guide du développeur du service de gestion des AWS clés.

  • Pour API plus de détails, voir GenerateDataKeyla section Référence des AWS CLI commandes.

Python
SDKpour Python (Boto3)
Note

Il y en a plus à ce sujet GitHub. Trouvez l’exemple complet et découvrez comment le configurer et l’exécuter dans le référentiel d’exemples de code AWS.

class KeyManager: def __init__(self, kms_client): self.kms_client = kms_client self.created_keys = [] @classmethod def from_client(cls) -> "KeyManager": """ Creates a KeyManager instance with a default KMS client. :return: An instance of KeyManager initialized with the default KMS client. """ kms_client = boto3.client("kms") return cls(kms_client) def generate_data_key(self, key_id): """ Generates a symmetric data key that can be used for client-side encryption. """ answer = input( f"Do you want to generate a symmetric data key from key {key_id} (y/n)? " ) if answer.lower() == "y": try: data_key = self.kms_client.generate_data_key( KeyId=key_id, KeySpec="AES_256" ) except ClientError as err: logger.error( "Couldn't generate a data key for key %s. Here's why: %s", key_id, err.response["Error"]["Message"], ) else: pprint(data_key)
  • Pour API plus de détails, reportez-vous GenerateDataKeyà la section AWS SDKrelative à la référence Python (Boto3). API

Rust
SDKpour Rust
Note

Il y en a plus à ce sujet GitHub. Trouvez l’exemple complet et découvrez comment le configurer et l’exécuter dans le référentiel d’exemples de code AWS.

async fn make_key(client: &Client, key: &str) -> Result<(), Error> { let resp = client .generate_data_key() .key_id(key) .key_spec(DataKeySpec::Aes256) .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); println!(); println!("Data key:"); println!("{}", s); Ok(()) }
  • Pour API plus de détails, reportez-vous GenerateDataKeyà la section AWS SDKpour la API référence à Rust.

Pour obtenir la liste complète des guides AWS SDK de développement et des exemples de code, consultezL'utilisation de ce service 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.