Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
AWS KMS portachiavi
Un AWS KMS portachiavi utilizza la crittografia simmetrica AWS KMS keysper generare, crittografare e decrittografare le chiavi di dati. AWS Key Management Service
(AWS KMS) protegge le KMS chiavi ed esegue operazioni crittografiche entro i limiti. FIPS Ti consigliamo di utilizzare un AWS KMS portachiavi o un portachiavi con proprietà di sicurezza simili, quando possibile.
È possibile utilizzare una chiave AWS KMS multiregionale in un portachiavi o in un provider di AWS KMS chiavi master a partire dalla versione 2.3. x della AWS Encryption SDK e versione 3.0. x della AWS crittografiaCLI. Per dettagli ed esempi di utilizzo del nuovo multi-Region-aware simbolo, vedereUtilizzo di più regioni AWS KMS keys. Per informazioni sulle chiavi multiregionali, consulta Uso delle chiavi multiregionali nella Guida per gli AWS Key Management Service sviluppatori.
Versione 4. x del AWS Encryption SDK modulo. NETe versione 3. x di queste SDK di crittografia AWS per Java sono le uniche implementazioni del linguaggio di programmazione che supportano i AWS KMS portachiavi che utilizzano l'asimmetria. RSA AWS KMS keys
Se si tenta di includere una chiave asimmetrica in un KMS portachiavi di crittografia in qualsiasi altra implementazione linguistica, la chiamata encrypt ha esito negativo. Se la includi in un portachiavi di decrittografia, viene ignorata.
Tutte le menzioni relative ai portachiavi nel riquadro si riferiscono ai KMSportachiavi. AWS Encryption SDK AWS KMS
AWS KMS i portachiavi possono includere due tipi di chiavi avvolgenti:
-
Chiave generatrice: genera una chiave di dati in testo semplice e la crittografa. Un portachiavi che crittografa i dati deve avere una chiave generatrice.
-
Chiavi aggiuntive: crittografa la chiave di dati in testo semplice generata dalla chiave del generatore. AWS KMS I portachiavi possono avere zero o più chiavi aggiuntive.
Durante la crittografia, il AWS KMS portachiavi utilizzato deve avere una chiave generatrice. Durante la decrittografia, la chiave del generatore è facoltativa e la distinzione tra le chiavi dei generatori e le chiavi aggiuntive viene ignorata.
Quando un portachiavi di AWS KMS crittografia ha una sola AWS KMS chiave, tale chiave viene utilizzata per generare e crittografare la chiave dati.
Come tutti i portachiavi, i AWS KMS portachiavi possono essere utilizzati indipendentemente o in un portachiavi multiplo con altri portachiavi dello stesso tipo o di un tipo diverso.
AWS KMS Autorizzazioni richieste per i portachiavi
AWS Encryption SDK Non richiede un Account AWS e non dipende da nessuno. Servizio AWS Tuttavia, per utilizzare un AWS KMS portachiavi, sono necessarie le seguenti autorizzazioni Account AWS minime sul AWS KMS keys portachiavi.
Per informazioni dettagliate sulle autorizzazioni per AWS KMS keys, consulta Autenticazione e controllo degli accessi nella Guida per gli sviluppatori.AWS Key Management Service
Identificazione AWS KMS keys in un portachiavi AWS KMS
Un AWS KMS portachiavi può includerne uno o più. AWS KMS keys Per specificare un elemento AWS KMS key in un AWS KMS portachiavi, utilizzate un identificatore di AWS KMS chiave supportato. Gli identificatori di chiave che è possibile utilizzare per identificare un elemento AWS KMS key in un portachiavi variano a seconda dell'operazione e dell'implementazione del linguaggio. Per informazioni dettagliate sugli identificatori chiave di an AWS KMS key, consulta Key Identifiers nella Developer Guide.AWS Key Management Service
Come procedura consigliata, utilizzate l'identificatore di chiave più specifico e pratico per la vostra attività.
Se si specifica un nome alias o un alias ARN per una KMS chiave in un portachiavi di crittografia, l'operazione di crittografia salva la chiave ARN attualmente associata all'alias nei metadati della chiave di dati crittografata. Non salva l'alias. Le modifiche all'alias non influiscono sulla KMS chiave utilizzata per decrittografare le chiavi di dati crittografate.
Creazione di un portachiavi per AWS KMS la crittografia
È possibile configurare ogni AWS KMS portachiavi con uno AWS KMS key o più portachiavi nello stesso e AWS KMS keys in modo diverso Account AWS . Regioni AWS AWS KMS keys Devono essere chiavi di crittografia simmetriche (_)SYMMETRIC. DEFAULT È inoltre possibile utilizzare una chiave multiregionale con crittografia simmetrica. KMS Come con tutti i portachiavi, puoi utilizzare uno o più portachiavi in un AWS KMS portachiavi multiplo.
Quando si crea un AWS KMS portachiavi per crittografare i dati, è necessario specificare una chiave generatrice, AWS KMS key che viene utilizzata per generare una chiave di dati in testo semplice e crittografarla. La chiave dati non è matematicamente correlata alla chiave. KMS Quindi, se lo desideri, puoi specificarne altre AWS KMS keys che crittografano la stessa chiave di dati in testo normale.
Per decrittografare il messaggio crittografato protetto da questo portachiavi, il portachiavi utilizzato deve includere almeno uno dei messaggi AWS KMS keys definiti nel portachiavi, altrimenti no. AWS KMS keys(Un AWS KMS portachiavi con no AWS KMS keys è noto come portachiavi Discovery.)AWS KMS
Nelle implementazioni AWS Encryption SDK linguistiche diverse dalla SDK di crittografia AWS per C, tutte le chiavi di inserimento in un portachiavi di crittografia o in un portachiavi multiplo devono essere in grado di crittografare la chiave dati. Se una chiave di wrapping non riesce a crittografare, il metodo encrypt fallisce. Di conseguenza, il chiamante deve disporre delle autorizzazioni necessarie per tutte le chiavi del portachiavi. Se si utilizza un portachiavi Discovery per crittografare i dati, da solo o in un portachiavi multiplo, l'operazione di crittografia non riesce. L'eccezione è l'operazione di crittografia SDK di crittografia AWS per C, in cui l'operazione di crittografia ignora un portachiavi di rilevamento standard, ma ha esito negativo se si specifica un portachiavi di rilevamento multiregionale, da solo o in un portachiavi multiplo.
Gli esempi seguenti creano un AWS KMS portachiavi con una chiave generatrice e una chiave aggiuntiva. Questi esempi utilizzano la chiave ARNs per identificare le KMS chiavi. Si tratta di una procedura consigliata per i AWS KMS portachiavi utilizzati per la crittografia e un requisito per i AWS KMS portachiavi utilizzati per la decrittografia. Per informazioni dettagliate, consultare Identificazione AWS KMS keys in un portachiavi AWS KMS.
- C
Per identificare un portachiavi crittografato AWS KMS key in SDK di crittografia AWS per C, specificate una chiave o un alias. ARN ARN In un portachiavi di decrittografia, è necessario utilizzare una chiave. ARN Per informazioni dettagliate, consultare Identificazione AWS KMS keys in un portachiavi AWS KMS.
Per un esempio completo, vedi 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
-
Per creare un AWS KMS portachiavi con una o più AWS KMS chiavi in forma. AWS Encryption SDK NET, crea un portachiavi multiplo. La AWS Encryption SDK per. NETinclude un portachiavi multiplo solo per le AWS KMS chiavi.
Quando si specifica un portachiavi AWS KMS key di crittografia nel modulo. AWS Encryption SDK NET, è possibile utilizzare qualsiasi identificatore di chiave valido: un ID di chiave, una chiave ARN, un nome alias o un alias. ARN Per informazioni su come identificarlo AWS KMS keys in un AWS KMS portachiavi, consulta. Identificazione AWS KMS keys in un portachiavi AWS KMS
L'esempio seguente utilizza la versione 4. x del AWS Encryption SDK modulo. NETper creare un AWS KMS portachiavi con una chiave generatrice e chiavi aggiuntive. Per un esempio completo, vedi 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
Quando si specifica un elemento AWS KMS key per un portachiavi di crittografia in SDK di crittografia AWS per JavaScript, è possibile utilizzare qualsiasi identificatore di chiave valido: un ID di chiave, una chiave ARN, un nome alias o un alias. ARN Per informazioni sull'identificazione di un portachiavi, AWS KMS keys consulta AWS KMS . Identificazione AWS KMS keys in un portachiavi AWS KMS
L'esempio seguente utilizza la buildClient
funzione per specificare la politica di impegno predefinita,REQUIRE_ENCRYPT_REQUIRE_DECRYPT
. È inoltre possibile utilizzare il buildClient
per limitare il numero di chiavi di dati crittografate in un messaggio crittografato. Per ulteriori informazioni, consulta Limitazione delle chiavi di dati crittografate.
Per un esempio completo, vedi kms_simple.ts nel repository in. SDK di crittografia AWS per 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
Quando si specifica un AWS KMS key per un portachiavi di crittografia in SDK di crittografia AWS per JavaScript, è possibile utilizzare qualsiasi identificatore di chiave valido: un ID di chiave, una chiave, un nome alias o un alias. ARN ARN Per informazioni sull'identificazione di un portachiavi, AWS KMS keys consulta AWS KMS . Identificazione AWS KMS keys in un portachiavi AWS KMS
L'esempio seguente utilizza la buildClient
funzione per specificare la politica di impegno predefinita,REQUIRE_ENCRYPT_REQUIRE_DECRYPT
. È inoltre possibile utilizzare il buildClient
per limitare il numero di chiavi di dati crittografate in un messaggio crittografato. Per ulteriori informazioni, consulta Limitazione delle chiavi di dati crittografate.
Per un esempio completo, vedi kms_simple.ts nel repository in. SDK di crittografia AWS per 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
-
Per creare un AWS KMS portachiavi con una o più chiavi in, crea un AWS KMS portachiavi multiplo. SDK di crittografia AWS per Java SDK di crittografia AWS per Java
Include un portachiavi multiplo solo per le chiavi. AWS KMS
Quando si specifica un portachiavi AWS KMS key di crittografia in SDK di crittografia AWS per Java, è possibile utilizzare qualsiasi identificatore di chiave valido: un ID di chiave, una chiave ARN, un nome alias o un alias. ARN Per informazioni sull'identificazione di un portachiavi, AWS KMS keys consulta AWS KMS . Identificazione AWS KMS keys in un portachiavi AWS KMS
Per un esempio completo, consulta BasicEncryptionKeyringExample.java nel SDK di crittografia AWS per Java repository in. 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
-
Per creare un AWS KMS portachiavi con una o più AWS KMS chiavi SDK di crittografia AWS per Python, create un portachiavi multiplo. SDK di crittografia AWS per Python Include un portachiavi multiplo solo per le chiavi. AWS KMS Per un esempio, vedete aws_kms_multi_keyring_example.py nel SDK di crittografia AWS per Python
repository in. GitHub
Quando si specifica un AWS KMS key per un portachiavi di crittografia in SDK di crittografia AWS per Python, è possibile utilizzare qualsiasi identificatore di chiave valido: un ID di chiave, una chiave ARN, un nome alias o un alias. ARN Per informazioni sull'identificazione di un portachiavi, AWS KMS keys consulta AWS KMS . Identificazione AWS KMS keys in un portachiavi AWS KMS
L'esempio seguente crea un'istanza del AWS Encryption SDK client con la politica di impegno predefinita,. REQUIRE_ENCRYPT_REQUIRE_DECRYPT
Per un esempio completo, vedere aws_kms_keyring_example.py nel SDK di crittografia AWS per Python
repository in. 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
)
Creazione di un AWS KMS portachiavi per la decrittografia
È inoltre necessario specificare un AWS KMS portachiavi quando si decrittografa il messaggio crittografato che restituisce. AWS Encryption SDK Se il portachiavi di decrittografia lo specifica AWS KMS keys, AWS Encryption SDK utilizzerà solo quelle chiavi di avvolgimento per decrittografare le chiavi di dati crittografate nel messaggio crittografato. (Puoi anche usare un portachiavi AWS KMS Discovery, che non ne specifica alcuna.) AWS KMS keys
Durante la decrittografia, AWS Encryption SDK cerca nel AWS KMS portachiavi un oggetto in grado di decrittografare una AWS KMS key delle chiavi di dati crittografate. In particolare, AWS Encryption SDK utilizza lo schema seguente per ogni chiave di dati crittografata in un messaggio crittografato.
-
AWS Encryption SDK Ottiene la chiave ARN di chi AWS KMS key ha crittografato la chiave dati dai metadati del messaggio crittografato.
-
AWS Encryption SDK Cerca nel portachiavi di decrittografia una con una AWS KMS key
chiave corrispondente. ARN
-
Se ne trova uno AWS KMS key con una chiave corrispondente ARN nel portachiavi, AWS Encryption SDK chiede di utilizzare la chiave per AWS KMS decrittografare la KMS chiave dati crittografata.
-
In caso contrario, passa alla chiave di dati crittografata successiva, se presente.
AWS Encryption SDK Non tenta mai di decrittografare una chiave dati crittografata a meno che la chiave ARN di AWS KMS key quella chiave crittografata non sia inclusa nel portachiavi di decrittografia. Se il portachiavi di decrittografia non include nessuna delle chiavi dati AWS KMS keys che hanno crittografato alcuna ARNs delle chiavi di dati, la chiamata di decrittografia fallisce senza mai chiamare. AWS Encryption SDK AWS KMS
A partire dalla versione 1.7. x, quando si decrittografa una chiave dati crittografata, passa AWS Encryption SDK sempre la chiave ARN del AWS KMS key al KeyId
parametro dell'operazione AWS KMS Decrypt. Identificare il AWS KMS key momento della decrittografia è una procedura AWS KMS consigliata che garantisce la decrittografia della chiave dati crittografata con la chiave di wrapping che si intende utilizzare.
Una chiamata di decrittografia con un AWS KMS portachiavi ha esito positivo quando almeno uno dei componenti del portachiavi di decrittografia è AWS KMS key
in grado di decrittografare una delle chiavi di dati crittografate nel messaggio crittografato. Inoltre, l'intermediario deve avere l'autorizzazione kms:Decrypt
per la AWS KMS key. Questo comportamento consente di crittografare i dati relativi a più account Regioni AWS e AWS KMS keys in diversi account, ma fornisce un portachiavi di decrittografia più limitato e personalizzato per un particolare account, regione, utente, gruppo o ruolo.
Quando si specifica un portachiavi AWS KMS key in un portachiavi di decrittografia, è necessario utilizzarne la chiave. ARN Altrimenti, non AWS KMS key viene riconosciuto. Per informazioni su come trovare la chiaveARN, consulta Finding the Key ID e ARN nella AWS Key Management Service Developer Guide.
Se riutilizzi un portachiavi di crittografia per la decrittografia, assicurati che le persone che lo compongono siano AWS KMS keys identificate dalla loro chiave. ARNs
Ad esempio, il seguente AWS KMS portachiavi include solo la chiave aggiuntiva utilizzata nel portachiavi di crittografia. Tuttavia, invece di fare riferimento alla chiave aggiuntiva tramite il relativo aliasalias/exampleAlias
, l'esempio utilizza la chiave della chiave aggiuntiva ARN come richiesto dalle chiamate di decrittografia.
Puoi utilizzare questo keyring per decrittare un messaggio crittografato sia con la chiave generatore che con la chiave aggiuntiva, a condizione che hai l'autorizzazione per utilizzare la chiave aggiuntiva per decrittare i dati.
- 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
-
Poiché questo portachiavi di decrittografia include solo una AWS KMS chiave, nell'esempio viene utilizzato il CreateAwsKmsKeyring()
metodo con un'istanza del relativo oggetto. CreateAwsKmsKeyringInput
Per creare un AWS KMS portachiavi con una sola AWS KMS chiave, è possibile utilizzare un portachiavi a chiave singola o multipla. Per informazioni dettagliate, consultare Crittografia dei dati nel modulo. AWS Encryption SDK NET. L'esempio seguente utilizza la versione 4. x del AWS Encryption SDK modulo. NETper creare un AWS KMS portachiavi per la decrittografia.
// 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
-
L'esempio seguente utilizza la buildClient
funzione per specificare la politica di impegno predefinita,. REQUIRE_ENCRYPT_REQUIRE_DECRYPT
È inoltre possibile utilizzare il buildClient
per limitare il numero di chiavi di dati crittografate in un messaggio crittografato. Per ulteriori informazioni, consulta Limitazione delle chiavi di dati crittografate.
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
-
L'esempio seguente utilizza la buildClient
funzione per specificare la politica di impegno predefinita,REQUIRE_ENCRYPT_REQUIRE_DECRYPT
. È inoltre possibile utilizzare il buildClient
per limitare il numero di chiavi di dati crittografate in un messaggio crittografato. Per ulteriori informazioni, consulta Limitazione delle chiavi di dati crittografate.
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
-
Poiché questo portachiavi di decrittografia include solo una AWS KMS chiave, nell'esempio viene utilizzato il CreateAwsKmsKeyring()
metodo con un'istanza del relativo oggetto. CreateAwsKmsKeyringInput
Per creare un AWS KMS portachiavi con una sola AWS KMS chiave, è possibile utilizzare un portachiavi a chiave singola o multipla.
// 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
-
L'esempio seguente crea un'istanza del AWS Encryption SDK client con la politica di impegno predefinita,. REQUIRE_ENCRYPT_REQUIRE_DECRYPT
Per un esempio completo, vedere aws_kms_keyring_example.py nel SDK di crittografia AWS per Python
repository in. 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
)
È inoltre possibile utilizzare un AWS KMS portachiavi che specifica una chiave generatrice per la decrittografia, come la seguente. Durante la decrittografia, AWS Encryption SDK ignora la distinzione tra le chiavi del generatore e le chiavi aggiuntive. Può utilizzare qualsiasi delle opzioni specificate AWS KMS keys per decrittografare una chiave di dati crittografata. La chiamata a ha AWS KMS esito positivo solo quando il chiamante è autorizzato a utilizzarla per decrittografare i AWS KMS key dati.
- C
-
struct aws_cryptosdk_keyring *kms_decrypt_keyring =
Aws::Cryptosdk::KmsKeyring::Builder().Build(generator_key, {additional_key, other_key});
- C# / .NET
-
L'esempio seguente utilizza la versione 4. x del AWS Encryption SDK modulo. 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
-
L'esempio seguente utilizza la buildClient
funzione per specificare la politica di impegno predefinita,REQUIRE_ENCRYPT_REQUIRE_DECRYPT
. È inoltre possibile utilizzare il buildClient
per limitare il numero di chiavi di dati crittografate in un messaggio crittografato. Per ulteriori informazioni, consulta Limitazione delle chiavi di dati crittografate.
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
-
L'esempio seguente utilizza la buildClient
funzione per specificare la politica di impegno predefinita,REQUIRE_ENCRYPT_REQUIRE_DECRYPT
. È inoltre possibile utilizzare il buildClient
per limitare il numero di chiavi di dati crittografate in un messaggio crittografato. Per ulteriori informazioni, consulta Limitazione delle chiavi di dati crittografate.
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
-
L'esempio seguente crea un'istanza del AWS Encryption SDK client con la politica di impegno predefinita,. REQUIRE_ENCRYPT_REQUIRE_DECRYPT
Per un esempio completo, vedere aws_kms_keyring_example.py nel SDK di crittografia AWS per Python
repository in. 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 differenza di un portachiavi di crittografia che utilizza tutto quanto specificato AWS KMS keys, è possibile decrittografare un messaggio crittografato utilizzando un portachiavi di decrittografia che include messaggi non correlati al messaggio crittografato e AWS KMS keys AWS KMS keys
che il chiamante non è autorizzato a utilizzare. Se una chiamata di decrittazione a AWS KMS
non riesce, ad esempio quando l'intermediario non ha le autorizzazioni necessarie, AWS Encryption SDK passa semplicemente alla chiave di dati crittografata successiva.
Utilizzo di un portachiavi Discovery AWS KMS
Durante la decrittografia, è consigliabile specificare le chiavi di wrapping che possono utilizzare. AWS Encryption SDK Per seguire questa procedura ottimale, utilizzate un portachiavi di AWS KMS decrittografia che limiti le chiavi di AWS KMS wrapping a quelle specificate. Tuttavia, puoi anche creare un portachiavi AWS KMS Discovery, ovvero un AWS KMS portachiavi che non specifichi alcuna chiave di avvolgimento.
AWS Encryption SDK Fornisce un portachiavi AWS KMS Discovery standard e un portachiavi Discovery per chiavi multiregionali. AWS KMS Per informazioni sull'utilizzo delle chiavi multiregionali con, vedere. AWS Encryption SDKUtilizzo di più regioni AWS KMS keys
Poiché non specifica alcuna chiave di wrapping, un portachiavi Discovery non può crittografare i dati. Se si utilizza un portachiavi Discovery per crittografare i dati, da solo o in un portachiavi multiplo, l'operazione di crittografia non riesce. L'eccezione è l'operazione di crittografia SDK di crittografia AWS per C, in cui l'operazione di crittografia ignora un portachiavi di rilevamento standard, ma ha esito negativo se si specifica un portachiavi di rilevamento multiregionale, da solo o in un portachiavi multiplo.
Durante la decrittografia, un portachiavi Discovery consente di chiedere AWS KMS di AWS Encryption SDK decrittografare qualsiasi chiave di dati crittografata utilizzando quella che l'ha crittografata, indipendentemente da chi la possiede o ha accesso a AWS KMS key tale chiave. AWS KMS key La chiamata ha esito positivo solo quando il chiamante dispone dell'autorizzazione per. kms:Decrypt
AWS KMS key
Se includi un portachiavi AWS KMS Discovery in un portachiavi multiplo di decrittografia, il portachiavi Discovery ha la precedenza su tutte KMS le restrizioni relative ai tasti specificate dagli altri portachiavi del portachiavi multiplo. Il portachiavi multiplo si comporta come il portachiavi meno restrittivo. Un portachiavi AWS KMS Discovery non ha alcun effetto sulla crittografia se utilizzato da solo o in un portachiavi multiplo.
AWS Encryption SDK Fornisce un portachiavi AWS KMS Discovery per una maggiore comodità. ma, se possibile, consigliamo di utilizzare un keyring di portata più limitata per i motivi seguenti.
-
Autenticità: un portachiavi AWS KMS
Discovery può utilizzare qualsiasi chiave utilizzata per crittografare una chiave di dati nel messaggio crittografato, solo in modo AWS KMS key che il chiamante abbia il permesso di utilizzarla per decrittografarla. AWS KMS key anche se potrebbe non essere la AWS KMS key
che intende impiegare. Ad esempio, una delle chiavi di dati crittografate potrebbe essere stata crittografata con un metodo meno sicuro che chiunque può utilizzare. AWS KMS key
-
Latenza e prestazioni: un portachiavi AWS KMS Discovery potrebbe essere sensibilmente più lento rispetto ad altri portachiavi perché AWS Encryption SDK tenta di decrittografare tutte le chiavi di dati crittografate, comprese quelle crittografate AWS KMS keys in altre regioni, Account AWS e AWS KMS keys che il chiamante non è autorizzato a utilizzare per la decrittografia.
Se utilizzi un portachiavi di rilevamento, ti consigliamo di utilizzare un filtro di rilevamento per limitare le chiavi che possono essere utilizzate a quelle presenti in partizioni e partizioni specifiche. KMS Account AWS I filtri Discovery sono supportati nelle versioni 1.7. x e versioni successive di AWS Encryption SDK. Per informazioni su come trovare l'ID e la partizione dell'account, consulta I tuoi Account AWS
identificatori e il ARNformato nel. Riferimenti generali di AWS
Il codice seguente crea un'istanza di un portachiavi di AWS KMS rilevamento con un filtro di rilevamento che limita le KMS chiavi AWS Encryption SDK utilizzabili a quelle presenti nella aws
partizione e nell'account di esempio 111122223333.
Prima di utilizzare questo codice, sostituite i valori di esempio Account AWS e di partizione con valori validi per la partizione and. Account AWS Se KMS le tue chiavi si trovano nelle regioni cinesi, usa il valore della aws-cn
partizione. Se KMS le tue chiavi sono inserite AWS GovCloud (US) Regions, usa il valore della aws-us-gov
partizione. Per tutti gli altri Regioni AWS, usa il valore della aws
partizione.
- C
-
Per un esempio completo, vedi: 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
-
L'esempio seguente utilizza la versione 4. x del AWS Encryption SDK modulo. 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
-
In JavaScript, è necessario specificare esplicitamente la proprietà discovery.
L'esempio seguente utilizza la buildClient
funzione per specificare la politica di impegno predefinita,REQUIRE_ENCRYPT_REQUIRE_DECRYPT
. È inoltre possibile utilizzare il buildClient
per limitare il numero di chiavi di dati crittografate in un messaggio crittografato. Per ulteriori informazioni, consulta Limitazione delle chiavi di dati crittografate.
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
-
In JavaScript, è necessario specificare in modo esplicito la proprietà discovery.
L'esempio seguente utilizza la buildClient
funzione per specificare la politica di impegno predefinita,REQUIRE_ENCRYPT_REQUIRE_DECRYPT
. È inoltre possibile utilizzare il buildClient
per limitare il numero di chiavi di dati crittografate in un messaggio crittografato. Per ulteriori informazioni, consulta Limitazione delle chiavi di dati crittografate.
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
)
Utilizzo di un portachiavi AWS KMS Regional Discovery
Un portachiavi AWS KMS Regional Discovery è un portachiavi che non specifica il ARNs numero di chiavi. KMS Invece, consente la AWS Encryption SDK decrittografia utilizzando solo le chiavi in particolare. KMS Regioni AWS
Durante la decrittografia con un portachiavi AWS KMS Regional Discovery, AWS Encryption SDK
decripta qualsiasi chiave di dati crittografata che è stata crittografata con un valore specificato. AWS KMS key Regione AWS Per avere successo, il chiamante deve disporre dell'kms:Decrypt
autorizzazione su almeno una delle chiavi di dati specificate Regione AWS che hanno AWS KMS keys
crittografato una chiave dati.
Come altri portachiavi Discovery, il portachiavi Discovery regionale non ha alcun effetto sulla crittografia. Funziona solo quando si decifrano messaggi crittografati. Se si utilizza un portachiavi Regional Discovery in un portachiavi multiplo utilizzato per la crittografia e la decrittografia, è efficace solo durante la decrittografia. Se si utilizza un portachiavi di rilevamento multiregionale per crittografare i dati, da solo o in un portachiavi multiregionale, l'operazione di crittografia non riesce.
Se includi un portachiavi di rilevamento AWS KMS regionale in un portachiavi multiplo di decrittografia, il portachiavi di rilevamento regionale ha la precedenza su tutte le restrizioni relative alle chiavi specificate dagli altri portachiavi del portachiavi multiplo. KMS Il portachiavi multiplo si comporta come il portachiavi meno restrittivo. Un portachiavi AWS KMS Discovery non ha alcun effetto sulla crittografia se utilizzato da solo o in un portachiavi multiplo.
Il portachiavi Regional Discovery SDK di crittografia AWS per C tenta di decrittografare solo con KMS chiavi nella regione specificata. Quando si utilizza un portachiavi Discovery in and for. SDK di crittografia AWS per JavaScript AWS Encryption SDK NET, si configura la regione sul AWS KMS client. Queste AWS Encryption SDK implementazioni non filtrano le KMS chiavi per regione, ma AWS KMS
falliranno una richiesta di decrittografia per KMS le chiavi al di fuori della regione specificata.
Se utilizzi un portachiavi di rilevamento, ti consigliamo di utilizzare un filtro di rilevamento per limitare KMS le chiavi utilizzate nella decrittografia a quelle nelle partizioni e nelle partizioni specificate. Account AWS I filtri Discovery sono supportati nelle versioni 1.7. x e versioni successive di AWS Encryption SDK.
Ad esempio, il codice seguente crea un portachiavi di scoperta AWS KMS regionale con un filtro di scoperta. Questo portachiavi limita AWS Encryption SDK le KMS chiavi del conto 111122223333 nella regione Stati Uniti occidentali (Oregon) (us-west-2).
- C
-
Per esaminare un esempio che mostra questo keyring e il metodo create_kms_client
, consulta 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 Il per. NETnon ha un portachiavi Regional Discovery dedicato. Tuttavia, è possibile utilizzare diverse tecniche per limitare le KMS chiavi utilizzate durante la decrittografia a una particolare regione.
Il modo più efficiente per limitare le regioni in un portachiavi di rilevamento consiste nell'utilizzare un portachiavi di multi-Region-aware rilevamento, anche se i dati sono stati crittografati utilizzando solo chiavi a regione singola. Quando incontra chiavi a regione singola, il multi-Region-aware portachiavi non utilizza alcuna funzionalità multiregionale.
Il portachiavi restituito dal CreateAwsKmsMrkDiscoveryKeyring()
metodo filtra KMS le chiavi per regione prima della chiamata. AWS KMS Invia una richiesta di decrittografia AWS KMS solo quando la chiave di dati crittografata è stata crittografata da una KMS chiave nella regione specificata dal Region
parametro nell'oggetto. CreateAwsKmsMrkDiscoveryKeyringInput
Negli esempi seguenti viene utilizzata la versione 4. x del AWS Encryption SDK modulo. 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);
Puoi anche limitare KMS le chiavi a un particolare Regione AWS specificando una regione nell'istanza del AWS KMS client (AmazonKeyManagementServiceClient). Tuttavia, questa configurazione è meno efficiente e potenzialmente più costosa rispetto all'utilizzo di un portachiavi multi-Region-aware Discovery. Invece di filtrare KMS le chiavi per regione prima di chiamare AWS KMS, usa for. AWS Encryption SDK NETchiama ogni chiave AWS KMS di dati crittografata (finché non ne decripta una) e si affida AWS KMS per limitare le KMS chiavi utilizzate alla regione specificata.
L'esempio seguente utilizza la versione 4. x del AWS Encryption SDK modulo. 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
-
L'esempio seguente utilizza la buildClient
funzione per specificare la politica di impegno predefinita,REQUIRE_ENCRYPT_REQUIRE_DECRYPT
. È inoltre possibile utilizzare il buildClient
per limitare il numero di chiavi di dati crittografate in un messaggio crittografato. Per ulteriori informazioni, consulta Limitazione delle chiavi di dati crittografate.
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
-
L'esempio seguente utilizza la buildClient
funzione per specificare la politica di impegno predefinita,REQUIRE_ENCRYPT_REQUIRE_DECRYPT
. È inoltre possibile utilizzare il buildClient
per limitare il numero di chiavi di dati crittografate in un messaggio crittografato. Per ulteriori informazioni, consulta Limitazione delle chiavi di dati crittografate.
Per visualizzare questo portachiavi e la limitRegions
funzione, in un esempio funzionante, vedi 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
)
Esporta SDK di crittografia AWS per JavaScript anche una funzione per Node.js e il browser. excludeRegions
Questa funzione crea un portachiavi di rilevamento AWS KMS regionale che omette AWS KMS keys in aree particolari. L'esempio seguente crea un portachiavi AWS KMS Regional Discovery che può essere utilizzato AWS KMS keys nell'account 111122223333 in tutti gli Stati Uniti Regione AWS ad eccezione di Stati Uniti orientali (Virginia settentrionale) (us-east-1).
Non SDK di crittografia AWS per C dispone di un metodo analogo, ma è possibile implementarne uno creandone uno personalizzato. ClientSupplier
Questo esempio mostra il codice per Node.js.
const discovery = true
const clientProvider = excludeRegions(['us-east-1'], getKmsClient)
const keyring = new KmsKeyringNode({
clientProvider,
discovery,
discoveryFilter: { accountIDs: [111122223333
], partition: 'aws
' }
})