Aggiornamento dei provider di chiavi AWS KMS principali - AWS Encryption SDK

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à.

Aggiornamento dei provider di chiavi AWS KMS principali

Per migrare alla versione più recente 1. versione x di e AWS Encryption SDK quindi alla versione 2.0. x o versione successiva, è necessario sostituire i provider di chiavi AWS KMS master precedenti con fornitori di chiavi master creati esplicitamente in modalità rigorosa o in modalità di rilevamento. I provider di chiavi master legacy sono obsoleti nella versione 1.7. x e rimosso nella versione 2.0. x. Questa modifica è necessaria per le applicazioni e gli script che utilizzano la SDK di crittografia AWS per JavaSDK di crittografia AWS per Python, e la AWS crittografia CLI. Gli esempi in questa sezione ti mostreranno come aggiornare il codice.

Nota

In Python, attiva gli avvisi di deprecazione. Questo ti aiuterà a identificare le parti del codice che devi aggiornare.

Se utilizzi una chiave AWS KMS master (non un fornitore di chiavi master), puoi saltare questo passaggio. AWS KMS le chiavi master non sono obsolete o rimosse. Crittografano e decrittografano solo con le chiavi di wrapping specificate dall'utente.

Gli esempi di questa sezione si concentrano sugli elementi del codice che è necessario modificare. Per un esempio completo del codice aggiornato, consultate la sezione Esempi del GitHub repository relativo al linguaggio di programmazione in uso. Inoltre, questi esempi in genere utilizzano la chiave ARNs per rappresentare AWS KMS keys. Quando si crea un provider di chiavi principali per la crittografia, è possibile utilizzare qualsiasi identificatore di AWS KMS chiave valido per rappresentare un. AWS KMS key Quando si crea un provider di chiavi master per la decrittografia, è necessario utilizzare una chiave. ARN

Scopri di più sulla migrazione

Per tutti AWS Encryption SDK gli utenti, scopri come impostare la tua politica di impegno inImpostazione della politica di impegno.

Per SDK di crittografia AWS per C gli SDK di crittografia AWS per JavaScript utenti finali, scopri di più su un aggiornamento opzionale dei portachiavi inAggiornamento in corsoAWS KMSportachiavi.

Migrazione alla modalità rigorosa

Dopo l'aggiornamento alla versione più recente 1. versione x di AWS Encryption SDK, sostituisci i tuoi provider di chiavi master precedenti con fornitori di chiavi master in modalità rigorosa. In modalità rigorosa, è necessario specificare le chiavi di wrapping da utilizzare per la crittografia e la decrittografia. AWS Encryption SDK Utilizza solo le chiavi di avvolgimento specificate. I provider di chiavi master obsolete possono decrittografare i dati utilizzando qualsiasi chiave AWS KMS key che abbia crittografato una chiave dati, anche in diverse regioni. AWS KMS keys Account AWS

I provider di chiavi principali in modalità rigorosa vengono introdotti nella versione 1.7. AWS Encryption SDK x. Sostituiscono i provider di chiavi master legacy, che sono obsoleti nella versione 1.7. x e rimosso nella 2.0. x. L'utilizzo di provider di chiavi principali in modalità rigorosa è una procedura AWS Encryption SDK consigliata.

Il codice seguente crea un provider di chiavi master in modalità rigorosa che è possibile utilizzare per la crittografia e la decrittografia.

Java

Questo esempio rappresenta il codice di un'applicazione che utilizza la versione 1.6.2 o precedente di. SDK di crittografia AWS per Java

Questo codice utilizza il KmsMasterKeyProvider.builder() metodo per creare un'istanza di un provider di chiavi AWS KMS master che ne utilizza una AWS KMS key come chiave di wrapping.

// Create a master key provider // Replace the example key ARN with a valid one String awsKmsKey = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"; KmsMasterKeyProvider masterKeyProvider = KmsMasterKeyProvider.builder() .withKeysForEncryption(awsKmsKey) .build();

Questo esempio rappresenta il codice in un'applicazione che utilizza la versione 1.7. x o versione successiva di SDK di crittografia AWS per Java . Per un esempio completo, consulta BasicEncryptionExample.java.

I Builder.withKeysForEncryption() metodi Builder.build() and utilizzati nell'esempio precedente sono obsoleti nella versione 1.7. x e vengono rimossi dalla versione 2.0. x.

Per eseguire l'aggiornamento a un provider di chiavi master in modalità rigorosa, questo codice sostituisce le chiamate ai metodi obsoleti con una chiamata al nuovo metodo. Builder.buildStrict() Questo esempio ne specifica uno AWS KMS key come chiave di avvolgimento, ma il Builder.buildStrict() metodo può accettare un elenco di più elementi. AWS KMS keys

// Create a master key provider in strict mode // Replace the example key ARN with a valid one from your Account AWS. String awsKmsKey = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"; KmsMasterKeyProvider masterKeyProvider = KmsMasterKeyProvider.builder() .buildStrict(awsKmsKey);
Python

Questo esempio rappresenta il codice in un'applicazione che utilizza la versione 1.4.1 di. SDK di crittografia AWS per Python Questo codice utilizzaKMSMasterKeyProvider, che è obsoleto nella versione 1.7. x e rimosso dalla versione 2.0. x. Durante la decrittografia, utilizza qualsiasi chiave di dati AWS KMS key che ha crittografato una chiave di dati indipendentemente da quanto specificato AWS KMS keys .

Nota che non KMSMasterKey è obsoleto o rimosso. Durante la crittografia e la decrittografia, utilizza solo i dati specificati dall'utente. AWS KMS key

# Create a master key provider # Replace the example key ARN with a valid one key_1 = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" key_2 = "arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321" aws_kms_master_key_provider = KMSMasterKeyProvider( key_ids=[key_1, key_2] )

Questo esempio rappresenta il codice di un'applicazione che utilizza la versione 1.7. x di SDK di crittografia AWS per Python. Per un esempio completo, vedere basic_encryption.py.

Per eseguire l'aggiornamento a un provider di chiavi master in modalità rigorosa, questo codice sostituisce la chiamata a KMSMasterKeyProvider() con una chiamata aStrictAwsKmsMasterKeyProvider().

# Create a master key provider in strict mode # Replace the example key ARNs with valid values from your Account AWS key_1 = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" key_2 = "arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321" aws_kms_master_key_provider = StrictAwsKmsMasterKeyProvider( key_ids=[key_1, key_2] )
AWS Encryption CLI

Questo esempio mostra come crittografare e decrittografare utilizzando la CLI versione AWS Encryption 1.1.7 o precedente.

Nella versione 1.1.7 e precedenti, durante la crittografia, si specificano una o più chiavi master (o chiavi di wrapping), ad esempio una. AWS KMS key Durante la decrittografia, non è possibile specificare alcuna chiave di wrapping a meno che non si utilizzi un provider di chiavi master personalizzato. La AWS crittografia CLI può utilizzare qualsiasi chiave di wrapping che ha crittografato una chiave dati.

\\ Replace the example key ARN with a valid one $ keyArn=arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab \\ Encrypt your plaintext data $ aws-encryption-cli --encrypt \ --input hello.txt \ --master-keys key=$keyArn \ --metadata-output ~/metadata \ --encryption-context purpose=test \ --output . \\ Decrypt your ciphertext $ aws-encryption-cli --decrypt \ --input hello.txt.encrypted \ --encryption-context purpose=test \ --metadata-output ~/metadata \ --output .

Questo esempio mostra come crittografare e decrittografare utilizzando la versione Encryption 1.7. AWS CLI x o versione successiva. Per esempi completi, vedereEsempi diAWSCLI di crittografia.

Il --master-keys parametro è obsoleto nella versione 1.7. x e rimosso nella versione 2.0. x. È stato sostituito dal --wrapping-keys parametro by, richiesto nei comandi encrypt e decrypt. Questo parametro supporta la modalità rigorosa e la modalità di rilevamento. La modalità rigorosa è una procedura AWS Encryption SDK consigliata che garantisce l'utilizzo della chiave di wrapping desiderata.

Per eseguire l'aggiornamento alla modalità rigorosa, utilizzate l'attributo key del --wrapping-keys parametro per specificare una chiave di wrapping durante la crittografia e la decrittografia.

\\ Replace the example key ARN with a valid value $ keyArn=arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab \\ Encrypt your plaintext data $ aws-encryption-cli --encrypt \ --input hello.txt \ --wrapping-keys key=$keyArn \ --metadata-output ~/metadata \ --encryption-context purpose=test \ --output . \\ Decrypt your ciphertext $ aws-encryption-cli --decrypt \ --input hello.txt.encrypted \ --wrapping-keys key=$keyArn \ --encryption-context purpose=test \ --metadata-output ~/metadata \ --output .

Migrazione alla modalità di rilevamento

A partire dalla versione 1.7. x, è consigliabile utilizzare la modalità rigorosa per i fornitori di chiavi AWS KMS master, ovvero specificare le chiavi di wrapping durante la crittografia e la decrittografia. AWS Encryption SDK È sempre necessario specificare le chiavi di wrapping durante la crittografia. Ma ci sono situazioni in cui specificare la chiave ARNs di decrittografia non è AWS KMS keys pratico. Ad esempio, se si utilizzano alias per l'identificazione AWS KMS keys durante la crittografia, si perde il vantaggio degli alias se è necessario elencare la chiave durante la decrittografia. ARNs Inoltre, poiché i provider di chiavi master in modalità di rilevamento si comportano come i provider di chiavi master originali, è possibile utilizzarli temporaneamente come parte della strategia di migrazione e quindi passare ai provider di chiavi master in modalità rigorosa in un secondo momento.

In casi come questo, puoi utilizzare i provider di chiavi master in modalità di scoperta. Questi fornitori di chiavi master non consentono di specificare chiavi di wrapping, quindi non è possibile utilizzarle per la crittografia. Durante la decrittografia, possono utilizzare qualsiasi chiave di wrapping che ha crittografato una chiave dati. Ma a differenza dei provider di chiavi master legacy, che si comportano allo stesso modo, li crei in modalità di scoperta in modo esplicito. Quando si utilizzano provider di chiavi master in modalità di scoperta, è possibile limitare le chiavi di wrapping che possono essere utilizzate a questi in particolare. Account AWS Questo filtro di rilevamento è facoltativo, ma è una procedura consigliata. Per informazioni su AWS partizioni e account, consulta Amazon Resource Names nel Riferimenti generali di AWS.

Gli esempi seguenti creano un provider di chiavi AWS KMS master in modalità rigorosa per la crittografia e un provider di chiavi AWS KMS master in modalità di scoperta per la decrittografia. Il provider di chiavi master in modalità di scoperta utilizza un filtro di rilevamento per limitare le chiavi di wrapping utilizzate per la decrittografia alla partizione e a un esempio particolare. aws Account AWS Sebbene il filtro dell'account non sia necessario in questo esempio molto semplice, si tratta di una best practice molto utile quando un'applicazione crittografa i dati e un'altra applicazione decrittografa i dati.

Java

Questo esempio rappresenta il codice in un'applicazione che utilizza la versione 1.7. x o versione successiva di SDK di crittografia AWS per Java. Per un esempio completo, consulta DiscoveryDecryptionExample.java.

Per creare un'istanza di un provider di chiavi master in modalità rigorosa per la crittografia, questo esempio utilizza il metodo. Builder.buildStrict() Per creare un'istanza di un provider di chiavi master in modalità di scoperta per la decrittografia, utilizza il metodo. Builder.buildDiscovery() Il Builder.buildDiscovery() metodo utilizza un valore DiscoveryFilter che limita la partizione e AWS Encryption SDK gli AWS KMS keys account specificati AWS .

// Create a master key provider in strict mode for encrypting // Replace the example alias ARN with a valid one from your Account AWS. String awsKmsKey = "arn:aws:kms:us-west-2:111122223333:alias/ExampleAlias"; KmsMasterKeyProvider encryptingKeyProvider = KmsMasterKeyProvider.builder() .buildStrict(awsKmsKey); // Create a master key provider in discovery mode for decrypting // Replace the example account IDs with valid values. DiscoveryFilter accounts = new DiscoveryFilter("aws", Arrays.asList("111122223333", "444455556666")); KmsMasterKeyProvider decryptingKeyProvider = KmsMasterKeyProvider.builder() .buildDiscovery(accounts);
Python

Questo esempio rappresenta il codice in un'applicazione che utilizza la versione 1.7. x o versione successiva di SDK di crittografia AWS per Python . Per un esempio completo, vedere discovery_kms_provider.py.

Per creare un provider di chiavi master in modalità rigorosa per la crittografia, questo esempio utilizzaStrictAwsKmsMasterKeyProvider. Per creare un provider di chiavi master in modalità di rilevamento per la decrittografia, viene utilizzato DiscoveryAwsKmsMasterKeyProvider with AWS Encryption SDK a DiscoveryFilter che limita il valore nella AWS partizione e AWS KMS keys negli account specificati.

# Create a master key provider in strict mode # Replace the example key ARN and alias ARNs with valid values from your Account AWS. key_1 = "arn:aws:kms:us-west-2:111122223333:alias/ExampleAlias" key_2 = "arn:aws:kms:us-west-2:444455556666:key/1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d" aws_kms_master_key_provider = StrictAwsKmsMasterKeyProvider( key_ids=[key_1, key_2] ) # Create a master key provider in discovery mode for decrypting # Replace the example account IDs with valid values accounts = DiscoveryFilter( partition="aws", account_ids=["111122223333", "444455556666"] ) aws_kms_master_key_provider = DiscoveryAwsKmsMasterKeyProvider( discovery_filter=accounts )
AWS Encryption CLI

Questo esempio mostra come crittografare e decrittografare utilizzando la versione Encryption 1.7. AWS CLI x o versione successiva. A partire dalla versione 1.7. x, il --wrapping-keys parametro è necessario per la crittografia e la decrittografia. Il --wrapping-keys parametro supporta la modalità rigorosa e la modalità di rilevamento. Per esempi completi, vedereEsempi diAWSCLI di crittografia.

Durante la crittografia, questo esempio specifica una chiave di wrapping, che è obbligatoria. Durante la decrittografia, sceglie esplicitamente la modalità di rilevamento utilizzando l'discoveryattributo del parametro con un valore di. --wrapping-keys true

Per limitare le chiavi di wrapping che AWS Encryption SDK possono essere utilizzate in modalità discovery a quelle in particolare Account AWS, questo esempio utilizza gli attributi discovery-partition e discovery-account del parametro. --wrapping-keys Questi attributi opzionali sono validi solo quando l'discoveryattributo è impostato su. true È necessario utilizzare gli discovery-account attributi discovery-partition e insieme; nessuno dei due è valido da solo.

\\ Replace the example key ARN with a valid value $ keyAlias=arn:aws:kms:us-west-2:111122223333:alias/ExampleAlias \\ Encrypt your plaintext data $ aws-encryption-cli --encrypt \ --input hello.txt \ --wrapping-keys key=$keyAlias \ --metadata-output ~/metadata \ --encryption-context purpose=test \ --output . \\ Decrypt your ciphertext \\ Replace the example account IDs with valid values $ aws-encryption-cli --decrypt \ --input hello.txt.encrypted \ --wrapping-keys discovery=true \ discovery-partition=aws \ discovery-account=111122223333 \ discovery-account=444455556666 \ --encryption-context purpose=test \ --metadata-output ~/metadata \ --output .