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 .
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.
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.
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.
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
' }
})