Úselo GenerateDataKey con un AWS SDK o CLI - AWS SDKEjemplos de código

Hay más AWS SDK ejemplos disponibles en el GitHub repositorio de AWS Doc SDK Examples.

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Úselo GenerateDataKey con un AWS SDK o CLI

En los siguientes ejemplos de código se muestra cómo se utiliza GenerateDataKey.

CLI
AWS CLI

Ejemplo 1: Generación de una clave de datos simétrica de 256 bits

El siguiente generate-data-key ejemplo solicita una clave de datos simétrica de 256 bits para usarla fuera de. AWS El comando devuelve una clave de datos en texto plano para su uso y eliminación inmediatos, y una copia de esa clave de datos cifrada con la clave especificada. KMS Puede almacenar de forma segura la clave de datos cifrada con los datos cifrados.

Para solicitar una clave de datos de 256 bits, utilice el parámetro key-spec con un valor de AES_256. Para solicitar una clave de datos de 128 bits, utilice el parámetro key-spec con un valor de AES_128. Para el resto longitudes de clave de datos, utilice el parámetro number-of-bytes.

La KMS clave que especifique debe ser una KMS clave de cifrado simétrica, es decir, una KMS clave con un valor de especificación de clave de _. SYMMETRIC DEFAULT

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

Salida:

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

Plaintext (clave de datos de texto sin formato) y CiphertextBlob (clave de datos cifrada) se devuelven en formato codificado en base64.

Para obtener más información, consulte Data keys < https://docs.aws.amazon.com/kms/ latest/developerguide/concepts .html #data -keys en la Guía para desarrolladores del servicio de administración de AWS claves.

Ejemplo 2: Generación de una clave de datos simétrica de 512 bits

En el siguiente ejemplo de generate-data-key se solicita una clave de datos simétrica de 512 bits para cifrado y descifrado. El comando devuelve una clave de datos en texto plano para su uso y eliminación inmediatos, y una copia de esa clave de datos cifrada con la clave especificada. KMS Puede almacenar de forma segura la clave de datos cifrada con los datos cifrados.

Para solicitar una longitud de clave distinta de 128 o 256 bits, utilice el parámetro number-of-bytes. Para solicitar una clave de datos de 512 bits, en el siguiente ejemplo se utiliza el parámetro number-of-bytes con un valor de 64 (bytes).

La KMS clave que especifique debe ser una KMS clave de cifrado simétrica, es decir, una KMS clave con un valor de especificación de clave de _. SYMMETRIC DEFAULT

NOTE: Los valores de la salida de este ejemplo están truncados para mostrarlos.

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

Salida:

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

Plaintext (clave de datos de texto sin formato) y CiphertextBlob (clave de datos cifrada) se devuelven en formato codificado en base64.

Para obtener más información, consulte Data keys < https://docs.aws.amazon.com/kms/ latest/developerguide/concepts .html #data -keys en la Guía para desarrolladores del servicio de administración de AWS claves.

  • Para API obtener más información, consulte la Referencia GenerateDataKeyde AWS CLI comandos.

Python
SDKpara Python (Boto3)
nota

Hay más información. GitHub Busque el ejemplo completo y aprenda a configurar y ejecutar en el Repositorio de ejemplos de código de 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)
  • Para API obtener más información, consulte GenerateDataKeyla AWS SDKreferencia de Python (Boto3). API

Rust
SDKpara Rust
nota

Hay más información GitHub. Busque el ejemplo completo y aprenda a configurar y ejecutar en el Repositorio de ejemplos de código de 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(()) }
  • Para API obtener más información, consulte GenerateDataKeyla APIreferencia AWS SDK de Rust.