Crear una clave de rama activa - AWS Encryption SDK

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.

Crear una clave de rama activa

Una clave de sucursal es una clave de datos derivada de una AWS KMS key que el conjunto de claves AWS KMS jerárquico utiliza para reducir el número de llamadas realizadas. AWS KMS La clave de rama activa es la versión más reciente de la clave de rama. El conjunto de claves jerárquico genera una clave de datos única para cada solicitud de cifrado y cifra cada clave de datos con una clave de empaquetado única derivada de la clave de rama activa.

Para crear una nueva clave de rama activa, debe configurar de forma estática las acciones del almacén de claves. CreateKeyes una operación privilegiada que añade la KMS clave ARN especificada en la configuración de las acciones del almacén de claves a la lista de permitidos del almacén de claves. A continuación, la KMS clave se utiliza para generar la nueva clave de rama activa. Recomendamos limitar el acceso a esta operación porque una KMS vez que se agrega una clave al almacén de claves, no se puede eliminar.

Puedes permitir incluir una KMS clave en tu almacén de claves o puedes incluir varias KMS claves actualizando la KMS clave ARN que especifiques en la configuración de acciones del almacén de claves y volviendo a llamarCreateKey. Si permites incluir varias KMS claves en la lista, los usuarios de tu almacén de claves deberán configurar sus acciones de descubrimiento en el almacén de claves para poder usar cualquiera de las claves permitidas del almacén de claves al que tengan acceso. Para obtener más información, consulte Configurar las acciones del almacén de claves.

Permisos de necesarios

Para crear claves de rama, necesitas los ReEncrypt permisos kms: GenerateDataKeyWithoutPlaintext y kms: en la KMS clave especificada en las acciones de tu almacén de claves.

Crea una clave de rama

La siguiente operación crea una nueva clave de rama activa con la KMS clave que especificó en la configuración de acciones del almacén de claves y agrega la clave de rama activa a la tabla de DynamoDB que sirve como almacén de claves.

Al llamar a CreateKey, puede optar por especificar los siguientes valores opcionales.

Java
final Map<String, String> additionalEncryptionContext = Collections.singletonMap("Additional Encryption Context for", "custom branch key id"); final String BranchKey = keystore.CreateKey( CreateKeyInput.builder() .branchKeyIdentifier(custom-branch-key-id) //OPTIONAL .encryptionContext(additionalEncryptionContext) //OPTIONAL .build()).branchKeyIdentifier();
C# / .NET
var additionalEncryptionContext = new Dictionary<string, string>(); additionalEncryptionContext.Add("Additional Encryption Context for", "custom branch key id"); var branchKeyId = keystore.CreateKey(new CreateKeyInput { BranchKeyIdentifier = "custom-branch-key-id", // OPTIONAL EncryptionContext = additionalEncryptionContext // OPTIONAL });
Python
additional_encryption_context = {"Additional Encryption Context for": "custom branch key id"} branch_key_id: str = keystore.create_key( CreateKeyInput( branch_key_identifier = "custom-branch-key-id", # OPTIONAL encryption_context = additional_encryption_context, # OPTIONAL ) )

En primer lugar, la operación CreateKey genera los siguientes valores.

A continuación, la CreateKey operación llama a kms: GenerateDataKeyWithoutPlaintext mediante la siguiente solicitud.

{ "EncryptionContext": { "branch-key-id" : "branch-key-id", "type" : "type", "create-time" : "timestamp", "logical-key-store-name" : "the logical table name for your key store", "kms-arn" : the KMS key ARN, "hierarchy-version" : "1", "aws-crypto-ec:contextKey": "contextValue" }, "KeyId": "the KMS key ARN you specified in your key store actions", "NumberOfBytes": "32" }

A continuación, la CreateKey operación llama a kms: ReEncrypt para crear un registro activo para la clave de sucursal mediante la actualización del contexto de cifrado.

Por último, la CreateKey operación llama a ddb: TransactWriteItems para escribir un nuevo elemento que conserve la clave de rama en la tabla que creó en el paso 2. El objeto tiene los siguientes atributos:

{ "branch-key-id" : branch-key-id, "type" : "branch:ACTIVE", "enc" : the branch key returned by the GenerateDataKeyWithoutPlaintext call, "version": "branch:version:the branch key version UUID", "create-time" : "timestamp", "kms-arn" : "the KMS key ARN you specified in Step 1", "hierarchy-version" : "1", "aws-crypto-ec:contextKey": "contextValue" }