Provider di materiali KMS diretto - AWS SDK per la crittografia del database

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

Provider di materiali KMS diretto

Nota

La nostra libreria di crittografia lato client è stata rinominata AWS Database Encryption SDK. L'argomento seguente fornisce informazioni sulle versioni 1. x —2. x del client di crittografia DynamoDB per Java e versioni 1. x —3. x del client di crittografia DynamoDB per Python. Per ulteriori informazioni, consulta AWSDatabase Encryption SDK per il supporto delle versioni di DynamoDB.

Il Direct KMS Materials Provider (Direct KMS Provider) protegge gli elementi della tabella con un sistema AWS KMS keyche non esce mai AWS Key Management Service(AWS KMS) in modo non crittografato. Questo provider di materiali crittografici restituisce una chiave di crittografia e una chiave di firma univoche per ogni item della tabella. A questo scopo, richiama AWS KMS ogni volta che effettui la crittografia o la decrittografia di un item.

Se stai elaborando elementi DynamoDB ad alta frequenza e su larga scala, potresti superare i AWS KMS requests-per-secondlimiti, causando ritardi nell'elaborazione. Se devi superare un limite, crea un caso nel AWS SupportCentro. Potresti anche prendere in considerazione l'utilizzo di un fornitore di materiali crittografici con un riutilizzo limitato delle chiavi, come il fornitore più recente.

Per utilizzare il Direct KMS Provider, il chiamante deve disporreAccount AWS, almeno unoAWS KMS key, dell'autorizzazione per chiamare GenerateDataKeye decrittografare le operazioni su. AWS KMS key AWS KMS keyDeve essere una chiave di crittografia simmetrica; il client di crittografia DynamoDB non supporta la crittografia asimmetrica. Se utilizzi una tabella globale DynamoDB, potresti voler specificare una chiave AWS KMSmultiregionale. Per informazioni dettagliate, consultare Come utilizzarlo.

Nota

Quando utilizzi Direct KMS Provider, i nomi e i valori degli attributi della chiave primaria vengono visualizzati in chiaro nel contesto di AWS KMS crittografia e nei AWS CloudTrail registri delle operazioni correlate. AWS KMS Tuttavia, il client di crittografia DynamoDB non espone mai il testo in chiaro di alcun valore di attributo crittografato.

Il Direct KMS Provider è uno dei numerosi fornitori di materiali crittografici (CMP) supportati dal client di crittografia DynamoDB. Per informazioni sugli altri CMP, consulta Fornitore di materiali crittografici.

Per il codice di esempio, consulta:

Come utilizzarlo

Per creare un provider KMS diretto, utilizza il parametro key ID per specificare una chiave KMS di crittografia simmetrica nel tuo account. Il valore del parametro key ID può essere l'ID chiave, l'ARN della chiave, il nome dell'alias o l'alias ARN di. AWS KMS key Per i dettagli sugli identificatori chiave, consulta Identificatori chiave nella Guida per gli sviluppatori. AWS Key Management Service

Il Direct KMS Provider richiede una chiave KMS di crittografia simmetrica. Non è possibile utilizzare una chiave KMS asimmetrica. Tuttavia, puoi utilizzare una chiave KMS multiregionale, una chiave KMS con materiale chiave importato o una chiave KMS in un archivio chiavi personalizzato. È necessario disporre delle autorizzazioni kms: GenerateDataKey e kms:Decrypt sulla chiave KMS. Pertanto, è necessario utilizzare una chiave gestita dal cliente, non una chiave KMS AWS gestita o AWS di proprietà.

Il client di crittografia DynamoDB per Python determina la regione per la chiamata AWS KMS dalla regione nel valore del parametro ID chiave, se ne include una. Altrimenti, utilizza la regione nel AWS KMS client, se ne viene specificata una, o la regione configurata inAWS SDK for Python (Boto3). Per informazioni sulla selezione della regione in Python, consulta Configurazione nel riferimento API AWS SDK for Python (Boto3).

Il client di crittografia DynamoDB per Java determina la regione per le chiamate AWS KMS dalla regione del AWS KMS client, se il client specificato include una regione. Altrimenti, utilizza la regione configurata inAWS SDK for Java. Per informazioni sulla selezione della regione inAWS SDK for Java, consulta la Regione AWSselezione nella Guida per gli AWS SDK for Java sviluppatori.

Java
// Replace the example key ARN and Region with valid values for your application final String keyArn = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' final String region = 'us-west-2' final AWSKMS kms = AWSKMSClientBuilder.standard().withRegion(region).build(); final DirectKmsMaterialProvider cmp = new DirectKmsMaterialProvider(kms, keyArn);
Python

L'esempio seguente utilizza la chiave ARN per specificare ilAWS KMS key. Se l'identificatore di chiave non include unRegione AWS, il client di crittografia DynamoDB ottiene la regione dalla sessione Botocore configurata, se presente, o dai valori predefiniti di Boto.

# Replace the example key ID with a valid value kms_key = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' kms_cmp = AwsKmsCryptographicMaterialsProvider(key_id=kms_key)

Se utilizzi tabelle globali Amazon DynamoDB, ti consigliamo di crittografare i dati con una chiave multiregionale. AWS KMS Le chiavi multiregionali sono diverse Regioni AWS e possono essere utilizzate AWS KMS keys in modo intercambiabile perché hanno lo stesso ID chiave e lo stesso materiale chiave. Per i dettagli, consulta Utilizzo di chiavi multiregionali nella Guida per gli AWS Key Management Service sviluppatori.

Nota

Se si utilizza la versione 2017.11.29 delle tabelle globali, è necessario impostare le azioni relative agli attributi in modo che i campi di replica riservati non siano crittografati o firmati. Per informazioni dettagliate, consultare Problemi con le tabelle globali delle versioni precedenti.

Per utilizzare una chiave multiregionale con il client di crittografia DynamoDB, crea una chiave multiregionale e replicala nelle regioni in cui viene eseguita l'applicazione. Quindi configura il Direct KMS Provider per utilizzare la chiave multiregionale nella regione in cui chiama il DynamoDB Encryption Client. AWS KMS

L'esempio seguente configura il client di crittografia DynamoDB per crittografare i dati nella regione Stati Uniti orientali (Virginia settentrionale) (us-east-1) e decrittografarli nella regione Stati Uniti occidentali (Oregon) (us-west-2) utilizzando una chiave multiregionale.

Java

In questo esempio, il client di crittografia DynamoDB ottiene la regione per le chiamate AWS KMS dalla regione del AWS KMS client. Il keyArn valore identifica una chiave multiregionale nella stessa regione.

// Encrypt in us-east-1 // Replace the example key ARN and Region with valid values for your application final String usEastKey = 'arn:aws:kms:us-east-1:111122223333:key/mrk-1234abcd12ab34cd56ef1234567890ab' final String region = 'us-east-1' final AWSKMS kms = AWSKMSClientBuilder.standard().withRegion(region).build(); final DirectKmsMaterialProvider cmp = new DirectKmsMaterialProvider(kms, usEastKey);
// Decrypt in us-west-2 // Replace the example key ARN and Region with valid values for your application final String usWestKey = 'arn:aws:kms:us-west-2:111122223333:key/mrk-1234abcd12ab34cd56ef1234567890ab' final String region = 'us-west-2' final AWSKMS kms = AWSKMSClientBuilder.standard().withRegion(region).build(); final DirectKmsMaterialProvider cmp = new DirectKmsMaterialProvider(kms, usWestKey);
Python

In questo esempio, il client di crittografia DynamoDB ottiene la regione per le chiamate AWS KMS dalla regione nella chiave ARN.

# Encrypt in us-east-1 # Replace the example key ID with a valid value us_east_key = 'arn:aws:kms:us-east-1:111122223333:key/mrk-1234abcd12ab34cd56ef1234567890ab' kms_cmp = AwsKmsCryptographicMaterialsProvider(key_id=us_east_key)
# Decrypt in us-west-2 # Replace the example key ID with a valid value us_west_key = 'arn:aws:kms:us-west-2:111122223333:key/mrk-1234abcd12ab34cd56ef1234567890ab' kms_cmp = AwsKmsCryptographicMaterialsProvider(key_id=us_west_key)

Come funziona

Direct KMS Provider restituisce chiavi di crittografia e firma protette da un codice AWS KMS key specificato dall'utente, come illustrato nel diagramma seguente.

L'input, l'elaborazione e l'output del Direct KMS Provider nel client di crittografia DynamoDB
  • Per generare materiali di crittografia, Direct KMS Provider richiede di AWS KMS generare una chiave dati univoca per ogni elemento utilizzando una AWS KMS key chiave specificata dall'utente. Deriva le chiavi di crittografia e di firma dell'item dalla copia di testo non crittografato della chiave di dati e le restituisce, insieme alla chiave di dati crittografata, archiviata nell'attributo di descrizione del materiale dell'item.

    Il componente di crittografia dell'item utilizza le chiavi di crittografia e di firma e le rimuove dalla memoria il prima possibile. Nell'item crittografato viene salvata soltanto la copia crittografata della chiave di dati da cui queste chiavi sono state derivate.

  • Per generare materiali di decrittografia, il Provider KMS diretto chiede a AWS KMS di decrittografare la chiave di dati crittografata. Quindi, deriva le chiavi di verifica e di firma dalla chiave di dati con testo non crittografato e le restituisce al componente di crittografia dell'item.

    Il componente di crittografia dell'item effettua la verifica dell'item e, in assenza di errori, decrittografa i valori crittografati. Quindi, rimuove le chiavi dalla memoria il prima possibile.

Ottenere materiali di crittografia

Questa sezione descrive nei dettagli gli input, gli output e l'elaborazione del provider KMS diretto al momento della ricezione di una richiesta di materiali di crittografia dal componente di crittografia dell'item.

Input (dall'applicazione)

  • L'ID chiave di unAWS KMS key.

Input (dal componente di crittografia dell'item)

Output (sul componente di crittografia dell'item)

  • Chiave di crittografia (testo non crittografato)

  • Chiave di firma

  • Nella descrizione dei materiali effettivi: questi valori vengono salvati nell'attributo di descrizione del materiale aggiunto all'item dal client.

    • amzn-ddb-env-key: chiave dati codificata in Base64 crittografata da AWS KMS key

    • amzn-ddb-env-alg: algoritmo di crittografia, di default AES/256

    • amzn-ddb-sig-alg: algoritmo di firma, per impostazione predefinita, hmacSHA256/256

    • amzn-ddb-wrap-alg: km

Elaborazione

  1. Il Direct KMS Provider invia AWS KMS una richiesta per utilizzare quanto specificato AWS KMS key per generare una chiave dati univoca per l'articolo. L'operazione restituisce una chiave di testo non crittografato e una copia che viene crittografata con la AWS KMS key. Quest'ultima è nota come materiale di chiave iniziale.

    La richiesta include i valori seguenti sotto forma di testo non crittografato nel contesto di crittografia di AWS KMS. Questi valori non segreti sono crittograficamente legati all'oggetto crittografato; pertanto, per effettuare la decrittografia è necessario lo stesso contesto di crittografia. Puoi utilizzare questi valori per identificare la chiamata a AWS KMS in AWS CloudTrail logs.

    • amzn-ddb-env-alg— Algoritmo di crittografia, di default AES/256

    • amzn-ddb-sig-alg— Algoritmo di firma, di default hmacSHA256/256

    • (Facoltativo) aws-kms-table — nome della tabella

    • (Facoltativo) nome della chiave di partizione: valore della chiave di partizione (i valori binari sono codificati in Base64)

    • (Facoltativo) nome chiave di ordinamento: valore della chiave di ordinamento (i valori binari sono codificati in Base64)

    Il provider Direct KMS ottiene i valori per il contesto di AWS KMS crittografia dal contesto di crittografia DynamoDB per l'elemento. Se il contesto di crittografia DynamoDB non include un valore, ad esempio il nome della tabella, quella coppia nome-valore viene omessa dal contesto di crittografia. AWS KMS

  2. Il Provider KMS diretto deriva la chiave di crittografia e la chiave di firma simmetriche dalla chiave di dati. Per impostazione predefinita, utilizza il Secure Hash Algorithm (SHA) 256 e la funzione di derivazione della chiave RFC5869 basata su HMAC per derivare una chiave di crittografia simmetrica AES a 256 bit e una chiave di firma HMAC-SHA-256 a 256 bit.

  3. Il Provider KMS diretto restituisce l'output al componente di crittografia dell'item.

  4. Il componente di crittografia dell'item utilizza la chiave di crittografia per crittografare gli attributi specificati e la chiave di firma per firmarli, tramite gli algoritmi specificati nella descrizione dei materiali effettivi. Rimuove le chiavi di testo non crittografato dalla memoria il prima possibile.

Ottenere materiali di decrittografia

Questa sezione descrive nei dettagli gli input, gli output e l'elaborazione del provider KMS diretto al momento della ricezione di una richiesta di materiali di decrittografia dal componente di crittografia dell'item.

Input (dall'applicazione)

  • L'ID chiave di unAWS KMS key.

    Il valore dell'ID chiave può essere l'ID chiave, l'ARN della chiave, il nome dell'alias o l'alias ARN di. AWS KMS key Tutti i valori che non sono inclusi nell'ID chiave, ad esempio la regione, devono essere disponibili nel profilo AWS indicato. La chiave ARN fornisce tutti i valori AWS KMS necessari.

Input (dal componente di crittografia dell'item)

Output (sul componente di crittografia dell'item)

  • Chiave di crittografia (testo non crittografato)

  • Chiave di firma

Elaborazione

  1. Il provider Direct KMS ottiene la chiave di dati crittografata dall'attributo di descrizione del materiale nell'elemento crittografato.

  2. Chiede a AWS KMS di utilizzare la AWS KMS key specificata per decrittografare la chiave di dati crittografata. L'operazione restituisce una chiave di testo non crittografato.

    Questa richiesta deve utilizzare lo stesso contesto di crittografia di AWS KMS utilizzato per generare e crittografare la chiave di dati.

    • aws-kms-table— nome della tabella

    • nome della chiave di partizionevalore della chiave di partizione (i valori binari sono codificati in Base64)

    • (Facoltativo) nome chiave di ordinamento: valore della chiave di ordinamento (i valori binari sono codificati in Base64)

    • amzn-ddb-env-alg— Algoritmo di crittografia, di default AES/256

    • amzn-ddb-sig-alg— Algoritmo di firma, di default hmacSHA256/256

  3. Il provider KMS diretto utilizza il Secure Hash Algorithm (SHA) 256 e la funzione di derivazione della chiave RFC5869 basata su HMAC per derivare dalla chiave di dati una chiave di crittografia simmetrica AES a 256 bit e una chiave di firma HMAC-SHA-256 a 256 bit.

  4. Il Provider KMS diretto restituisce l'output al componente di crittografia dell'item.

  5. Il componente di crittografia dell'item utilizza la chiave di firma per verificare l'item. Se l'operazione riesce, utilizza la chiave di crittografia simmetrica per decrittografare i valori di attributo crittografati. Queste operazioni utilizzano gli algoritmi di crittografia e di firma specificati nella descrizione dei materiali effettivi. Il componente di crittografia dell'item rimuove le chiavi di testo non crittografato dalla memoria il prima possibile.