AWS KMS llaveros - 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.

AWS KMS llaveros

Un AWS KMS anillo de claves utiliza el cifrado simétrico AWS KMS keyspara generar, cifrar y descifrar las claves de datos. AWS Key Management Service (AWS KMS) protege sus KMS claves y realiza operaciones criptográficas dentro del límite. FIPS Siempre que sea posible, le recomendamos que utilice un AWS KMS llavero o un llavero con propiedades de seguridad similares.

A partir de la versión 2.3, puede utilizar una clave AWS KMS multirregional en un AWS KMS conjunto de claves o en un proveedor de claves maestras. x de la AWS Encryption SDK y la versión 3.0. x del AWS cifradoCLI. Para obtener detalles y ejemplos del uso del nuevo multi-Region-aware símbolo, consulteUso de varias regiones AWS KMS keys. Para obtener más información sobre las claves de regiones múltiples, consulte Uso de claves de multirregiones en la Guía para desarrolladores de AWS Key Management Service .

nota

Versión 4. x de la AWS Encryption SDK forma. NETy versión 3. x de ellas SDK de cifrado de AWS para Java son las únicas implementaciones de lenguajes de programación que admiten AWS KMS llaveros asimétricos. RSA AWS KMS keys

Si intenta incluir una clave asimétrica en un conjunto de KMS claves de cifrado en cualquier implementación de otro lenguaje, la llamada de cifrado fallará. Si la incluye en un conjunto de claves de descifrado, se ignora.

Todas las menciones de KMSllaveros en el se refieren a llaveros. AWS Encryption SDK AWS KMS

AWS KMS Los llaveros pueden incluir dos tipos de llaves para envolver:

  • Clave generadora: genera una clave de datos en texto no cifrado y la cifra. Un conjunto de claves que cifra datos debe tener una clave generadora.

  • Claves adicionales: cifra la clave de datos de texto sin formato que generó la clave del generador. AWS KMS los llaveros pueden tener cero o más claves adicionales.

Al cifrar, el AWS KMS anillo de claves que utilice debe tener una clave generadora. Al descifrar, la clave generadora omite la distinción entre claves generadoras y claves adicionales.

Cuando un anillo de claves de AWS KMS cifrado solo tiene una AWS KMS clave, esa clave se utiliza para generar y cifrar la clave de datos.

Como todos los llaveros, los AWS KMS llaveros se pueden utilizar de forma independiente o en un conjunto de varios llaveros con otros llaveros del mismo tipo o de un tipo diferente.

Permisos necesarios para los conjuntos de claves de AWS KMS

AWS Encryption SDK No requiere ni depende Cuenta de AWS de ninguno. Servicio de AWS Sin embargo, para usar un AWS KMS llavero, necesitas tener Cuenta de AWS los siguientes permisos mínimos AWS KMS keys en el llavero.

  • Para cifrar con un AWS KMS anillo de claves, necesita el GenerateDataKey permiso kms: en la clave del generador. Necesita el permiso KMS:Encrypt para todas las claves adicionales del anillo de claves. AWS KMS

  • Para descifrar con un AWS KMS anillo de claves, necesita el permiso KMS:Decrypt en al menos una clave del anillo de claves. AWS KMS

  • Para cifrar con un conjunto de claves múltiples compuesto por AWS KMS anillos de claves, necesita el permiso kms: en la clave generadora del conjunto de claves del generador. GenerateDataKey Necesita el permiso kms:Encrypt en todas las demás claves de los demás conjuntos de claves AWS KMS .

Para obtener información detallada sobre los permisos AWS KMS keys, consulte Autenticación y control de acceso en la Guía para desarrolladores.AWS Key Management Service

Identificarse AWS KMS keys en un AWS KMS llavero

Un AWS KMS llavero puede incluir uno o más. AWS KMS keys Para especificar un elemento AWS KMS key en un conjunto de AWS KMS claves, utilice un identificador de AWS KMS clave compatible. Los identificadores clave que puede utilizar para identificar un elemento de un AWS KMS key conjunto de claves varían según la operación y la implementación del idioma. Para obtener más información sobre los identificadores clave de una AWS KMS key, consulte Identificadores clave en la Guía para desarrolladores de AWS Key Management Service .

Como práctica recomendada, utilice el identificador de clave más práctico que sea práctico para su tarea.

  • En un conjunto de claves de cifrado para SDK de cifrado de AWS para C, puede utilizar una clave ARN o un alias ARN para identificar las claves. KMS En todas las implementaciones de otros idiomas, puede utilizar un identificador de clave, una clave ARN, un alias o un alias ARN para cifrar los datos.

  • En un conjunto de claves de descifrado, debe utilizar una clave para identificarse. ARN AWS KMS keys Este requisito se aplica a todas las implementaciones de lenguaje del AWS Encryption SDK. Para obtener más información, consulte Seleccionar las claves de encapsulamiento.

  • En un anillo de claves utilizado para el cifrado y el descifrado, debe utilizar una clave para identificar. ARN AWS KMS keys Este requisito se aplica a todas las implementaciones de lenguaje del AWS Encryption SDK.

Si especifica un alias o un alias ARN para una KMS clave de un anillo de claves de cifrado, la operación de cifrado guarda la clave ARN actualmente asociada al alias en los metadatos de la clave de datos cifrada. No guarda el alias. Los cambios en el alias no afectan a la KMS clave utilizada para descifrar las claves de datos cifrados.

Crear un conjunto de AWS KMS claves para el cifrado

Puede configurar cada conjunto de AWS KMS claves con uno AWS KMS key o varios AWS KMS keys en la misma dirección o en una diferente Cuentas de AWS . Regiones de AWS AWS KMS keys Deben ser claves de cifrado simétricas (SYMMETRIC_DEFAULT). También puede utilizar una clave KMSmultirregional de cifrado simétrico. Como ocurre con todos los conjuntos de claves, puede utilizar uno o varios conjuntos de claves de AWS KMS en un conjunto de claves múltiple.

Al crear un conjunto de AWS KMS claves para cifrar datos, debe especificar una clave generadora, que es la que se utiliza para generar una AWS KMS key clave de datos en texto plano y cifrarla. La clave de datos no está relacionada matemáticamente con la clave. KMS A continuación, si lo desea, puede especificar otras AWS KMS keys que cifren la misma clave de datos en texto plano.

Para descifrar el mensaje cifrado protegido por este conjunto de claves, el conjunto de claves que utilice debe incluir al menos uno de los elementos AWS KMS keys definidos en el conjunto de claves, o no. AWS KMS keys(Un anillo de AWS KMS claves sin un número AWS KMS keys se conoce como anillo de claves de detección).AWS KMS

En las implementaciones AWS Encryption SDK lingüísticas distintas del SDK de cifrado de AWS para C, todas las claves de empaquetado de un anillo de claves de cifrado o de varios anillos de claves deben poder cifrar la clave de datos. Si alguna de las claves de encapsulamiento no se cifra, el método de cifrado falla. Como resultado, la persona que llama debe tener los permisos necesarios para todas las claves del conjunto de claves. Si utiliza un conjunto de claves de detección para cifrar los datos, solo o en un conjunto de claves múltiple, la operación de cifrado no se realizará correctamente. La excepción es la siguiente SDK de cifrado de AWS para C, en la que la operación de cifrado ignora un anillo de claves de detección estándar, pero falla si se especifica un anillo de claves de descubrimiento multirregional, solo o en un anillo de claves múltiples.

En los ejemplos siguientes se crea un conjunto de claves con una AWS KMS clave generadora y una clave adicional. En estos ejemplos se utiliza la clave ARNs para identificar las KMS claves. Esta es una práctica recomendada para AWS KMS los anillos de claves utilizados para el cifrado y un requisito para los AWS KMS anillos de claves utilizados para el descifrado. Para obtener más información, consulte Identificarse AWS KMS keys en un AWS KMS llavero.

C

Para identificar un elemento AWS KMS key en un conjunto de claves de cifrado SDK de cifrado de AWS para C, especifique una clave o un alias. ARN ARN En un anillo de claves de descifrado, debe usar una clave. ARN Para obtener más información, consulte Identificarse AWS KMS keys en un AWS KMS llavero.

Para obtener un ejemplo completo, consulte string.cpp.

const char * generator_key = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" const char * additional_key = "arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321" struct aws_cryptosdk_keyring *kms_encrypt_keyring = Aws::Cryptosdk::KmsKeyring::Builder().Build(generator_key,{additional_key});
C# / .NET

Para crear un conjunto de AWS KMS claves con una o varias AWS KMS claves en el formulario. AWS Encryption SDK NET, cree un llavero múltiple. El AWS Encryption SDK cuatro. NETincluye un llavero múltiple solo para AWS KMS llaves.

Al especificar una AWS KMS key para un conjunto de claves de cifrado en el formulario. AWS Encryption SDK NET, puede utilizar cualquier identificador de clave válido: un identificador de clave, una clave ARN, un nombre de alias o un alias ARN. Si necesita ayuda para AWS KMS keys identificarlo en un AWS KMS llavero, consulteIdentificarse AWS KMS keys en un AWS KMS llavero.

En el siguiente ejemplo se utiliza la versión 4. x del AWS Encryption SDK formulario. NETpara crear un AWS KMS llavero con una clave generadora y claves adicionales. Para ver un ejemplo completo, consulte AwsKmsMultiKeyringExample.cs.

// Instantiate the AWS Encryption SDK and material provider var mpl = new MaterialProviders(new MaterialProvidersConfig()); var esdk = new ESDK(new AwsEncryptionSdkConfig()); string generatorKey = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"; List<string> additionalKey = new List<string> { "alias/exampleAlias" }; // Instantiate the keyring input object var kmsEncryptKeyringInput = new CreateAwsKmsMultiKeyringInput { Generator = generatorKey, KmsKeyIds = additionalKey }; var kmsEncryptKeyring = materialProviders.CreateAwsKmsMultiKeyring(kmsEncryptKeyringInput);
JavaScript Browser

Al especificar un conjunto AWS KMS key de claves de cifrado en SDK de cifrado de AWS para JavaScript, puede utilizar cualquier identificador de clave válido: un identificador de clave, una clave ARN, un nombre de alias o un alias. ARN Si necesita ayuda para identificarlos AWS KMS keys en un conjunto de AWS KMS claves, consulte. Identificarse AWS KMS keys en un AWS KMS llavero

En el siguiente ejemplo, se utiliza la buildClient función para especificar la política de compromiso predeterminada,REQUIRE_ENCRYPT_REQUIRE_DECRYPT. También puede utilizarla buildClient para limitar el número de claves de datos cifradas en un mensaje cifrado. Para obtener más información, consulte Limitar las claves de datos cifrados.

Para ver un ejemplo completo, consulte kms_simple.ts en el repositorio de. SDK de cifrado de AWS para JavaScript GitHub

import { KmsKeyringNode, buildClient, CommitmentPolicy, } from '@aws-crypto/client-node' const { encrypt, decrypt } = buildClient( CommitmentPolicy.REQUIRE_ENCRYPT_REQUIRE_DECRYPT ) const clientProvider = getClient(KMS, { credentials }) const generatorKeyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' const additionalKey = 'alias/exampleAlias' const keyring = new KmsKeyringBrowser({ clientProvider, generatorKeyId, keyIds: [additionalKey] })
JavaScript Node.js

Al especificar un conjunto de claves AWS KMS key de cifrado en el SDK de cifrado de AWS para JavaScript, puede utilizar cualquier identificador de clave válido: un identificador de clave, una clave ARN, un nombre de alias o un alias. ARN Si necesita ayuda para identificarlos AWS KMS keys en un conjunto de AWS KMS claves, consulte. Identificarse AWS KMS keys en un AWS KMS llavero

En el siguiente ejemplo, se utiliza la buildClient función para especificar la política de compromiso predeterminada,REQUIRE_ENCRYPT_REQUIRE_DECRYPT. También puede utilizarla buildClient para limitar el número de claves de datos cifradas en un mensaje cifrado. Para obtener más información, consulte Limitar las claves de datos cifrados.

Para ver un ejemplo completo, consulte kms_simple.ts en el repositorio de. SDK de cifrado de AWS para JavaScript GitHub

import { KmsKeyringNode, buildClient, CommitmentPolicy, } from '@aws-crypto/client-node' const { encrypt, decrypt } = buildClient( CommitmentPolicy.REQUIRE_ENCRYPT_REQUIRE_DECRYPT ) const generatorKeyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' const additionalKey = 'alias/exampleAlias' const keyring = new KmsKeyringNode({ generatorKeyId, keyIds: [additionalKey] })
Java

Para crear un conjunto de AWS KMS claves con una o varias AWS KMS claves, cree un conjunto de claves múltiples. SDK de cifrado de AWS para Java SDK de cifrado de AWS para Java Incluye un llavero múltiple solo para llaves. AWS KMS

Al especificar un conjunto de claves AWS KMS key de cifrado en el SDK de cifrado de AWS para Java, puede utilizar cualquier identificador de clave válido: un identificador de clave, una clave ARN, un nombre de alias o un alias. ARN Si necesita ayuda para identificarlos AWS KMS keys en un conjunto de AWS KMS claves, consulte. Identificarse AWS KMS keys en un AWS KMS llavero

Para ver un ejemplo completo, consulte BasicEncryptionKeyringExample.java en el SDK de cifrado de AWS para Java repositorio de. GitHub

// Instantiate the AWS Encryption SDK and material providers final AwsCrypto crypto = AwsCrypto.builder().build(); final MaterialProviders materialProviders = MaterialProviders.builder() .MaterialProvidersConfig(MaterialProvidersConfig.builder().build()) .build(); String generatorKey = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"; List<String> additionalKey = Collections.singletonList("alias/exampleAlias"); // Create the AWS KMS keyring final CreateAwsKmsMultiKeyringInput keyringInput = CreateAwsKmsMultiKeyringInput.builder() .generator(generatorKey) .kmsKeyIds(additionalKey) .build(); final IKeyring kmsKeyring = matProv.CreateAwsKmsMultiKeyring(keyringInput);
Python

Para crear un conjunto de AWS KMS claves con una o varias AWS KMS claves SDK de cifrado de AWS para Python, cree un conjunto de claves múltiples. SDK de cifrado de AWS para Python Incluye un llavero múltiple solo para llaves. AWS KMS Para ver un ejemplo, consulte aws_kms_multi_keyring_example.py en el SDK de cifrado de AWS para Python repositorio de. GitHub

Al especificar un conjunto AWS KMS key de claves de cifrado en SDK de cifrado de AWS para Python, puede utilizar cualquier identificador de clave válido: un identificador de clave, una clave ARN, un nombre de alias o un alias ARN. Si necesita ayuda para identificarlos AWS KMS keys en un conjunto de AWS KMS claves, consulte. Identificarse AWS KMS keys en un AWS KMS llavero

En el siguiente ejemplo, se crea una instancia del AWS Encryption SDK cliente con la política de compromiso predeterminada,. REQUIRE_ENCRYPT_REQUIRE_DECRYPT Para ver un ejemplo completo, consulte aws_kms_keyring_example.py en el SDK de cifrado de AWS para Python repositorio de. GitHub

# Instantiate the AWS Encryption SDK client client = aws_encryption_sdk.EncryptionSDKClient( commitment_policy=CommitmentPolicy.REQUIRE_ENCRYPT_REQUIRE_DECRYPT ) # Create a boto3 client for AWS KMS kms_client = boto3.client('kms', region_name="us-west-2") # Optional: Create an encryption context encryption_context: Dict[str, str] = { "encryption": "context", "is not": "secret", "but adds": "useful metadata", "that can help you": "be confident that", "the data you are handling": "is what you think it is", } # Instantiate the material providers library mat_prov: AwsCryptographicMaterialProviders = AwsCryptographicMaterialProviders( config=MaterialProvidersConfig() ) # Create the AWS KMS keyring keyring_input: CreateAwsKmsKeyringInput = CreateAwsKmsKeyringInput( generator=arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab, kms_key_ids=additionalKey ) kms_keyring: IKeyring = mat_prov.create_aws_kms_keyring( input=keyring_input )

Crear un conjunto de AWS KMS claves para el descifrado

También se especifica un AWS KMS anillo de claves al descifrar el mensaje cifrado que devuelve. AWS Encryption SDK Si el conjunto de claves de descifrado lo especifica AWS KMS keys, AWS Encryption SDK utilizará únicamente esas claves de empaquetado para descifrar las claves de datos cifradas del mensaje cifrado. (También puede usar un anillo de claves de AWS KMS detección, que no especifica ninguno). AWS KMS keys

Al descifrar, AWS Encryption SDK busca en el conjunto de AWS KMS claves una AWS KMS key que pueda descifrar una de las claves de datos cifradas. En concreto, AWS Encryption SDK utiliza el siguiente patrón para cada clave de datos cifrados de un mensaje cifrado.

  • AWS Encryption SDK Obtiene ARN la clave AWS KMS key que cifró la clave de datos de los metadatos del mensaje cifrado.

  • AWS Encryption SDK Busca en el conjunto de claves de descifrado una AWS KMS key con una clave coincidente. ARN

  • Si encuentra una AWS KMS key con una clave coincidente ARN en el anillo de claves, AWS Encryption SDK solicita usar la clave AWS KMS para descifrar la KMS clave de datos cifrados.

  • De lo contrario, pasa a la siguiente clave de datos cifrada, si la hay.

AWS Encryption SDK Nunca intenta descifrar una clave de datos cifrada a menos que la clave de AWS KMS key esa clave ARN de datos cifrada esté incluida en el anillo de claves de descifrado. Si el conjunto de claves de descifrado no incluye ninguna ARNs de las claves AWS KMS keys que cifraron ninguna de las claves de datos, no se realizará la llamada de descifrado AWS Encryption SDK sin llamar nunca. AWS KMS

A partir de la versión 1.7. x, al descifrar una clave de datos cifrada, AWS Encryption SDK siempre pasa la clave ARN del AWS KMS key al KeyId parámetro de la operación de AWS KMS descifrado. La AWS KMS mejor práctica es identificar el AWS KMS key momento de descifrar la clave de datos cifrados con la clave de empaquetado que va a utilizar.

Una llamada de descifrado con un AWS KMS anillo de claves tiene éxito cuando al menos una AWS KMS key de las claves de descifrado puede descifrar una de las claves de datos cifradas del mensaje cifrado. Además, el intermediario debe tener un permiso kms:Decrypt sobre esa AWS KMS key. Este comportamiento le permite cifrar los datos AWS KMS keys en varias cuentas AND, pero proporciona un conjunto de claves de descifrado más limitado Regiones de AWS y adaptado a una cuenta, región, usuario, grupo o función en particular.

Al especificar una AWS KMS key en un conjunto de claves de descifrado, debe utilizar su clave. ARN De lo contrario, no AWS KMS key se reconoce. Si necesitas ayuda para encontrar la claveARN, consulta Cómo encontrar el identificador de clave y ARN en la Guía para AWS Key Management Service desarrolladores.

nota

Si reutiliza un conjunto de claves de cifrado para descifrarlo, asegúrese de que las personas que figuran AWS KMS keys en el conjunto de claves estén identificadas por su clave. ARNs

Por ejemplo, el siguiente conjunto de AWS KMS claves incluye solo la clave adicional que se utilizó en el conjunto de claves de cifrado. Sin embargo, en lugar de hacer referencia a la clave adicional por su aliasalias/exampleAlias, en el ejemplo se utiliza la clave de la clave adicional que requieren las ARN llamadas de descifrado.

Puede utilizar este conjunto de claves para descifrar un mensaje cifrado tanto con la clave generadora como con la clave adicional, siempre y cuando tenga permiso para usar la clave adicional para descifrar datos.

C
const char * additional_key = "arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321" struct aws_cryptosdk_keyring *kms_decrypt_keyring = Aws::Cryptosdk::KmsKeyring::Builder().Build(additional_key);
C# / .NET

Como este conjunto de claves de descifrado incluye solo una AWS KMS clave, en el ejemplo se utiliza el CreateAwsKmsKeyring() método con una instancia de su objeto. CreateAwsKmsKeyringInput Para crear un AWS KMS anillo de claves con una sola AWS KMS clave, puede utilizar un anillo de claves de una o varias teclas. Para obtener más información, consulte Cifrar datos en el formulario AWS Encryption SDK . NET. En el siguiente ejemplo se utiliza la versión 4. x del AWS Encryption SDK formulario. NETpara crear un conjunto de AWS KMS claves para el descifrado.

// Instantiate the AWS Encryption SDK and material providers var esdk = new ESDK(new AwsEncryptionSdkConfig()); var mpl = new MaterialProviders(new MaterialProvidersConfig()); string additionalKey = "arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321"; // Instantiate a KMS keyring for one AWS KMS key. var kmsDecryptKeyringInput = new CreateAwsKmsKeyringInput { KmsClient = new AmazonKeyManagementServiceClient(), KmsKeyId = additionalKey }; var kmsDecryptKeyring = materialProviders.CreateAwsKmsKeyring(kmsDecryptKeyringInput);
JavaScript Browser

En el siguiente ejemplo, se utiliza la buildClient función para especificar la política de compromiso predeterminada,. REQUIRE_ENCRYPT_REQUIRE_DECRYPT También puede utilizarla buildClient para limitar el número de claves de datos cifradas en un mensaje cifrado. Para obtener más información, consulte Limitar las claves de datos cifrados.

import { KmsKeyringNode, buildClient, CommitmentPolicy, } from '@aws-crypto/client-node' const { encrypt, decrypt } = buildClient( CommitmentPolicy.REQUIRE_ENCRYPT_REQUIRE_DECRYPT ) const clientProvider = getClient(KMS, { credentials }) const additionalKey = 'arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321' const keyring = new KmsKeyringBrowser({ clientProvider, keyIds: [additionalKey] })
JavaScript Node.js

En el siguiente ejemplo, se utiliza la buildClient función para especificar la política de compromiso predeterminada,REQUIRE_ENCRYPT_REQUIRE_DECRYPT. También puede utilizarla buildClient para limitar el número de claves de datos cifradas en un mensaje cifrado. Para obtener más información, consulte Limitar las claves de datos cifrados.

import { KmsKeyringNode, buildClient, CommitmentPolicy, } from '@aws-crypto/client-node' const { encrypt, decrypt } = buildClient( CommitmentPolicy.REQUIRE_ENCRYPT_REQUIRE_DECRYPT ) const additionalKey = 'arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321' const keyring = new KmsKeyringNode({ keyIds: [additionalKey] })
Java

Como este conjunto de claves de descifrado incluye solo una AWS KMS clave, en el ejemplo se utiliza el CreateAwsKmsKeyring() método con una instancia de su CreateAwsKmsKeyringInput objeto. Para crear un AWS KMS anillo de claves con una sola AWS KMS clave, puede utilizar un anillo de claves de una o varias teclas.

// Instantiate the AWS Encryption SDK and material providers final AwsCrypto crypto = AwsCrypto.builder().build(); final MaterialProviders materialProviders = MaterialProviders.builder() .MaterialProvidersConfig(MaterialProvidersConfig.builder().build()) .build(); String additionalKey = "arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321"; // Create a AwsKmsKeyring CreateAwsKmsKeyringInput kmsDecryptKeyringInput = CreateAwsKmsKeyringInput.builder() .generator(additionalKey) .kmsClient(KmsClient.create()) .build(); IKeyring kmsKeyring = materialProviders.CreateAwsKmsKeyring(kmsDecryptKeyringInput);
Python

En el siguiente ejemplo, se crea una instancia del AWS Encryption SDK cliente con la política de compromiso predeterminada,. REQUIRE_ENCRYPT_REQUIRE_DECRYPT Para ver un ejemplo completo, consulte aws_kms_keyring_example.py en el SDK de cifrado de AWS para Python repositorio de. GitHub

# Instantiate the AWS Encryption SDK client client = aws_encryption_sdk.EncryptionSDKClient( commitment_policy=CommitmentPolicy.REQUIRE_ENCRYPT_REQUIRE_DECRYPT ) # Create a boto3 client for AWS KMS kms_client = boto3.client('kms', region_name="us-west-2") # Instantiate the material providers mat_prov: AwsCryptographicMaterialProviders = AwsCryptographicMaterialProviders( config=MaterialProvidersConfig() ) # Create the AWS KMS keyring keyring_input: CreateAwsKmsKeyringInput = CreateAwsKmsKeyringInput( generator=additionalKey, kms_client=kms_client ) kms_keyring: IKeyring = mat_prov.create_aws_kms_keyring( input=keyring_input )

También puede utilizar un conjunto de AWS KMS claves que especifique una clave generadora para el descifrado, como la siguiente. Al descifrar, AWS Encryption SDK ignora la distinción entre claves generadoras y claves adicionales. Puede usar cualquiera de las especificadas AWS KMS keys para descifrar una clave de datos cifrada. La llamada a solo se AWS KMS realiza correctamente cuando la persona que llama tiene permiso para usarla para descifrar datos AWS KMS key .

C
struct aws_cryptosdk_keyring *kms_decrypt_keyring = Aws::Cryptosdk::KmsKeyring::Builder().Build(generator_key, {additional_key, other_key});
C# / .NET

En el siguiente ejemplo se utiliza la versión 4. x del AWS Encryption SDK formulario. NET.

// Instantiate the AWS Encryption SDK and material providers var esdk = new ESDK(new AwsEncryptionSdkConfig()); var mpl = new MaterialProviders(new MaterialProvidersConfig()); string generatorKey = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"; // Instantiate a KMS keyring for one AWS KMS key. var kmsDecryptKeyringInput = new CreateAwsKmsKeyringInput { KmsClient = new AmazonKeyManagementServiceClient(), KmsKeyId = generatorKey }; var kmsDecryptKeyring = materialProviders.CreateAwsKmsKeyring(kmsDecryptKeyringInput);
JavaScript Browser

En el siguiente ejemplo, se utiliza la buildClient función para especificar la política de compromiso predeterminada,REQUIRE_ENCRYPT_REQUIRE_DECRYPT. También puede utilizarla buildClient para limitar el número de claves de datos cifradas en un mensaje cifrado. Para obtener más información, consulte Limitar las claves de datos cifrados.

import { KmsKeyringNode, buildClient, CommitmentPolicy, } from '@aws-crypto/client-node' const { encrypt, decrypt } = buildClient( CommitmentPolicy.REQUIRE_ENCRYPT_REQUIRE_DECRYPT ) const clientProvider = getClient(KMS, { credentials }) const keyring = new KmsKeyringBrowser({ clientProvider, generatorKeyId, keyIds: [additionalKey, otherKey] })
JavaScript Node.js

En el siguiente ejemplo, se utiliza la buildClient función para especificar la política de compromiso predeterminada,REQUIRE_ENCRYPT_REQUIRE_DECRYPT. También puede utilizarla buildClient para limitar el número de claves de datos cifradas en un mensaje cifrado. Para obtener más información, consulte Limitar las claves de datos cifrados.

import { KmsKeyringNode, buildClient, CommitmentPolicy, } from '@aws-crypto/client-node' const { encrypt, decrypt } = buildClient( CommitmentPolicy.REQUIRE_ENCRYPT_REQUIRE_DECRYPT ) const keyring = new KmsKeyringNode({ generatorKeyId, keyIds: [additionalKey, otherKey] })
Java
// Instantiate the AWS Encryption SDK and material providers final AwsCrypto crypto = AwsCrypto.builder().build(); final MaterialProviders materialProviders = MaterialProviders.builder() .MaterialProvidersConfig(MaterialProvidersConfig.builder().build()) .build(); String generatorKey = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"; // Create a AwsKmsKeyring CreateAwsKmsKeyringInput kmsDecryptKeyringInput = CreateAwsKmsKeyringInput.builder() .generator(generatorKey) .kmsClient(KmsClient.create()) .build(); IKeyring kmsKeyring = materialProviders.CreateAwsKmsKeyring(kmsDecryptKeyringInput);
Python

En el siguiente ejemplo, se crea una instancia del AWS Encryption SDK cliente con la política de compromiso predeterminada,. REQUIRE_ENCRYPT_REQUIRE_DECRYPT Para ver un ejemplo completo, consulte aws_kms_keyring_example.py en el SDK de cifrado de AWS para Python repositorio de. GitHub

# Instantiate the AWS Encryption SDK client client = aws_encryption_sdk.EncryptionSDKClient( commitment_policy=CommitmentPolicy.REQUIRE_ENCRYPT_REQUIRE_DECRYPT ) # Create a boto3 client for AWS KMS kms_client = boto3.client('kms', region_name="us-west-2") # Instantiate the material providers library mat_prov: AwsCryptographicMaterialProviders = AwsCryptographicMaterialProviders( config=MaterialProvidersConfig() ) # Create the AWS KMS keyring keyring_input: CreateAwsKmsKeyringInput = CreateAwsKmsKeyringInput( generator=arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab, kms_client=kms_client ) kms_keyring: IKeyring = mat_prov.create_aws_kms_keyring( input=keyring_input )

A diferencia de un conjunto de claves de cifrado que utiliza todo lo especificado AWS KMS keys, puedes descifrar un mensaje cifrado con un conjunto de claves de descifrado que incluya AWS KMS keys elementos que no estén relacionados con el mensaje cifrado y AWS KMS keys que la persona que llama no tenga permiso para utilizarlos. Si una llamada de descifrado a AWS KMS devuelve un error, por ejemplo cuando el intermediario no dispone del permiso necesario, el AWS Encryption SDK pasa a la siguiente clave de datos cifrada.

Uso de un anillo de claves de detección AWS KMS

Al descifrar, se recomienda especificar las claves de empaquetado que AWS Encryption SDK pueden utilizar. Para seguir esta práctica recomendada, utilice un conjunto de claves de AWS KMS descifrado que limite las claves de AWS KMS empaquetado a las que especifique. Sin embargo, también puede crear un anillo de claves de AWS KMS detección, es decir, un anillo de AWS KMS claves que no especifique ninguna clave de empaquetado.

AWS Encryption SDK Incluye un conjunto de claves de AWS KMS detección estándar y un anillo de claves de detección para claves de varias regiones. AWS KMS Para obtener información sobre el uso de claves multirregionales con el, consulte. AWS Encryption SDKUso de varias regiones AWS KMS keys

Como no especifica ninguna clave de encapsulamiento, un conjunto de claves de detección no puede cifrar los datos. Si utiliza un conjunto de claves de detección para cifrar los datos, solo o en un conjunto de claves múltiple, la operación de cifrado no se realizará correctamente. La excepción es la SDK de cifrado de AWS para C, en la que la operación de cifrado ignora un conjunto de claves de detección estándar, pero no se produce si se especifica un conjunto de claves de detección multirregional, solo o en un anillo de claves múltiples.

Al descifrar, un anillo de claves de detección permite solicitar AWS KMS el AWS Encryption SDK descifrado de cualquier clave de datos cifrada utilizando la clave AWS KMS key que la cifró, independientemente de quién sea su propietario o tenga acceso a ella. AWS KMS key La llamada se realiza correctamente solo si el intermediario tiene permiso de kms:Decrypt sobre la AWS KMS key.

importante

Si incluye un anillo de claves de AWS KMS descubrimiento en un conjunto de claves múltiples de descifrado, el anillo de claves de descubrimiento anula todas las restricciones de claves especificadas por otros anillos de claves del conjunto de KMS claves múltiples. El conjunto de claves múltiples se comporta como el menos restrictivo. Un anillo de claves de AWS KMS detección no tiene ningún efecto sobre el cifrado cuando se utiliza solo o en un conjunto de claves múltiples.

AWS Encryption SDK Incluye un llavero de AWS KMS detección para mayor comodidad. No obstante, recomendamos que utilice un conjunto de claves más limitado siempre que sea posible por los siguientes motivos.

  • Autenticidad: un anillo de claves de AWS KMS detección puede utilizar cualquier clave AWS KMS key que se haya utilizado para cifrar una clave de datos del mensaje cifrado, con el fin de que la persona que llama tenga permiso para usarla para descifrarla. AWS KMS key Podría no ser la AWS KMS key que el intermediario quiere utilizar. Por ejemplo, es posible que una de las claves de datos cifradas se haya cifrado con una menos segura AWS KMS key que cualquiera pueda utilizar.

  • Latencia y rendimiento: un AWS KMS conjunto de claves de detección puede ser considerablemente más lento que otros, ya que AWS Encryption SDK intenta descifrar todas las claves de datos cifradas, incluidas las cifradas en otras regiones y AWS KMS keys en otras regiones, Cuentas de AWS y la persona AWS KMS keys que llama no tiene permiso para utilizarlas para descifrarlas.

Si utilizas un conjunto de claves de detección, te recomendamos que utilices un filtro de detección para limitar KMS las claves que se pueden usar a las de particiones Y especificadas. Cuentas de AWS Los filtros de detección son compatibles con las versiones 1.7.x y versiones posteriores del AWS Encryption SDK. Si necesitas ayuda para encontrar tu ID de cuenta y tu partición, consulta Tus Cuenta de AWS identificadores y tu ARNformato en. Referencia general de AWS

El siguiente código crea una instancia de un conjunto de claves de AWS KMS detección con un filtro de detección que limita KMS las claves que se AWS Encryption SDK pueden utilizar a las de la aws partición y de la cuenta de ejemplo 111122223333.

Antes de usar este código, reemplaza los valores del ejemplo Cuenta de AWS y de la partición por valores válidos para tu partición y. Cuenta de AWS Si tus KMS claves están en regiones de China, usa el valor de la aws-cn partición. Si tus KMS claves están dentro AWS GovCloud (US) Regions, usa el valor de la aws-us-gov partición. Para todos los demás Regiones de AWS, usa el valor de la aws partición.

C

Para ver un ejemplo completo, consulte: kms_discovery.cpp.

std::shared_ptr<KmsKeyring::> discovery_filter( KmsKeyring::DiscoveryFilter::Builder("aws") .AddAccount("111122223333") .Build()); struct aws_cryptosdk_keyring *kms_discovery_keyring = Aws::Cryptosdk::KmsKeyring::Builder() .BuildDiscovery(discovery_filter));
C# / .NET

En el siguiente ejemplo se utiliza la versión 4. x del AWS Encryption SDK formulario. NET.

// Instantiate the AWS Encryption SDK and material providers var esdk = new ESDK(new AwsEncryptionSdkConfig()); var mpl = new MaterialProviders(new MaterialProvidersConfig()); List<string> account = new List<string> { "111122223333" }; // In a discovery keyring, you specify an AWS KMS client and a discovery filter, // but not a AWS KMS key var kmsDiscoveryKeyringInput = new CreateAwsKmsDiscoveryKeyringInput { KmsClient = new AmazonKeyManagementServiceClient(), DiscoveryFilter = new DiscoveryFilter() { AccountIds = account, Partition = "aws" } }; var kmsDiscoveryKeyring = materialProviders.CreateAwsKmsDiscoveryKeyring(kmsDiscoveryKeyringInput);
JavaScript Browser

En JavaScript, debe especificar de forma explícita la propiedad de detección.

En el siguiente ejemplo, se utiliza la buildClient función para especificar la política de compromiso predeterminada,REQUIRE_ENCRYPT_REQUIRE_DECRYPT. También puede utilizarla buildClient para limitar el número de claves de datos cifradas en un mensaje cifrado. Para obtener más información, consulte Limitar las claves de datos cifrados.

import { KmsKeyringNode, buildClient, CommitmentPolicy, } from '@aws-crypto/client-node' const { encrypt, decrypt } = buildClient( CommitmentPolicy.REQUIRE_ENCRYPT_REQUIRE_DECRYPT ) const clientProvider = getClient(KMS, { credentials }) const discovery = true const keyring = new KmsKeyringBrowser(clientProvider, { discovery, discoveryFilter: { accountIDs: [111122223333], partition: 'aws' } })
JavaScript Node.js

En JavaScript, debe especificar de forma explícita la propiedad de detección.

En el siguiente ejemplo, se utiliza la buildClient función para especificar la política de compromiso predeterminada,REQUIRE_ENCRYPT_REQUIRE_DECRYPT. También puede utilizarla buildClient para limitar el número de claves de datos cifradas en un mensaje cifrado. Para obtener más información, consulte Limitar las claves de datos cifrados.

import { KmsKeyringNode, buildClient, CommitmentPolicy, } from '@aws-crypto/client-node' const { encrypt, decrypt } = buildClient( CommitmentPolicy.REQUIRE_ENCRYPT_REQUIRE_DECRYPT ) const discovery = true const keyring = new KmsKeyringNode({ discovery, discoveryFilter: { accountIDs: ['111122223333'], partition: 'aws' } })
Java
// Create discovery filter DiscoveryFilter discoveryFilter = DiscoveryFilter.builder() .partition("aws") .accountIds(111122223333) .build(); // Create the discovery keyring CreateAwsKmsMrkDiscoveryMultiKeyringInput createAwsKmsMrkDiscoveryMultiKeyringInput = CreateAwsKmsMrkDiscoveryMultiKeyringInput.builder() .discoveryFilter(discoveryFilter) .build(); IKeyring decryptKeyring = matProv.CreateAwsKmsMrkDiscoveryMultiKeyring(createAwsKmsMrkDiscoveryMultiKeyringInput);
Python
# Instantiate the AWS Encryption SDK client = aws_encryption_sdk.EncryptionSDKClient( commitment_policy=CommitmentPolicy.REQUIRE_ENCRYPT_REQUIRE_DECRYPT ) # Create a boto3 client for AWS KMS kms_client = boto3.client('kms', region_name=aws_region) # Optional: Create an encryption context encryption_context: Dict[str, str] = { "encryption": "context", "is not": "secret", "but adds": "useful metadata", "that can help you": "be confident that", "the data you are handling": "is what you think it is", } # Instantiate the material providers mat_prov: AwsCryptographicMaterialProviders = AwsCryptographicMaterialProviders( config=MaterialProvidersConfig() ) # Create the AWS KMS discovery keyring discovery_keyring_input: CreateAwsKmsDiscoveryKeyringInput = CreateAwsKmsDiscoveryKeyringInput( kms_client=kms_client, discovery_filter=DiscoveryFilter( account_ids=[aws_account_id], partition="aws" ) ) discovery_keyring: IKeyring = mat_prov.create_aws_kms_discovery_keyring( input=discovery_keyring_input )

Uso de un anillo de claves de detección AWS KMS regional

Un conjunto de claves de descubrimiento AWS KMS regional es un conjunto de claves que no especifica el ARNs número de claves. KMS En cambio, AWS Encryption SDK permite descifrar utilizando solo las KMS claves en particular. Regiones de AWS

Al descifrar con un anillo de claves de detección AWS KMS regional, AWS Encryption SDK descifra cualquier clave de datos cifrada que se haya cifrado con una AWS KMS key de las especificadas. Región de AWS Para tener éxito, la persona que llama debe tener kms:Decrypt permiso en al menos una de las especificadas Región de AWS que AWS KMS keys cifraron una clave de datos.

Al igual que otros conjuntos de claves de detección, el conjunto de claves de detección regional no tiene ningún efecto sobre el cifrado. Solo funciona cuando se descifran mensajes cifrados. Si utiliza un conjunto de claves de detección regional en un conjunto de claves múltiples que se utiliza para cifrar y descifrar, solo es efectivo al descifrar. Si utiliza un conjunto de claves de detección multirregional para cifrar los datos, solo o en un conjunto de claves múltiples, la operación de cifrado no se realizará correctamente.

importante

Si incluye un conjunto de claves de detección AWS KMS regional en un conjunto de claves de descifrado múltiple, el conjunto de claves de descubrimiento regional anula todas las restricciones de clave especificadas por los demás conjuntos de claves del conjunto de KMS claves múltiples. El conjunto de claves múltiples se comporta como el menos restrictivo. Un anillo de claves de AWS KMS detección no tiene ningún efecto sobre el cifrado cuando se utiliza solo o en un conjunto de claves múltiples.

El conjunto de claves de detección regional SDK de cifrado de AWS para C intenta descifrar únicamente con KMS claves de la región especificada. Cuando se utiliza un anillo de claves de detección en y para. SDK de cifrado de AWS para JavaScript AWS Encryption SDK NET, usted configura la región en el AWS KMS cliente. Estas AWS Encryption SDK implementaciones no filtran KMS las claves por región, pero AWS KMS rechazarán una solicitud de descifrado de KMS claves fuera de la región especificada.

Si utiliza un conjunto de claves de detección, le recomendamos que utilice un filtro de detección para limitar KMS las claves utilizadas en el descifrado a las de las particiones AND especificadas. Cuentas de AWS Los filtros de detección son compatibles con las versiones 1.7.x y versiones posteriores del AWS Encryption SDK.

Por ejemplo, el código siguiente crea un conjunto de claves de detección AWS KMS regional con un filtro de detección. Este conjunto de claves limita las dos AWS Encryption SDK KMS claves de la cuenta 111122223333 en la región EE.UU. Oeste (Oregón) (us-west-2).

C

Para ver este conjunto de claves y el método create_kms_client, en un ejemplo práctico, consulte kms_discovery.cpp.

std::shared_ptr<KmsKeyring::DiscoveryFilter> discovery_filter( KmsKeyring::DiscoveryFilter::Builder("aws") .AddAccount("111122223333") .Build()); struct aws_cryptosdk_keyring *kms_regional_keyring = Aws::Cryptosdk::KmsKeyring::Builder() .WithKmsClient(create_kms_client(Aws::Region::US_WEST_2)).BuildDiscovery(discovery_filter));
C# / .NET

AWS Encryption SDK El para. NETno tiene un llavero dedicado a los descubrimientos regionales. Sin embargo, puede utilizar varias técnicas para limitar las KMS claves utilizadas al descifrar a una región determinada.

La forma más eficaz de limitar las regiones de un conjunto de claves de descubrimiento es utilizar un conjunto de claves de multi-Region-aware descubrimiento, incluso si se han cifrado los datos con claves de una sola región. Cuando encuentra claves de una sola región, el multi-Region-aware llavero no utiliza ninguna función multirregional.

El conjunto de claves devuelto por el CreateAwsKmsMrkDiscoveryKeyring() método filtra las KMS claves por región antes de realizar la llamada. AWS KMS Envía una solicitud de descifrado AWS KMS solo cuando la clave de datos cifrada fue cifrada por una KMS clave de la región especificada por el Region parámetro del objeto. CreateAwsKmsMrkDiscoveryKeyringInput

En los ejemplos siguientes se utiliza la versión 4. x del AWS Encryption SDK formulario. NET.

// Instantiate the AWS Encryption SDK and material providers var esdk = new ESDK(new AwsEncryptionSdkConfig()); var mpl = new MaterialProviders(new MaterialProvidersConfig()); List<string> account = new List<string> { "111122223333" }; // Create the discovery filter var filter = DiscoveryFilter = new DiscoveryFilter { AccountIds = account, Partition = "aws" }; var regionalDiscoveryKeyringInput = new CreateAwsKmsMrkDiscoveryKeyringInput { KmsClient = new AmazonKeyManagementServiceClient(RegionEndpoint.USWest2), Region = RegionEndpoint.USWest2, DiscoveryFilter = filter }; var kmsRegionalDiscoveryKeyring = materialProviders.CreateAwsKmsMrkDiscoveryKeyring(regionalDiscoveryKeyringInput);

También puede limitar KMS las claves a una determinada región Región de AWS especificando una región en su instancia del AWS KMS cliente (AmazonKeyManagementServiceClient). Sin embargo, esta configuración es menos eficiente y potencialmente más costosa que el uso de un conjunto de claves de multi-Region-aware detección. En lugar de filtrar KMS las claves por región antes de llamar AWS KMS, utilice el comando AWS Encryption SDK for. NET AWS KMS solicita cada clave de datos cifrada (hasta que descifra una) y se basa en ella AWS KMS para limitar las KMS claves que utiliza a la región especificada.

En el siguiente ejemplo, se utiliza la versión 4. x del AWS Encryption SDK formulario. NET.

// Instantiate the AWS Encryption SDK and material providers var esdk = new ESDK(new AwsEncryptionSdkConfig()); var mpl = new MaterialProviders(new MaterialProvidersConfig()); List<string> account = new List<string> { "111122223333" }; // Create the discovery filter, // but not a AWS KMS key var createRegionalDiscoveryKeyringInput = new CreateAwsKmsDiscoveryKeyringInput { KmsClient = new AmazonKeyManagementServiceClient(RegionEndpoint.USWest2), DiscoveryFilter = new DiscoveryFilter() { AccountIds = account, Partition = "aws" } }; var kmsRegionalDiscoveryKeyring = materialProviders.CreateAwsKmsDiscoveryKeyring(createRegionalDiscoveryKeyringInput);
JavaScript Browser

En el siguiente ejemplo, se utiliza la buildClient función para especificar la política de compromiso predeterminada,REQUIRE_ENCRYPT_REQUIRE_DECRYPT. También puede utilizarla buildClient para limitar el número de claves de datos cifradas en un mensaje cifrado. Para obtener más información, consulte Limitar las claves de datos cifrados.

import { KmsKeyringNode, buildClient, CommitmentPolicy, } from '@aws-crypto/client-node' const { encrypt, decrypt } = buildClient( CommitmentPolicy.REQUIRE_ENCRYPT_REQUIRE_DECRYPT ) const clientProvider = getClient(KMS, { credentials }) const discovery = true const clientProvider = limitRegions(['us-west-2'], getKmsClient) const keyring = new KmsKeyringBrowser(clientProvider, { discovery, discoveryFilter: { accountIDs: ['111122223333'], partition: 'aws' } })
JavaScript Node.js

En el siguiente ejemplo, se utiliza la buildClient función para especificar la política de compromiso predeterminada,REQUIRE_ENCRYPT_REQUIRE_DECRYPT. También puede utilizarla buildClient para limitar el número de claves de datos cifradas en un mensaje cifrado. Para obtener más información, consulte Limitar las claves de datos cifrados.

Para ver este conjunto de claves y la limitRegions función en un ejemplo práctico, consulte kms_regional_discovery.ts.

import { KmsKeyringNode, buildClient, CommitmentPolicy, } from '@aws-crypto/client-node' const { encrypt, decrypt } = buildClient( CommitmentPolicy.REQUIRE_ENCRYPT_REQUIRE_DECRYPT ) const discovery = true const clientProvider = limitRegions(['us-west-2'], getKmsClient) const keyring = new KmsKeyringNode({ clientProvider, discovery, discoveryFilter: { accountIDs: ['111122223333'], partition: 'aws' } })
Java
// Create the discovery filter DiscoveryFilter discoveryFilter = DiscoveryFilter.builder() .partition("aws") .accountIds(111122223333) .build(); // Create the discovery keyring CreateAwsKmsMrkDiscoveryMultiKeyringInput createAwsKmsMrkDiscoveryMultiKeyringInput = CreateAwsKmsMrkDiscoveryMultiKeyringInput.builder() .discoveryFilter(discoveryFilter) .regions("us-west-2") .build(); IKeyring decryptKeyring = matProv.CreateAwsKmsMrkDiscoveryMultiKeyring(createAwsKmsMrkDiscoveryMultiKeyringInput);
Python
# Instantiate the AWS Encryption SDK client = aws_encryption_sdk.EncryptionSDKClient( commitment_policy=CommitmentPolicy.REQUIRE_ENCRYPT_REQUIRE_DECRYPT ) # Create a boto3 client for AWS KMS kms_client = boto3.client('kms', region_name=aws_region) # Optional: Create an encryption context encryption_context: Dict[str, str] = { "encryption": "context", "is not": "secret", "but adds": "useful metadata", "that can help you": "be confident that", "the data you are handling": "is what you think it is", } # Instantiate the material providers mat_prov: AwsCryptographicMaterialProviders = AwsCryptographicMaterialProviders( config=MaterialProvidersConfig() ) # Create the AWS KMS regional discovery keyring regional_discovery_keyring_input: CreateAwsKmsMrkDiscoveryKeyringInput = \ CreateAwsKmsMrkDiscoveryKeyringInput( kms_client=kms_client, region=mrk_replica_decrypt_region, discovery_filter=DiscoveryFilter( account_ids=[111122223333], partition="aws" ) ) regional_discovery_keyring: IKeyring = mat_prov.create_aws_kms_mrk_discovery_keyring( input=regional_discovery_keyring_input )

SDK de cifrado de AWS para JavaScript También exporta una función para Node.js y el navegador. excludeRegions Esta función crea un conjunto de claves de detección AWS KMS regional que omite determinadas AWS KMS keys regiones. En el siguiente ejemplo, se crea un conjunto de claves de detección AWS KMS regional que se puede usar AWS KMS keys en la cuenta 111122223333 en todos los países Región de AWS excepto en EE. UU. Este (Virginia del Norte) (us-east-1).

No SDK de cifrado de AWS para C tiene un método análogo, pero puede implementarlo creando uno personalizado. ClientSupplier

Este ejemplo muestra el código de Node.js.

const discovery = true const clientProvider = excludeRegions(['us-east-1'], getKmsClient) const keyring = new KmsKeyringNode({ clientProvider, discovery, discoveryFilter: { accountIDs: [111122223333], partition: 'aws' } })