Specifica della crittografia lato server con AWS KMS (SSE-KMS) per i caricamenti di nuovi oggetti nei bucket della directory
Per i bucket di directory, per crittografare i dati con la crittografia lato server, è possibile utilizzare la crittografia lato server con le chiavi gestite da Amazon S3 (SSE-S3) (l'impostazione predefinita) o la crittografia lato server con le chiavi AWS Key Management Service (AWS KMS) (SSE-KMS). Si consiglia di utilizzare la configurazione di crittografia predefinita del bucket e di non sovrascrivere la crittografia predefinita del bucket nelle richieste CreateSession o nelle richieste di oggetti PUT. I nuovi oggetti vengono quindi crittografati automaticamente con le impostazioni di crittografia desiderate. Per ulteriori informazioni sui comportamenti di sovrascrittura della crittografia nei bucket di directory, consulta Specifica della crittografia lato server con AWS KMS per il caricamento di nuovi oggetti.
Tutti i bucket Amazon S3 hanno la crittografia configurata per impostazione predefinita e tutti i nuovi oggetti caricati in un bucket S3 vengono automaticamente crittografati quando sono a riposo. La crittografia lato server con le chiavi gestite da Amazon S3 (SSE-S3) è la configurazione predefinita della crittografia per ogni bucket di Amazon S3. Se si desidera specificare un tipo di crittografia diverso per un bucket di directory, è possibile utilizzare la crittografia lato server con chiavi AWS Key Management Service (AWS KMS) (SSE-KMS). Per crittografare i nuovi oggetti in un bucket di directory con SSE-KMS, è necessario specificare SSE-KMS come configurazione di crittografia predefinita del bucket di directory con una chiave KMS (in particolare, una chiave gestita dal cliente). Chiave gestita da AWS (aws/s3) non è supportato. La configurazione di SSE-KMS può supportare solo 1 chiave gestita dal cliente per ogni bucket di directory per tutta la durata del bucket. Dopo aver specificato una chiave gestita dal cliente per SSE-KMS, non è possibile sovrascrivere la chiave gestita dal cliente per la configurazione SSE-KMS del bucket. Quindi, quando si specificano le impostazioni di crittografia lato server per i nuovi oggetti con SSE-KMS, è necessario assicurarsi che la chiave di crittografia sia la stessa chiave gestita dal cliente specificata per la configurazione di crittografia predefinita del bucket della directory. Per utilizzare una nuova chiave gestita dal cliente per i propri dati, si consiglia di copiare gli oggetti esistenti in un nuovo bucket della directory con una nuova chiave gestita dal cliente.
È possibile applicare la crittografia quando stai caricando un nuovo oggetto o copiando un oggetto esistente. Se si modifica la crittografia di un oggetto, viene creato un nuovo oggetto per sostituire quello precedente.
È possibile specificare SSE-KMS utilizzando le operazioni della REST API, gli SDK AWS e AWS Command Line Interface (AWS CLI).
Nota
-
Per i bucket di directory, i comportamenti di esclusione della crittografia sono i seguenti:
-
Quando si utilizza CreateSession con la REST API per autenticare e autorizzare le richieste API dell'endpoint di zona, ad eccezione di CopyObject e UploadPartCopy, è possibile sovrascrivere le impostazioni di crittografia a SSE-S3 o a SSE-KMS solo se in precedenza è stata specificata la crittografia predefinita del bucket con SSE-KMS.
-
Quando si utilizza CreateSession con AWS CLI o gli AWS SDK per autenticare e autorizzare le richieste API degli endpoint di zona, ad eccezione di CopyObject e UploadPartCopy, non è possibile sovrascrivere le impostazioni di crittografia.
-
Quando si effettuano richieste di CopyObject, è possibile sovrascrivere le impostazioni di crittografia a SSE-S3 o a SSE-KMS solo se in precedenza è stata specificata la crittografia predefinita del bucket con SSE-KMS. Quando si effettuano richieste di UploadPartCopy, non è possibile sovrascrivere le impostazioni di crittografia.
-
-
È possibile utilizzare AWS KMS keys per più Regioni in Amazon S3. Tuttavia, Amazon S3 attualmente tratta le chiavi multiregionali come se fossero chiavi monoregionali e non utilizza le caratteristiche multiregionali della chiave. Per ulteriori informazioni, consulta Utilizzo delle chiavi multi-regione nella Guida per gli sviluppatori di AWS Key Management Service.
Se si desidera utilizzare una chiave KMS di proprietà di un altro account, è necessario avere l'autorizzazione a utilizzarla. Per ulteriori informazioni sulle autorizzazioni tra account per le chiavi KMS, vedi Creazione di chiavi KMS utilizzabili da altri account nella Guida per gli sviluppatori di AWS Key Management Service.
Nota
Per ogni bucket di directory è supportata una sola chiave gestita dal cliente per tutta la durata del bucket. Chiave gestita da AWS (aws/s3) non è supportato. Dopo aver specificato SSE-KMS come configurazione di crittografia predefinita del bucket con una chiave gestita dal cliente, non è possibile modificare la chiave gestita dal cliente per la configurazione SSE-KMS del bucket.
Per le operazioni API di endpoint di zona (a livello di oggetto), ad eccezione di CopyObject e UploadPartCopy, si autenticano e autorizzano le richieste tramite CreateSession per ottenere una bassa latenza. Si consiglia di utilizzare la crittografia predefinita del bucket con le configurazioni di crittografia desiderate e di non sovrascrivere la crittografia predefinita del bucket nelle richieste CreateSession o nelle richieste di oggetti PUT. I nuovi oggetti vengono quindi crittografati automaticamente con le impostazioni di crittografia desiderate. Per crittografare i nuovi oggetti in un bucket di directory con SSE-KMS, è necessario specificare SSE-KMS come configurazione di crittografia predefinita del bucket di directory con una chiave KMS (in particolare, una chiave gestita dal cliente). Quindi, quando viene creata una sessione per le operazioni API dell'endpoint di zona, i nuovi oggetti vengono automaticamente crittografati e decrittografati con SSE-KMS e S3 Bucket Keys durante la sessione. Per ulteriori informazioni sui comportamenti di sovrascrittura della crittografia nei bucket di directory, consulta Specifica della crittografia lato server con AWS KMS per il caricamento di nuovi oggetti.
Nelle chiamate API dell’endpoint di zona (eccetto CopyObject e UploadPartCopy) utilizzando la REST API, non è possibile sovrascrivere i valori delle impostazioni di crittografia (x-amz-server-side-encryption, x-amz-server-side-encryption-aws-kms-key-id, x-amz-server-side-encryption-context, e x-amz-server-side-encryption-bucket-key-enabled) dalla richiesta CreateSession. Non è necessario specificare esplicitamente i valori delle impostazioni di crittografia nelle chiamate API dell'endpoint di zona; Amazon S3 utilizzerà i valori delle impostazioni di crittografia dalla richiesta CreateSession per proteggere i nuovi oggetti nel bucket della directory.
Nota
Quando si utilizzano gli SDK AWS CLI o AWS, per CreateSession, il token di sessione si aggiorna automaticamente per evitare interruzioni del servizio quando una sessione scade. Gli SDK AWS CLI o AWS utilizzano la configurazione di cifratura predefinita del bucket per la richiesta CreateSession. Non è supportato l'annullamento dei valori delle impostazioni di crittografia nella richiesta CreateSession. Inoltre, nelle chiamate API dell'endpoint di zona (tranne CopyObject e UploadPartCopy), non è supportato sovrascrivere i valori delle impostazioni di crittografia dalla richiesta CreateSession.
Per CopyObject, per crittografare le copie di nuovi oggetti in un bucket di directory con SSE-KMS, è necessario specificare SSE-KMS come configurazione di crittografia predefinita del bucket di directory con una chiave KMS (in particolare, una chiave gestita dal cliente). Quindi, quando si specificano le impostazioni di crittografia lato server per le nuove copie di oggetti con SSE-KMS, è necessario assicurarsi che la chiave di crittografia sia la stessa chiave gestita dal cliente specificata per la configurazione di crittografia predefinita del bucket della directory. Per UploadPartCopy, per crittografare le nuove copie di parti di oggetti in un bucket di directory con SSE-KMS, è necessario specificare SSE-KMS come configurazione di crittografia predefinita del bucket di directory con una chiave KMS (in particolare, una chiave gestita dal cliente). Non è possibile specificare le impostazioni di crittografia lato server per le nuove copie di parti di oggetti con SSE-KMS nelle intestazioni della richiesta UploadPartCopy. Inoltre, le impostazioni di crittografia fornite nella richiesta CreateMultipartUpload devono corrispondere alla configurazione di crittografia predefinita del bucket di destinazione.
Argomenti
Operazioni REST API di Amazon S3 che supportano SSE-KMS
Le seguenti operazioni REST API a livello di oggetto nei bucket di directory accettano le intestazioni di richiesta x-amz-server-side-encryption, x-amz-server-side-encryption-aws-kms-key-ide x-amz-server-side-encryption-context.
-
CreateSession – Quando si utilizzano le operazioni API di endpoint di zona (a livello di oggetto) (tranne CopyObject e UploadPartCopy), è possibile specificare queste intestazioni di richiesta.
-
PutObject: quando carichi i dati utilizzando l'operazione API
PUT, è possibile specificare queste intestazioni di richiesta. -
CopyObject – Quando si copia un oggetto, si ha un oggetto di origine e un oggetto di destinazione. Quando si passano le intestazioni SSE-KMS con l'operazione
CopyObject, queste vengono applicate solo all'oggetto di destinazione. -
CreateMultipartUpload – Quando si caricano oggetti di grandi dimensioni utilizzando l'operazione API di caricamento multiparte, è possibile specificare queste intestazioni. Queste intestazioni vengono specificate nella richiesta
CreateMultipartUpload.
Le intestazioni di risposta delle seguenti operazioni REST API restituiscono l'intestazione x-amz-server-side-encryption quando un oggetto viene memorizzato utilizzando la crittografia lato server.
Importante
-
Tutte le richieste di
GETePUTper un oggetto protetto da AWS KMS falliscono se non si effettuano queste richieste utilizzando il Transport Layer Security (TLS) o la Signature Version 4. -
Se l'oggetto utilizza le chiavi SSE-KMS, non inviare intestazioni di richiesta di crittografia per le richieste
GETeHEADper evitare di ricevere un erroreHTTP 400 BadRequest.
Contesto di crittografia (x-amz-server-side-encryption-context)
Se si specifica x-amz-server-side-encryption:aws:kms, l'API di Amazon S3 consente di fornire facoltativamente un contesto di crittografia esplicito con l'intestazione x-amz-server-side-encryption-context. Per i bucket di directory, un contesto di crittografia è un insieme di coppie chiave-valore che contengono informazioni contestuali sui dati. Il valore deve corrispondere al contesto di crittografia predefinito: il nome della risorsa Amazon (ARN) per il bucket. Non è supportato un valore aggiuntivo del contesto di crittografia.
Per informazioni sul contesto di crittografia nei bucket di directory, consulta Contesto di crittografia. Per informazioni generali sul contesto di crittografia, consulta Concetti di AWS Key Management Service: Contesto di crittografia nella Guida per gli sviluppatori di AWS Key Management Service.
ID chiave AWS KMS (x-amz-server-side-encryption-aws-kms-key-id)
Puoi utilizzare l'intestazione x-amz-server-side-encryption-aws-kms-key-id per specificare l'ID della chiave gestita dal cliente utilizzata per proteggere i dati.
La configurazione di SSE-KMS può supportare solo 1 chiave gestita dal cliente per ogni bucket di directory per tutta la durata del bucket. Chiave gestita da AWS (aws/s3) non è supportato. Inoltre, dopo aver specificato una chiave gestita dal cliente per SSE-KMS, non è possibile sovrascrivere la chiave gestita dal cliente per la configurazione SSE-KMS del bucket.
È possibile identificare la chiave gestita dal cliente specificata per la configurazione SSE-KMS del bucket, nel modo seguente:
Si effettua una richiesta di operazione API
HeadObjectper trovare il valore dix-amz-server-side-encryption-aws-kms-key-idnella risposta.
Per utilizzare una nuova chiave gestita dal cliente per i propri dati, si consiglia di copiare gli oggetti esistenti in un nuovo bucket della directory con una nuova chiave gestita dal cliente.
Per informazioni sul contesto di crittografia nei bucket di directory, consulta AWS KMS keys.
Chiavi bucket S3 (x-amz-server-side-encryption-aws-bucket-key-enabled)
Le S3 Bucket Keys sono sempre abilitate per le operazioni GET e PUT in un bucket di directory e non possono essere disabilitate. Le chiavi dei bucket S3 non sono supportate quando si copiano oggetti con crittografia SSE-KMS da bucket per uso generico a bucket di directory, da bucket di directory a bucket per uso generico o tra bucket di directory, tramite CopyObject, UploadPartCopy, l'operazione Copy in Operazioni in batch o i processi import. In questo caso, Amazon S3 effettua una chiamata a AWS KMS ogni volta che viene effettuata una richiesta di copia per un oggetto crittografato da KMS. Per informazioni sulle chiavi dei bucket S3 nei bucket di directory, consulta Contesto di crittografia.
Nota
Quando si utilizza AWS CLI, per CreateSession, il token di sessione si aggiorna automaticamente per evitare interruzioni del servizio quando una sessione scade. Non è supportato sovrascrivere i valori delle impostazioni di crittografia per la richiesta CreateSession. Inoltre, nelle chiamate API dell'endpoint di zona (tranne CopyObject e UploadPartCopy), non è supportato sovrascrivere i valori delle impostazioni di crittografia dalla richiesta CreateSession.
Per crittografare i nuovi oggetti in un bucket di directory con SSE-KMS, è necessario specificare SSE-KMS come configurazione di crittografia predefinita del bucket di directory con una chiave KMS (in particolare, una chiave gestita dal cliente). Quindi, quando viene creata una sessione per le operazioni API dell'endpoint di zona, i nuovi oggetti vengono automaticamente crittografati e decrittografati con SSE-KMS e S3 Bucket Keys durante la sessione.
Per utilizzare i seguenti esempi di comandi AWS CLI, sostituisci con le tue informazioni.user input
placeholders
Quando carichi un nuovo oggetto o copi un oggetto esistente, puoi specificare l'uso della crittografia lato server con chiavi AWS KMS per crittografare i dati. A tal fine, utilizzare il comando put-bucket-encryption per impostare la configurazione di crittografia predefinita del bucket della directory come SSE-KMS (aws:kms). In particolare, aggiungi l'intestazione --server-side-encryption aws:kms alla richiesta. Utilizza --ssekms-key-id per aggiungere la chiave AWS KMS gestita dal cliente che hai creato. Se si specifica example-key-id--server-side-encryption
aws:kms, è necessario fornire un ID chiave AWS KMS della chiave gestita dal cliente. I bucket di directory non utilizzano una chiave gestita da AWS. Per un comando di esempio, consulta Utilizzo di AWS CLI.
Quindi, quando si carica un nuovo oggetto con il seguente comando, Amazon S3 utilizza le impostazioni del bucket per la crittografia predefinita per crittografare l'oggetto in modo predefinito.
aws s3api put-object --bucket--keybucket-base-name--zone-id--x-s3example-object-key--bodyfilepath
Non è necessario aggiungere esplicitamente -\-bucket-key-enabled nei comandi delle operazioni API dell'endpoint di zona. Le S3 Bucket Keys sono sempre abilitate per le operazioni GET e PUT in un bucket di directory e non possono essere disabilitate. Le chiavi dei bucket S3 non sono supportate quando si copiano oggetti con crittografia SSE-KMS da bucket per uso generico a bucket di directory, da bucket di directory a bucket per uso generico o tra bucket di directory, tramite CopyObject, UploadPartCopy, l'operazione Copy in Operazioni in batch o i processi import. In questo caso, Amazon S3 effettua una chiamata a AWS KMS ogni volta che viene effettuata una richiesta di copia per un oggetto crittografato da KMS.
È possibile copiare un oggetto da un bucket di origine (ad esempio, un bucket per uso generico) in un nuovo bucket (ad esempio, un bucket di directory) e utilizzare la crittografia SSE-KMS per gli oggetti di destinazione. A tal fine, utilizza il comando put-bucket-encryption per impostare la configurazione di crittografia predefinita del bucket di destinazione (ad esempio, un bucket di directory) come SSE-KMS (aws:kms). Per un comando di esempio, consulta Utilizzo di AWS CLI. Quindi, quando si copia un oggetto con il seguente comando, Amazon S3 utilizza le impostazioni del bucket per la crittografia predefinita per crittografare l'oggetto per impostazione predefinita.
aws s3api copy-object --copy-source/amzn-s3-demo-bucketexample-object-key--bucket--keybucket-base-name--zone-id--x-s3example-object-key
Quando utilizzi gli SDK AWS puoi richiedere ad Amazon S3 di usare AWS KMS keys per la crittografia lato server. I seguenti esempi mostrano come utilizzare SSE-KMS con gli SDK AWS per Java e .NET. Per informazioni sugli altri SDK, consulta Codice di esempio e librerie
Nota
Quando si utilizzano gli SDK AWS, per CreateSession, il token di sessione si aggiorna automaticamente per evitare interruzioni del servizio quando una sessione scade. Non è supportato sovrascrivere i valori delle impostazioni di crittografia per la richiesta CreateSession. Inoltre, nelle chiamate API dell'endpoint di zona (tranne CopyObject e UploadPartCopy), non è supportato sovrascrivere i valori delle impostazioni di crittografia dalla richiesta CreateSession.
Per crittografare i nuovi oggetti in un bucket di directory con SSE-KMS, è necessario specificare SSE-KMS come configurazione di crittografia predefinita del bucket di directory con una chiave KMS (in particolare, una chiave gestita dal cliente). Quindi, quando viene creata una sessione per le operazioni API dell'endpoint di zona, i nuovi oggetti vengono automaticamente crittografati e decrittografati con SSE-KMS e S3 Bucket Keys durante la sessione.
Per ulteriori informazioni sull'utilizzo degli SDK di AWS per impostare la configurazione di crittografia predefinita di un bucket di directory come SSE-KMS, consulta Uso degli AWS SDK.
Importante
Quando utilizzi una AWS KMS key per la crittografia lato server in Amazon S3, devi scegliere una chiave KMS di crittografia simmetrica. Amazon S3 supporta solo chiavi KMS di crittografia simmetrica. Per ulteriori informazioni sulle chiavi, consulta Chiavi KMS di crittografia simmetrica nella Guida per gli sviluppatori di AWS Key Management Service.
Per ulteriori informazioni sulla creazione di chiavi gestite dal cliente, consulta Programmazione dell'API (API)AWS KMS nella Guida per Developer di AWS Key Management Service.