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à.
Crittografia a riposo: come utilizzare le chiavi gestite dal cliente per crittografare le tabelle in Amazon Keyspaces
Puoi utilizzare la console o CQL le istruzioni AWS KMS key per specificare le nuove tabelle e aggiornare le chiavi di crittografia delle tabelle esistenti in Amazon Keyspaces. Il seguente argomento descrive come implementare le chiavi gestite dal cliente per tabelle nuove ed esistenti.
Argomenti
- Prerequisiti: creare una chiave gestita dal cliente utilizzando AWS KMS e concedere le autorizzazioni ad Amazon Keyspaces
- Fase 3: Specificare una chiave gestita dal cliente per una nuova tabella
- Passaggio 4: Aggiornare la chiave di crittografia di una tabella esistente
- Fase 5: utilizza il contesto di crittografia Amazon Keyspaces nei log
- Fase 6: Configurare il monitoraggio con AWS CloudTrail
Prerequisiti: creare una chiave gestita dal cliente utilizzando AWS KMS e concedere le autorizzazioni ad Amazon Keyspaces
Prima di poter proteggere una tabella Amazon Keyspaces con una chiave gestita dal cliente, devi prima creare la chiave in AWS Key Management Service (AWS KMS) e quindi autorizzare Amazon Keyspaces a utilizzare quella chiave.
Passaggio 1: crea una chiave gestita dal cliente utilizzando AWS KMS
Per creare una chiave gestita dal cliente da utilizzare per proteggere una tabella Amazon Keyspaces, puoi seguire i passaggi in Creazione di KMS chiavi di crittografia simmetriche utilizzando la console o il. AWS API
Passaggio 2: autorizza l'uso della chiave gestita dal cliente
Prima di poter scegliere una chiave gestita dal cliente per proteggere una tabella Amazon Keyspaces, le politiche su tale chiave gestita dal cliente devono autorizzare Amazon Keyspaces a utilizzarla per tuo conto. Hai il pieno controllo sulle politiche e sulle concessioni relative alla chiave gestita dal cliente. È possibile fornire queste autorizzazioni in una policy di chiave, in una policy IAM o mediante una concessione.
Amazon Keyspaces non necessita di autorizzazioni aggiuntive per utilizzare l'impostazione predefinita Chiave di proprietà di AWSper proteggere le tabelle Amazon Keyspaces nel tuo account. AWS
I seguenti argomenti mostrano come configurare le autorizzazioni richieste utilizzando IAM politiche e concessioni che consentono alle tabelle Amazon Keyspaces di utilizzare una chiave gestita dal cliente.
Argomenti
Politica chiave per le chiavi gestite dai clienti
Quando selezioni una chiave gestita dal cliente per proteggere una tabella Amazon Keyspaces, Amazon Keyspaces ottiene l'autorizzazione a utilizzare la chiave gestita dal cliente per conto del principale che effettua la selezione. Tale principale, un utente o un ruolo, deve disporre delle autorizzazioni sulla chiave gestita dal cliente richieste da Amazon Keyspaces.
Amazon Keyspaces richiede almeno le seguenti autorizzazioni su una chiave gestita dal cliente:
kms: ReEncrypt * (per e) kms: ReEncryptFrom kms: ReEncryptTo
kms: GenerateDataKey * (per kms: GenerateDataKey e kms:) GenerateDataKeyWithoutPlaintext
Esempi di policy delle chiavi
Ad esempio, la policy di chiave di esempio riportata di seguito fornisce solo le autorizzazioni necessarie. La policy ha i seguenti effetti:
-
Consente ad Amazon Keyspaces di utilizzare la chiave gestita dal cliente nelle operazioni crittografiche e creare sovvenzioni, ma solo quando agisce per conto dei responsabili dell'account che dispongono dell'autorizzazione a utilizzare Amazon Keyspaces. Se i responsabili specificati nell'informativa non sono autorizzati a utilizzare Amazon Keyspaces, la chiamata ha esito negativo, anche se proviene dal servizio Amazon Keyspaces.
-
La chiave kms: ViaService condition consente le autorizzazioni solo quando la richiesta proviene da Amazon Keyspaces per conto dei principali elencati nell'informativa. Tali entità non possono chiamare direttamente queste operazioni. Nota: il valore
kms:ViaService
,cassandra.*.amazonaws.com
, ha un asterisco (*) nella posizione Regione. Amazon Keyspaces richiede l'autorizzazione per essere indipendente da qualsiasi particolare. Regione AWS -
Fornisce agli amministratori delle chiavi gestite dal cliente (utenti che possono assumere il
db-team
ruolo) l'accesso in sola lettura alla chiave gestita dal cliente e l'autorizzazione a revocare le concessioni, incluse le concessioni richieste da Amazon Keyspaces per proteggere la tabella. -
Fornisce ad Amazon Keyspaces l'accesso in sola lettura alla chiave gestita dal cliente. In questo caso, Amazon Keyspaces può richiamare direttamente queste operazioni. Non deve agire per conto del responsabile del conto.
Prima di utilizzare una politica chiave di esempio, sostituisci i principali di esempio con i principali effettivi del tuo. Account AWS
{ "Id": "key-policy-cassandra", "Version":"2012-10-17", "Statement": [ { "Sid" : "Allow access through Amazon Keyspaces for all principals in the account that are authorized to use Amazon Keyspaces", "Effect": "Allow", "Principal": {"AWS": "
arn:aws:iam::111122223333:user/db-lead
"}, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey", "kms:CreateGrant" ], "Resource": "*", "Condition": { "StringLike": { "kms:ViaService" : "cassandra.*.amazonaws.com" } } }, { "Sid": "Allow administrators to view the customer managed key and revoke grants", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/db-team
" }, "Action": [ "kms:Describe*", "kms:Get*", "kms:List*", "kms:RevokeGrant" ], "Resource": "*" } ] }
Utilizzo delle sovvenzioni per autorizzare Amazon Keyspaces
Oltre alle politiche chiave, Amazon Keyspaces utilizza le concessioni per impostare le autorizzazioni su una chiave gestita dal cliente. Per visualizzare le concessioni della chiave gestita dal cliente nell'account, utilizza l'operazione ListGrants. Amazon Keyspaces non necessita di concessioni o autorizzazioni aggiuntive per utilizzarlo per Chiave di proprietà di AWSproteggere la tabella.
Amazon Keyspaces utilizza le autorizzazioni di concessione quando esegue attività di manutenzione del sistema in background e di protezione continua dei dati. Utilizza inoltre concessioni per generare le chiavi delle tabelle.
Ogni concessione è specifica di una tabella. Se l'account include più tabelle crittografate con la stessa chiave gestita dal cliente, è prevista una concessione di ogni tipo per ogni tabella. La concessione è vincolata dal contesto di crittografia Amazon Keyspaces, che include il nome della tabella e l'ID. Account AWS La concessione include l'autorizzazione a ritirarla se non è più necessaria.
Per creare le concessioni, Amazon Keyspaces deve disporre dell'autorizzazione a effettuare CreateGrant
chiamate per conto dell'utente che ha creato la tabella crittografata.
La policy delle chiavi può anche consentire all'account di revocare la concessione sulla chiave gestita dal cliente. Tuttavia, se revochi la concessione su una tabella crittografata attiva, Amazon Keyspaces non sarà in grado di proteggere e mantenere la tabella.
Fase 3: Specificare una chiave gestita dal cliente per una nuova tabella
Segui questi passaggi per specificare la chiave gestita dal cliente su una nuova tabella utilizzando la console Amazon Keyspaces o. CQL
Crea una tabella crittografata utilizzando una chiave gestita dal cliente (console)
-
Nel pannello di navigazione, scegli Tabelle, quindi seleziona Crea tabella.
-
Nella pagina Crea tabella, nella sezione Dettagli della tabella, seleziona un keyspace e fornisci un nome per la nuova tabella.
-
Nella sezione Schema, crea lo schema per la tua tabella.
Nella sezione Impostazioni tabella, scegli Personalizza impostazioni.
-
Continua con le impostazioni di crittografia.
In questo passaggio, si selezionano le impostazioni di crittografia per la tabella.
Nella sezione Encryption at rest, sotto Scegli un AWS KMS key, scegli l'opzione Scegli una KMS chiave diversa (avanzata) e nel campo di ricerca scegli AWS KMS key o inserisci un Amazon Resource Name (ARN).
Nota
Se la chiave selezionata non è accessibile o non dispone delle autorizzazioni richieste, consulta la sezione Risoluzione dei problemi di accesso tramite chiave nella Guida per gli AWS Key Management Service sviluppatori.
-
Scegli Create (Crea) per creare la tabella crittografata.
Crea una nuova tabella utilizzando una chiave gestita dal cliente per la crittografia a riposo () CQL
Per creare una nuova tabella che utilizza una chiave gestita dal cliente per la crittografia a riposo, è possibile utilizzare l'CREATE TABLE
istruzione come illustrato nell'esempio seguente. Assicurati di sostituire la chiave ARN con una ARN chiave valida con autorizzazioni concesse ad Amazon Keyspaces.
CREATE TABLE
my_keyspace.my_table
(id bigint, name text, place text STATIC, PRIMARY KEY(id, name)) WITH CUSTOM_PROPERTIES = { 'encryption_specification':{ 'encryption_type': 'CUSTOMER_MANAGED_KMS_KEY', 'kms_key_identifier':'arn:aws:kms:eu-west-1:5555555555555:key/11111111-1111-111-1111-111111111111
' } };
Se ne ricevi unaInvalid Request Exception
, devi confermare che la chiave gestita dal cliente è valida e che Amazon Keyspaces dispone delle autorizzazioni richieste. Per confermare che la chiave è stata configurata correttamente, consulta Risoluzione dei problemi di accesso tramite chiave nella Guida per gli AWS Key Management Service sviluppatori.
Passaggio 4: Aggiornare la chiave di crittografia di una tabella esistente
Puoi anche utilizzare la console Amazon Keyspaces o CQL modificare le chiavi di crittografia di una tabella esistente tra una Chiave di proprietà di AWS KMS chiave gestita dal cliente in qualsiasi momento.
Aggiorna una tabella esistente con la nuova chiave gestita dal cliente (console)
-
Nel pannello di navigazione, seleziona Tabelle.
-
Scegli la tabella che desideri aggiornare, quindi scegli la scheda Impostazioni aggiuntive.
-
Nella sezione Crittografia a riposo, scegli Gestisci crittografia per modificare le impostazioni di crittografia per la tabella.
In Scegli un AWS KMS key, scegli l'opzione Scegli una KMS chiave diversa (avanzata) e nel campo di ricerca scegli AWS KMS key o inserisci un Amazon Resource Name (ARN).
Nota
Se la chiave selezionata non è valida, consulta la sezione Risoluzione dei problemi di accesso tramite chiave nella Guida per gli AWS Key Management Service sviluppatori.
In alternativa, puoi sceglierne una Chiave di proprietà di AWS per una tabella crittografata con una chiave gestita dal cliente.
-
Scegli Salva modifiche per salvare le modifiche alla tabella.
Aggiorna la chiave di crittografia utilizzata per una tabella esistente
Per modificare la chiave di crittografia di una tabella esistente, si utilizza l'ALTER
TABLE
istruzione per specificare una chiave gestita dal cliente per la crittografia a riposo. Assicurati di sostituire la chiave ARN con una ARN chiave valida con autorizzazioni concesse ad Amazon Keyspaces.
ALTER TABLE
my_keyspace.my_table
WITH CUSTOM_PROPERTIES = { 'encryption_specification':{ 'encryption_type': 'CUSTOMER_MANAGED_KMS_KEY', 'kms_key_identifier':'arn:aws:kms:eu-west-1:5555555555555:key/11111111-1111-111-1111-111111111111
' } };
Se ne ricevi unaInvalid Request Exception
, devi confermare che la chiave gestita dal cliente è valida e che Amazon Keyspaces dispone delle autorizzazioni richieste. Per confermare che la chiave è stata configurata correttamente, consulta Risoluzione dei problemi di accesso tramite chiave nella Guida per gli AWS Key Management Service sviluppatori.
Per riportare la chiave di crittografia all'opzione predefinita di crittografia a riposo con Chiavi di proprietà di AWS, è possibile utilizzare l'ALTER TABLE
istruzione come illustrato nell'esempio seguente.
ALTER TABLE
my_keyspace.my_table
WITH CUSTOM_PROPERTIES = { 'encryption_specification':{ 'encryption_type' : 'AWS_OWNED_KMS_KEY' } };
Fase 5: utilizza il contesto di crittografia Amazon Keyspaces nei log
Un contesto di crittografia è un set di coppie chiave-valore che contiene dati arbitrari non segreti. Quando includi un contesto di crittografia in una richiesta di crittografia dei dati, associa AWS KMS crittograficamente il contesto di crittografia ai dati crittografati. lo stesso contesto di crittografia sia necessario per decrittografare i dati.
Amazon Keyspaces utilizza lo stesso contesto di crittografia in tutte le operazioni AWS KMS crittografiche. Se utilizzi una chiave gestita dal cliente per proteggere la tua tabella Amazon Keyspaces, puoi utilizzare il contesto di crittografia per identificare l'uso della chiave gestita dal cliente nei record e nei log di controllo. Viene inoltre visualizzato in testo non crittografato nei log, ad esempio in logs for e AWS CloudTrailAmazon Logs. CloudWatch
Nelle sue richieste a AWS KMS, Amazon Keyspaces utilizza un contesto di crittografia con tre coppie chiave-valore.
"encryptionContextSubset": { "aws:cassandra:keyspaceName": "my_keyspace", "aws:cassandra:tableName": "mytable" "aws:cassandra:subscriberId": "111122223333" }
-
Keyspace: la prima coppia chiave-valore identifica lo spazio chiave che include la tabella che Amazon Keyspaces sta crittografando. La chiave è
aws:cassandra:keyspaceName
. Il valore è il nome del keyspace."aws:cassandra:keyspaceName": "
<keyspace-name>
"Per esempio:
"aws:cassandra:keyspaceName": "
my_keyspace
" -
Tabella: la seconda coppia chiave-valore identifica la tabella che Amazon Keyspaces sta crittografando. La chiave è
aws:cassandra:tableName
. Il valore è il nome della tabella."aws:cassandra:tableName": "
<table-name>
"Per esempio:
"aws:cassandra:tableName": "
my_table
" -
Account: la terza coppia chiave-valore identifica il. Account AWS La chiave è
aws:cassandra:subscriberId
. Il valore è l'ID dell'account."aws:cassandra:subscriberId": "
<account-id>
"Per esempio:
"aws:cassandra:subscriberId": "111122223333"
Fase 6: Configurare il monitoraggio con AWS CloudTrail
Se utilizzi una chiave gestita dal cliente per proteggere le tue tabelle Amazon Keyspaces, puoi utilizzare AWS CloudTrail i log per tenere traccia delle richieste a cui Amazon Keyspaces invia per tuo conto. AWS KMS
Le CreateGrant
richiesteGenerateDataKey
, DescribeKey
Decrypt
, e vengono discusse in questa sezione. Inoltre, Amazon Keyspaces utilizza un'RetireGrantoperazione per rimuovere una concessione quando elimini una tabella.
- GenerateDataKey
-
Amazon Keyspaces crea una chiave di tabella unica per crittografare i dati inattivi. Invia una GenerateDataKeyrichiesta a AWS KMS che specifica la KMS chiave per la tabella.
L'evento che registra l'operazione
GenerateDataKey
è simile a quello del seguente evento di esempio. L'utente è l'account del servizio Amazon Keyspaces. I parametri includono l'Amazon Resource Name (ARN) della chiave gestita dal cliente, un identificatore di chiave che richiede una chiave a 256 bit e il contesto di crittografia che identifica lo spazio delle chiavi, la tabella e il. Account AWS{ "eventVersion": "1.08", "userIdentity": { "type": "AWSService", "invokedBy": "AWS Internal" }, "eventTime": "2021-04-16T04:56:05Z", "eventSource": "kms.amazonaws.com", "eventName": "GenerateDataKey", "awsRegion": "us-east-1", "sourceIPAddress": "AWS Internal", "userAgent": "AWS Internal", "requestParameters": { "keySpec": "AES_256", "encryptionContext": { "aws:cassandra:keyspaceName": "my_keyspace", "aws:cassandra:tableName": "my_table", "aws:cassandra:subscriberId": "123SAMPLE012" }, "keyId": "arn:aws:kms:eu-west-1:5555555555555:key/11111111-1111-111-1111-111111111111" }, "responseElements": null, "requestID": "5e8e9cb5-9194-4334-aacc-9dd7d50fe246", "eventID": "49fccab9-2448-4b97-a89d-7d5c39318d6f", "readOnly": true, "resources": [ { "accountId": "123SAMPLE012", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:eu-west-1:5555555555555:key/11111111-1111-111-1111-111111111111" } ], "eventType": "AwsApiCall", "managementEvent": true, "eventCategory": "Management", "recipientAccountId": "123SAMPLE012", "sharedEventID": "84fbaaf0-9641-4e32-9147-57d2cb08792e" }
- DescribeKey
-
Amazon Keyspaces utilizza un'DescribeKeyoperazione per determinare se la KMS chiave selezionata esiste nell'account e nella regione.
L'evento che registra l'operazione
DescribeKey
è simile a quello del seguente evento di esempio. L'utente è l'account del servizio Amazon Keyspaces. I parametri includono la ARN chiave gestita dal cliente e un identificatore di chiave che richiede una chiave a 256 bit.{ "eventVersion": "1.08", "userIdentity": { "type": "IAMUser", "principalId": "AIDAZ3FNIIVIZZ6H7CFQG", "arn": "arn:aws:iam::123SAMPLE012:user/admin", "accountId": "123SAMPLE012", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "userName": "admin", "sessionContext": { "sessionIssuer": {}, "webIdFederationData": {}, "attributes": { "mfaAuthenticated": "false", "creationDate": "2021-04-16T04:55:42Z" } }, "invokedBy": "AWS Internal" }, "eventTime": "2021-04-16T04:55:58Z", "eventSource": "kms.amazonaws.com", "eventName": "DescribeKey", "awsRegion": "us-east-1", "sourceIPAddress": "AWS Internal", "userAgent": "AWS Internal", "requestParameters": { "keyId": "arn:aws:kms:eu-west-1:5555555555555:key/11111111-1111-111-1111-111111111111" }, "responseElements": null, "requestID": "c25a8105-050b-4f52-8358-6e872fb03a6c", "eventID": "0d96420e-707e-41b9-9118-56585a669658", "readOnly": true, "resources": [ { "accountId": "123SAMPLE012", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:eu-west-1:5555555555555:key/11111111-1111-111-1111-111111111111" } ], "eventType": "AwsApiCall", "managementEvent": true, "eventCategory": "Management", "recipientAccountId": "123SAMPLE012" }
- Decrypt
-
Quando accedi a una tabella Amazon Keyspaces, Amazon Keyspaces deve decrittografare la chiave della tabella in modo da poter decrittografare le chiavi sottostanti nella gerarchia. Quindi decrittografa i dati nella tabella. Per decrittografare la chiave della tabella, Amazon Keyspaces invia una richiesta Decrypt a AWS KMS che specifica la chiave per la tabella. KMS
L'evento che registra l'operazione
Decrypt
è simile a quello del seguente evento di esempio. L'utente è il tuo Account AWS principale che accede alla tabella. I parametri includono la chiave crittografata della tabella (come blob di testo cifrato) e il contesto di crittografia che identifica la tabella e il. Account AWS AWS KMS ricava l'ID della chiave gestita dal cliente dal testo cifrato.{ "eventVersion": "1.08", "userIdentity": { "type": "AWSService", "invokedBy": "AWS Internal" }, "eventTime": "2021-04-16T05:29:44Z", "eventSource": "kms.amazonaws.com", "eventName": "Decrypt", "awsRegion": "us-east-1", "sourceIPAddress": "AWS Internal", "userAgent": "AWS Internal", "requestParameters": { "encryptionContext": { "aws:cassandra:keyspaceName": "my_keyspace", "aws:cassandra:tableName": "my_table", "aws:cassandra:subscriberId": "123SAMPLE012" }, "encryptionAlgorithm": "SYMMETRIC_DEFAULT" }, "responseElements": null, "requestID": "50e80373-83c9-4034-8226-5439e1c9b259", "eventID": "8db9788f-04a5-4ae2-90c9-15c79c411b6b", "readOnly": true, "resources": [ { "accountId": "123SAMPLE012", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:eu-west-1:5555555555555:key/11111111-1111-111-1111-111111111111" } ], "eventType": "AwsApiCall", "managementEvent": true, "eventCategory": "Management", "recipientAccountId": "123SAMPLE012", "sharedEventID": "7ed99e2d-910a-4708-a4e3-0180d8dbb68e" }
- CreateGrant
-
Quando utilizzi una chiave gestita dal cliente per proteggere la tua tabella Amazon Keyspaces, Amazon Keyspaces utilizza le concessioni per consentire al servizio di eseguire attività continue di protezione dei dati, manutenzione e durabilità. Queste sovvenzioni non sono obbligatorie. Chiavi di proprietà di AWS
Le concessioni create da Amazon Keyspaces sono specifiche per una tabella. Il principale della CreateGrantrichiesta è l'utente che ha creato la tabella.
L'evento che registra l'operazione
CreateGrant
è simile a quello del seguente evento di esempio. I parametri includono la ARN chiave gestita dal cliente per la tabella, il principale beneficiario e il principale ritirante (il servizio Amazon Keyspaces) e le operazioni coperte dalla sovvenzione. Include anche un vincolo che richiede che tutte le operazioni di crittografia utilizzino il contesto di crittografia specificato.{ "eventVersion": "1.08", "userIdentity": { "type": "IAMUser", "principalId": "AIDAZ3FNIIVIZZ6H7CFQG", "arn": "arn:aws:iam::arn:aws:kms:eu-west-1:5555555555555:key/11111111-1111-111-1111-111111111111:user/admin", "accountId": "arn:aws:kms:eu-west-1:5555555555555:key/11111111-1111-111-1111-111111111111", "accessKeyId": "AKIAI44QH8DHBEXAMPLE", "userName": "admin", "sessionContext": { "sessionIssuer": {}, "webIdFederationData": {}, "attributes": { "mfaAuthenticated": "false", "creationDate": "2021-04-16T04:55:42Z" } }, "invokedBy": "AWS Internal" }, "eventTime": "2021-04-16T05:11:10Z", "eventSource": "kms.amazonaws.com", "eventName": "CreateGrant", "awsRegion": "us-east-1", "sourceIPAddress": "AWS Internal", "userAgent": "AWS Internal", "requestParameters": { "keyId": "a7d328af-215e-4661-9a69-88c858909f20", "operations": [ "DescribeKey", "GenerateDataKey", "Decrypt", "Encrypt", "ReEncryptFrom", "ReEncryptTo", "RetireGrant" ], "constraints": { "encryptionContextSubset": { "aws:cassandra:keyspaceName": "my_keyspace", "aws:cassandra:tableName": "my_table", "aws:cassandra:subscriberId": "123SAMPLE012" } }, "retiringPrincipal": "cassandratest.us-east-1.amazonaws.com", "granteePrincipal": "cassandratest.us-east-1.amazonaws.com" }, "responseElements": { "grantId": "18e4235f1b07f289762a31a1886cb5efd225f069280d4f76cd83b9b9b5501013" }, "requestID": "b379a767-1f9b-48c3-b731-fb23e865e7f7", "eventID": "29ee1fd4-28f2-416f-a419-551910d20291", "readOnly": false, "resources": [ { "accountId": "123SAMPLE012", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:eu-west-1:5555555555555:key/11111111-1111-111-1111-111111111111" } ], "eventType": "AwsApiCall", "managementEvent": true, "eventCategory": "Management", "recipientAccountId": "123SAMPLE012" }