

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

# Protezione dei dati con la crittografia lato server
<a name="serv-side-encryption"></a>

**Importante**  
Come [annunciato il 19 novembre 2025,](https://aws.amazon.com/blogs/storage/advanced-notice-amazon-s3-to-disable-the-use-of-sse-c-encryption-by-default-for-all-new-buckets-and-select-existing-buckets-in-april-2026/) Amazon Simple Storage Service sta implementando una nuova impostazione di sicurezza predefinita per i bucket che disabilita automaticamente la crittografia lato server con chiavi fornite dal cliente (SSE-C) per tutti i nuovi bucket generici. Per i bucket esistenti senza oggetti crittografati SSE-C, Amazon S3 disabiliterà anche SSE-C per tutte le nuove richieste di scrittura. Account AWS Infatti, Account AWS con l'utilizzo di SSE-C, Amazon S3 non modificherà la configurazione di crittografia dei bucket su nessuno dei bucket esistenti in tali account. Questa implementazione è iniziata il 6 aprile 2026 e sarà completata nelle prossime settimane in 37 AWS regioni, tra cui AWS Cina e regioni AWS GovCloud (Stati Uniti).  
Con queste modifiche, le applicazioni che richiedono la crittografia SSE-C devono abilitare deliberatamente SSE-C utilizzando l'operazione [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html)API dopo la creazione di un nuovo bucket. Per ulteriori informazioni su questa modifica, vedere. [Domande frequenti sull'impostazione SSE-C predefinita per i nuovi bucket](default-s3-c-encryption-setting-faq.md)

**Importante**  
Amazon S3 ora applica la crittografia lato server con chiavi gestite da Amazon S3 (SSE-S3) come livello di base della crittografia per ogni bucket di Amazon S3. A partire dal 5 gennaio 2023, tutti i caricamenti di nuovi oggetti su Amazon S3 vengono crittografati automaticamente senza costi aggiuntivi e senza alcun impatto sulle prestazioni. Lo stato di crittografia automatico per la configurazione di crittografia predefinita del bucket S3 e per il caricamento di nuovi oggetti è disponibile nei CloudTrail log, in S3 Inventory, S3 Storage Lens, nella console Amazon S3 e come intestazione di risposta dell'API Amazon S3 aggiuntiva nella e. AWS CLI AWS SDKs Per ulteriori informazioni, consulta [Domande frequenti sulla crittografia predefinita](https://docs.aws.amazon.com/AmazonS3/latest/userguide/default-encryption-faq.html).

La crittografia lato server è la crittografia dei dati nella posizione di destinazione eseguita dall'applicazione o dal servizio che li riceve. Amazon S3 crittografa i dati a livello di oggetto mentre li scrive su dischi nei data AWS center e li decrittografa per te quando vi accedi. Se la richiesta è autenticata e sono disponibili le autorizzazioni per l'accesso, non c'è differenza nelle modalità di accesso agli oggetti, crittografati o meno. Ad esempio, se si condividono gli oggetti tramite un URL prefirmato, quest'ultimo funziona nello stesso modo, sia per i dati crittografati che per quelli non crittografati. Inoltre, quando si richiede un elenco degli oggetti nel bucket, le operazioni API restituisce l'elenco di tutti gli oggetti, crittografati o meno.

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. Per utilizzare un diverso tipo di crittografia, puoi specificare il tipo di crittografia lato server da utilizzare nelle richieste `PUT` S3 oppure aggiornare la configurazione di crittografia predefinita nel bucket di destinazione. 

Se desideri specificare un tipo di crittografia diverso nelle tue `PUT` richieste, puoi utilizzare la crittografia lato server con chiavi AWS Key Management Service (AWS KMS) (SSE-KMS), la crittografia lato server a due livelli con AWS KMS chiavi (DSSE-KMS) o la crittografia lato server con chiavi fornite dal cliente (SSE-C). Per impostare una configurazione di crittografia predefinita diversa nel bucket di destinazione puoi utilizzare SSE-KMS o DSSE-KMS.

Per ulteriori informazioni su come modificare la configurazione di crittografia predefinita per i bucket per uso generico, consulta [Configurazione della crittografia predefinita](default-bucket-encryption.md). 

Quando modifichi la configurazione di crittografia predefinita del bucket in SSE-KMS, il tipo di crittografia degli oggetti Amazon S3 esistenti nel bucket non viene modificato. Per modificare il tipo di crittografia degli oggetti preesistenti dopo aver aggiornato la configurazione di crittografia predefinita a SSE-KMS, puoi utilizzare Operazioni in batch Amazon S3. Si fornisce a Operazioni in batch S3 un elenco di oggetti e Operazioni in batch richiama la rispettiva operazione API. È possibile utilizzare l’azione [Copia oggetti](batch-ops-copy-object.md) per copiare gli oggetti esistenti, scrivendoli nello stesso bucket degli oggetti crittografati SSE-KMS. Un solo processo di operazioni in batch può eseguire l'operazione specificata su miliardi di oggetti. Per ulteriori informazioni, consulta [Esecuzione di operazioni sugli oggetti in blocco con le operazioni in batch](batch-ops.md) e il post [Come crittografare retroattivamente gli oggetti esistenti in Amazon S3 utilizzando Inventario S3, Amazon Athena e Operazioni in batch S3](https://aws.amazon.com/blogs/security/how-to-retroactively-encrypt-existing-objects-in-amazon-s3-using-s3-inventory-amazon-athena-and-s3-batch-operations/) nel *Blog dell’archiviazione AWS *. 

**Nota**  
Non è possibile applicare contemporaneamente tipi diversi di crittografia lato server a uno stesso oggetto.

Se devi crittografare gli oggetti esistenti, usa Operazioni in batch S3 e S3 Inventory. Per ulteriori informazioni, consulta [Crittografia di oggetti con Operazioni in batch Amazon S3](https://aws.amazon.com/blogs/storage/encrypting-objects-with-amazon-s3-batch-operations/) e [Esecuzione di operazioni sugli oggetti in blocco con le operazioni in batch](batch-ops.md).

Quando si archiviano dati in Amazon S3, sono disponibili quattro opzioni reciprocamente esclusive per la crittografia lato server, a seconda di come si sceglie di gestire le chiavi di crittografia e del numero di livelli di crittografia da applicare.

**Crittografia lato server con chiavi gestite da Amazon S3 (SSE-S3)**  
Tutti i bucket Amazon S3 hanno la crittografia configurata per impostazione predefinita. L'opzione predefinita per la crittografia lato server prevede le chiavi gestite da Amazon S3 (SSE-S3). Ogni oggetto è crittografato con una chiave univoca. Come ulteriore tutela, SSE-S3 esegue la crittografia della chiave con una chiave root che ruota con regolarità. Per crittografare i dati, SSE-S3 utilizza una delle cifrature di blocco più complesse disponibili, lo standard di crittografia avanzata a 256 bit (AES-256). Per ulteriori informazioni, consulta [Uso della crittografia lato server con chiavi gestite da Amazon S3 (SSE-S3)](UsingServerSideEncryption.md).

**Crittografia lato server con chiavi () (SSE-KMS) AWS Key Management Service AWS KMS**  
La crittografia lato server con AWS KMS keys (SSE-KMS) viene fornita tramite l'integrazione del servizio con AWS KMS Amazon S3. Con AWS KMS, hai un maggiore controllo sulle tue chiavi. Ad esempio, puoi visualizzare le chiavi separate, modificare le policy di controllo e seguire le chiavi in AWS CloudTrail. Inoltre, puoi creare e gestire chiavi gestite dal cliente oppure utilizzare chiavi Chiavi gestite da AWS create appositamente per te, il tuo servizio e la tua regione. Per ulteriori informazioni, consulta [Utilizzo della crittografia lato server con chiavi (SSE-KMS) AWS KMS](UsingKMSEncryption.md).

**Crittografia lato server a doppio livello con AWS Key Management Service (AWS KMS) chiavi (DSSE-KMS)**  
La crittografia lato server a doppio livello con AWS KMS keys (DSSE-KMS) è simile a SSE-KMS, ma DSSE-KMS applica due livelli indipendenti di crittografia AES-256 anziché un livello: prima utilizza una chiave di crittografia dei dati, quindi utilizza una chiave di crittografia separata gestita da Amazon S3. AWS KMS Poiché entrambi i livelli di crittografia vengono applicati a un oggetto sul lato server, è possibile utilizzare un'ampia gamma di Servizi AWS strumenti per analizzare i dati in S3 utilizzando un metodo di crittografia in grado di soddisfare i requisiti di conformità per la crittografia multistrato. Per ulteriori informazioni, consulta [Utilizzo della crittografia lato server a due livelli con AWS KMS chiavi (DSSE-KMS)](UsingDSSEncryption.md).

**Crittografia lato server con chiavi fornite dal cliente (SSE-C)**  
Con la crittografia lato server con chiavi fornite dal cliente (SSE-C) gestisci le chiavi di crittografia, mentre Amazon S3 si occupa di crittografare gli oggetti durante la scrittura su disco e di decrittarli al momento dell'accesso. Per ulteriori informazioni, consulta [Utilizzo della crittografia lato server con chiavi fornite dal cliente (SSE-C)](ServerSideEncryptionCustomerKeys.md).

**Nota**  
Quando utilizzi punti di accesso per FSx file system Amazon che utilizzano punti di accesso S3, hai un'opzione per la crittografia lato server.  
Tutti i FSx file system di Amazon hanno la crittografia configurata per impostazione predefinita e sono crittografati a riposo con chiavi gestite tramite AWS Key Management Service. I dati vengono automaticamente crittografati e decrittografati sul file system durante la scrittura e la lettura nel file system. Questi processi vengono gestiti in modo trasparente da Amazon. FSx

# Impostazione del comportamento predefinito della crittografia lato server per i bucket Amazon S3
<a name="bucket-encryption"></a>

**Importante**  
Amazon S3 ora applica la crittografia lato server con chiavi gestite da Amazon S3 (SSE-S3) come livello di base della crittografia per ogni bucket di Amazon S3. A partire dal 5 gennaio 2023, tutti i caricamenti di nuovi oggetti su Amazon S3 vengono crittografati automaticamente senza costi aggiuntivi e senza alcun impatto sulle prestazioni. Lo stato di crittografia automatico per la configurazione di crittografia predefinita del bucket S3 e per il caricamento di nuovi oggetti è disponibile nei CloudTrail log, in S3 Inventory, S3 Storage Lens, nella console Amazon S3 e come intestazione di risposta dell'API Amazon S3 aggiuntiva nella e. AWS CLI AWS SDKs Per ulteriori informazioni, consulta [Domande frequenti sulla crittografia predefinita](https://docs.aws.amazon.com/AmazonS3/latest/userguide/default-encryption-faq.html).

La crittografia è configurata per tutti i bucket Amazon S3 per impostazione predefinita; gli oggetti vengono crittografati automaticamente utilizzando la crittografia lato server con chiavi gestite da Amazon S3 (SSE-S3). Questa impostazione di crittografia si applica a tutti gli oggetti nei bucket Amazon S3.

Se hai bisogno di un maggiore controllo sulle tue chiavi, come la gestione della rotazione delle chiavi e le concessioni delle policy di accesso, puoi scegliere di utilizzare la crittografia lato server con chiavi AWS Key Management Service (AWS KMS) (SSE-KMS) o la crittografia lato server a due livelli con AWS KMS chiavi (DSSE-KMS). Per ulteriori informazioni sulla modifica delle chiavi KMS, consulta [Modifica delle chiavi](https://docs.aws.amazon.com/kms/latest/developerguide/editing-keys.html) nella *Guida per gli sviluppatori di AWS Key Management Service *. 

**Nota**  
Abbiamo modificato i bucket per crittografare automaticamente i caricamenti di nuovi oggetti. Se in precedenza hai creato un bucket senza crittografia predefinita, Amazon S3 abiliterà la crittografia per impostazione predefinita per il bucket utilizzando SSE-S3. Non verranno apportate modifiche alla configurazione della crittografia predefinita per un bucket con chiavi SSE-S3 o SSE-KMS già configurate. Per crittografare gli oggetti con SSE-KMS, è necessario modificare il tipo di crittografia nelle impostazioni del bucket. Per ulteriori informazioni, consulta [Utilizzo della crittografia lato server con chiavi (SSE-KMS) AWS KMS](UsingKMSEncryption.md). 

Quando configuri il bucket per utilizzare la crittografia predefinita con SSE-KMS, puoi anche abilitare S3 Bucket Keys per ridurre il traffico delle richieste da Amazon S3 e ridurre il costo della crittografia. AWS KMS Per ulteriori informazioni, consulta [Riduzione del costo di SSE-KMS con le chiavi bucket Amazon S3](bucket-key.md).

Per identificare i bucket in cui è abilitato SSE-KMS per la crittografia predefinita, puoi utilizzare i parametri di Amazon S3 Storage Lens. S3 Storage Lens è una funzionalità di analisi dell'archiviazione su cloud che puoi utilizzare per avere una panoramica completa a livello di organizzazione sull'utilizzo e sulle attività relative all'archiviazione di oggetti. Per ulteriori informazioni, consulta [Utilizzo di S3 Storage Lens per proteggere i dati](https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-lens-data-protection.html?icmpid=docs_s3_user_guide_bucket-encryption.html).

Quando utilizzi la crittografia lato server, Amazon S3 esegue la crittografia di un oggetto prima di salvarlo su disco e lo decritta al momento del download. Per ulteriori informazioni sulla protezione dei dati mediante la crittografia lato server e la gestione delle chiavi di crittografia, consulta [Protezione dei dati con la crittografia lato server](serv-side-encryption.md).

Per ulteriori informazioni sulle autorizzazioni richieste per la crittografia predefinita, consulta [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html) nella *Documentazione di riferimento delle API di Amazon Simple Storage Service*.

Puoi configurare il comportamento di crittografia predefinito di Amazon S3 per un bucket S3 utilizzando la console Amazon S3, l'API REST di AWS SDKs Amazon S3 e l'interfaccia a riga di comando (). AWS AWS CLI

**Crittografia di oggetti esistenti**  
Per crittografare gli oggetti Amazon S3 non crittografati esistenti, puoi utilizzare la funzionalità Operazioni in batch Amazon S3. Si fornisce a Operazioni in batch S3 un elenco di oggetti su cui operare e Operazioni in batch chiama le rispettive API per eseguire l'operazione specificata. È possibile utilizzare l'operazione di [copia delle operazioni in batch](https://docs.aws.amazon.com/AmazonS3/latest/userguide/batch-ops-copy-object.html) per copiare gli oggetti non crittografati esistenti e scrivere i nuovi oggetti crittografati nello stesso bucket. Un solo processo di operazioni in batch può eseguire l'operazione specificata su miliardi di oggetti. Per ulteriori informazioni, consulta [Esecuzione di operazioni sugli oggetti in blocco con le operazioni in batch](batch-ops.md) e il post del *Blog sull'archiviazione di AWS * [Crittografia di oggetti Amazon S3 esistenti con le operazioni in batch di Amazon S3](https://aws.amazon.com/blogs/storage/encrypting-objects-with-amazon-s3-batch-operations/).

Puoi anche crittografare gli oggetti esistenti utilizzando l'operazione API o il `CopyObject` comando. `copy-object` AWS CLI Per ulteriori informazioni, consulta il post del *Blog sull'archiviazione di AWS * [Crittografia di oggetti Amazon S3 esistenti con AWS CLI l](https://aws.amazon.com/blogs/storage/encrypting-existing-amazon-s3-objects-with-the-aws-cli/).

**Nota**  
I bucket Amazon S3 con la crittografia predefinita SSE-KMS non possono essere utilizzati come bucket di destinazione per [Registrazione delle richieste con registrazione dell'accesso al server](ServerLogs.md). Solo la crittografia predefinita SSE-S3 è supportata per i bucket di destinazione del log di accesso server.

## Utilizzo della crittografia SSE-KMS per operazioni multi-account
<a name="bucket-encryption-update-bucket-policy"></a>

Quando si utilizza la crittografia per operazioni multi-account, tieni presente quanto segue:
+ Se non viene fornito un AWS KMS key Amazon Resource Name (ARN) o un alias al momento della richiesta o tramite la configurazione di crittografia predefinita del bucket, viene utilizzata la Chiave gestita da AWS ()`aws/s3`.
+ Se stai caricando o accedendo a oggetti S3 utilizzando principi AWS Identity and Access Management (IAM) che sono gli stessi Account AWS della tua chiave KMS, puoi usare il (). Chiave gestita da AWS `aws/s3` 
+ Se desideri concedere l'accesso multi-account agli oggetti S3, utilizza una chiave gestita dal cliente. È possibile configurare la policy di una chiave gestita dal cliente per consentire l'accesso da un altro account.
+ Se si specifica una chiave KMS gestita dal cliente, si consiglia di utilizzare un ARN della chiave KMS completamente qualificato. Se invece utilizzi un alias di chiave KMS, AWS KMS risolve la chiave all'interno dell'account del richiedente. Ciò potrebbe comportare la crittografia dei dati con una chiave KMS di proprietà del richiedente e non del proprietario del bucket.
+ È necessario specificare una chiave per cui il richiedente ha ottenuto l'autorizzazione `Encrypt`. Per ulteriori informazioni, consulta l'argomento relativo all'[autorizzazione concessa agli utenti delle chiavi di utilizzare una chiave KMS per le operazioni di crittografia](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-users-crypto) nella *Guida per gli sviluppatori di AWS Key Management Service *.

Per ulteriori informazioni su quando utilizzare le chiavi gestite dal cliente e le chiavi KMS AWS gestite, consulta [Devo usare una chiave Chiave gestita da AWS o una chiave gestita dal cliente per crittografare i miei oggetti in Amazon S3](https://aws.amazon.com/premiumsupport/knowledge-center/s3-object-encryption-keys/)?

## Utilizzo della codifica predefinita con la replica
<a name="bucket-encryption-replication"></a>

Una volta abilitata la crittografia predefinita per un bucket di destinazione della replica, si applica il seguente comportamento di crittografia:
+ Se gli oggetti nel bucket di origine non sono crittografati, gli oggetti replicati nel bucket di destinazione vengono crittografati in base alle impostazioni di crittografia predefinita del bucket di destinazione. Di conseguenza, i tag di entità (ETags) degli oggetti di origine differiscono da quelli degli oggetti ETags di replica. Se disponi di applicazioni che utilizzano ETags, devi aggiornarle per tenere conto di questa differenza.
+ Se gli oggetti nel bucket di origine sono crittografati utilizzando la crittografia lato server con chiavi gestite Amazon S3 (SSE-S3), la crittografia lato server con chiavi () (SSE-KMS AWS KMS) o la crittografia lato server a doppio livello con AWS Key Management Service AWS KMS chiavi (DSSE-KMS), gli oggetti di replica nel bucket di destinazione utilizzano lo stesso tipo di crittografia degli oggetti di origine. Le impostazioni della crittografia predefinita del bucket di destinazione non vengono utilizzate.

Per ulteriori informazioni sull'utilizzo della crittografia di default con SSE-KMS, consulta [Replica di oggetti crittografati](replication-config-for-kms-objects.md).

## Utilizzo di chiavi bucket Amazon S3 con crittografia predefinita
<a name="bucket-key-default-encryption"></a>

Quando configuri il bucket per utilizzare SSE-KMS come funzionalità di crittografia predefinita per i nuovi oggetti, puoi anche configurare le chiavi bucket S3. Le S3 Bucket Keys riducono il numero di transazioni da Amazon S3 AWS KMS per ridurre il costo di SSE-KMS. 

[Quando configuri il bucket per utilizzare S3 Bucket Keys per SSE-KMS su nuovi oggetti, AWS KMS genera una chiave a livello di bucket che viene utilizzata per creare una chiave dati univoca per gli oggetti nel bucket.](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#data-keys) Questa S3 Bucket Key viene utilizzata per un periodo di tempo limitato all'interno di Amazon S3, riducendo la necessità per Amazon S3 di effettuare richieste per completare le operazioni di crittografia. AWS KMS 

Per ulteriori informazioni sull'utilizzo delle chiavi del bucket S3, consulta la sezione [Utilizzo di chiavi bucket Amazon S3](bucket-key.md).

# Configurazione della crittografia predefinita
<a name="default-bucket-encryption"></a>

**Importante**  
Amazon S3 ora applica la crittografia lato server con chiavi gestite da Amazon S3 (SSE-S3) come livello di base della crittografia per ogni bucket di Amazon S3. A partire dal 5 gennaio 2023, tutti i caricamenti di nuovi oggetti su Amazon S3 vengono crittografati automaticamente senza costi aggiuntivi e senza alcun impatto sulle prestazioni. Lo stato di crittografia automatico per la configurazione di crittografia predefinita del bucket S3 e per il caricamento di nuovi oggetti è disponibile nei CloudTrail log, in S3 Inventory, S3 Storage Lens, nella console Amazon S3 e come intestazione di risposta dell'API Amazon S3 aggiuntiva nella e. AWS CLI AWS SDKs Per ulteriori informazioni, consulta [Domande frequenti sulla crittografia predefinita](https://docs.aws.amazon.com/AmazonS3/latest/userguide/default-encryption-faq.html).

I bucket Amazon S3 hanno la crittografia dei bucket abilitata per impostazione predefinita; i nuovi oggetti vengono crittografati automaticamente utilizzando la crittografia lato server con chiavi gestite da Amazon S3 (SSE-S3). Questa crittografia si applica a tutti i nuovi oggetti nei bucket Amazon S3 e non comporta costi aggiuntivi.

Se hai bisogno di un maggiore controllo sulle chiavi di crittografia, come la gestione della rotazione delle chiavi e le concessioni delle policy di accesso, puoi scegliere di utilizzare la crittografia lato server con chiavi AWS Key Management Service (AWS KMS) (SSE-KMS) o la crittografia lato server a due livelli con AWS KMS chiavi (DSSE-KMS). Per ulteriori informazioni su SSE-KMS, consulta [Specificare la crittografia lato server con AWS KMS (SSE-KMS)](specifying-kms-encryption.md). Per ulteriori informazioni su DSSE-KMS, consulta [Utilizzo della crittografia lato server a due livelli con AWS KMS chiavi (DSSE-KMS)](UsingDSSEncryption.md). 

Se desideri utilizzare una chiave KMS di proprietà di un account diverso, devi avere l'autorizzazione necessaria per l'uso della chiave. Per ulteriori informazioni sulle autorizzazioni tra account per le chiavi KMS, vedi [Creazione di chiavi KMS utilizzabili da altri account](https://docs.aws.amazon.com//kms/latest/developerguide/key-policy-modifying-external-accounts.html#cross-account-console) nella *Guida per gli sviluppatori di AWS Key Management Service *. 

Quando imposti la crittografia dei bucket predefinita su SSE-KMS, puoi anche configurare una S3 Bucket Key per ridurre i costi delle richieste. AWS KMS Per ulteriori informazioni, consulta [Riduzione del costo di SSE-KMS con le chiavi bucket Amazon S3](bucket-key.md).

**Nota**  
Se utilizzi [PutBucketEncryption](https://docs.aws.amazon.com//AmazonS3/latest/API/API_PutBucketEncryption.html)la crittografia dei bucket predefinita su SSE-KMS, devi verificare che l'ID della tua chiave KMS sia corretto. Amazon S3 non convalida l'ID della chiave KMS fornito nelle richieste. PutBucketEncryption 

L'uso della crittografia predefinita dei bucket S3 non comporta costi aggiuntivi. Per le richieste di configurare la funzione di crittografia predefinita vengono applicati i costi standard per le richieste Amazon S3. Per informazioni sui prezzi, consulta [Prezzi di Amazon S3](https://aws.amazon.com/s3/pricing/). [Per SSE-KMS e DSSE-KMS, vengono applicati dei costi indicati nella tabella dei prezzi. AWS KMSAWS KMS](https://aws.amazon.com/kms/pricing/) 

La crittografia lato server con chiavi di crittografia fornite dal cliente (SSE-C) è supportata per la crittografia predefinita.

Puoi configurare la crittografia predefinita di Amazon S3 per un bucket S3 utilizzando la console Amazon S3, l'API REST di AWS SDKs Amazon S3 e (). AWS Command Line Interface AWS CLI

**Modifiche alla nota prima dell'abilitazione della crittografia predefinita**  
Una volta abilitata la crittografia predefinita di un bucket, si applica il seguente comportamento di crittografia:
+ Non avvengono modifiche della crittografia degli oggetti che esisteva nel bucket prima che la crittografia predefinita venisse abilitata. 
+ Quando si effettua il caricamento di oggetti dopo l'abilitazione della crittografia predefinita:
  + Se le intestazioni della richiesta `PUT` non includono le informazioni di crittografia, Amazon S3 utilizza le impostazioni di crittografia di default del bucket per eseguire la crittografia degli oggetti. 
  + Se le intestazioni della richiesta `PUT` includono le informazioni di crittografia, Amazon S3 utilizza le informazioni di crittografia della richiesta `PUT` per eseguire la crittografia degli oggetti prima di archiviarli in Amazon S3.
+ Se usi l'opzione SSE-KMS o DSSE-KMS per la configurazione della crittografia predefinita, vengono applicati i limiti di richieste al secondo (RPS) di AWS KMS. Per ulteriori informazioni sulle quote AWS KMS e su come richiedere un aumento delle quote, consulta [Quote](https://docs.aws.amazon.com/kms/latest/developerguide/limits.html) nella *Guida per gli sviluppatori di AWS Key Management Service *. 

**Nota**  
Gli oggetti caricati prima dell'abilitazione della crittografia predefinita non verranno crittografati. Per ulteriori informazioni sulla crittografia di oggetti, consulta [Impostazione del comportamento predefinito della crittografia lato server per i bucket Amazon S3](bucket-encryption.md).

## Utilizzo della console S3
<a name="bucket-encryption-how-to-set-up-console"></a>

**Per configurare la crittografia predefinita per un bucket Amazon S3**

1. Accedi Console di gestione AWS e apri la console Amazon S3 all'indirizzo. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Nel pannello di navigazione a sinistra, scegli **Buckets** (Bucket).

1. Nell'elenco **Bucket** scegli il nome del bucket desiderato. 

1. Scegliere la scheda **Properties (Proprietà)**.

1. In **Default encryption (Crittografia di default)**, scegliere **Edit (Modifica)**.

1. Per configurare la crittografia, in **Tipo di crittografia** scegli una delle seguenti opzioni: 
   + **Crittografia lato server con chiavi gestite da Amazon S3 (SSE-S3)**
   + **Crittografia lato server con AWS Key Management Service chiavi (SSE-KMS)**
   + **Crittografia lato server a doppio livello con chiavi (DSSE-KMS) AWS Key Management Service **
**Importante**  
Se usi l'opzione SSE-KMS o DSSE-KMS per la configurazione della crittografia predefinita, vengono applicati i limiti di richieste al secondo (RPS) di AWS KMS. [https://docs.aws.amazon.com/kms/latest/developerguide/limits.html](https://docs.aws.amazon.com/kms/latest/developerguide/limits.html) 

   I bucket e i nuovi oggetti sono crittografati per impostazione predefinita con SSE-S3, a meno che non specifichi un altro tipo di crittografia predefinita per i bucket. Per ulteriori informazioni sulla crittografia predefinita, consulta [Impostazione del comportamento predefinito della crittografia lato server per i bucket Amazon S3](bucket-encryption.md).

   Per ulteriori informazioni sull'utilizzo della crittografia lato server di Amazon S3 per crittografare i dati, consulta [Uso della crittografia lato server con chiavi gestite da Amazon S3 (SSE-S3)](UsingServerSideEncryption.md).

1. Se hai scelto la **crittografia lato server con AWS Key Management Service chiavi (SSE-KMS) o la crittografia lato server a doppio livello con chiavi (DSSE-KMS)****, procedi** come segue: AWS Key Management Service 

   1. In **Chiave AWS KMS ** specifica la tua chiave KMS in uno dei seguenti modi:
      + **Per scegliere da un elenco di chiavi KMS disponibili, scegli tra le tue e **scegli la tua AWS KMS keys chiave KMS dall'**elenco delle chiavi disponibili.**

        In questo elenco vengono visualizzate sia la chiave Chiave gestita da AWS (`aws/s3`) che quella gestita dai clienti. Per ulteriori informazioni sulle chiavi gestite dai clienti, consulta [Customer keys and AWS keys](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#key-mgmt) nella *AWS Key Management Service Developer Guide*.
      + Per specificare l'ARN della chiave KMS, scegli **Inserisci l'ARN della AWS KMS key ** e quindi specifica l'ARN della chiave KMS nel campo visualizzato. 
      + Per creare una nuova chiave gestita dal cliente nella AWS KMS console, scegli **Crea una chiave KMS**.

        Per ulteriori informazioni sulla creazione di una AWS KMS key, consulta [Creating keys](https://docs.aws.amazon.com//kms/latest/developerguide/create-keys.html) nella *AWS Key Management Service Developer Guide*.
**Importante**  
Puoi usare solo chiavi KMS abilitate nello Regione AWS stesso bucket. Quando scegli **Choose from your KMS keys** (Scegli tra le chiavi KMS), la console S3 elenca solo 100 chiavi KMS per regione. Se hai più di 100 chiavi KMS nella stessa regione, puoi vedere solo le prime 100 chiavi KMS nella console S3. Per utilizzare una chiave KMS non elencata nella console, seleziona **Inserisci l'ARN AWS KMS key ** e specifica l'ARN della chiave KMS.  
Quando utilizzi una AWS KMS key 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](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#symmetric-cmks) nella *Guida per gli sviluppatori di AWS Key Management Service *.

      Per ulteriori informazioni sull'uso di SSE-KMS con Amazon S3, consulta [Utilizzo della crittografia lato server con chiavi (SSE-KMS) AWS KMS](UsingKMSEncryption.md). Per ulteriori informazioni sull'uso di DSSE-KMS, consulta [Utilizzo della crittografia lato server a due livelli con AWS KMS chiavi (DSSE-KMS)](UsingDSSEncryption.md).

   1. Quando si configura il bucket per utilizzare la crittografia predefinita con SSE-KMS, è anche possibile abilitare le chiavi bucket S3. S3 Bucket Keys riduce il costo della crittografia diminuendo il traffico di richieste da Amazon S3 a. AWS KMS Per ulteriori informazioni, consulta [Riduzione del costo di SSE-KMS con le chiavi bucket Amazon S3](bucket-key.md).

      Per utilizzare le chiavi bucket S3, in **Chiave bucket** seleziona **Abilita**.
**Nota**  
Le chiavi bucket S3 non sono supportate per DSSE-KMS.

1. Scegli **Save changes** (Salva modifiche).

## Usando il AWS CLI
<a name="default-bucket-encryption-cli"></a>

Questi esempi mostrano come configurare la crittografia predefinita utilizzando la crittografia gestita da Amazon S3 (SSE-S3) o la crittografia SSE-KMS con una chiave bucket S3.

Per ulteriori informazioni sulla crittografia predefinita, consulta [Impostazione del comportamento predefinito della crittografia lato server per i bucket Amazon S3](bucket-encryption.md). Per ulteriori informazioni sull'utilizzo della AWS CLI configurazione della crittografia predefinita, vedere [put-bucket-encryption](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-bucket-encryption.html).

**Example - Crittografia predefinita con SSE-S3**  
In questo esempio viene configurata la crittografia predefinita dei bucket con le chiavi gestite da Amazon S3.  

```
aws s3api put-bucket-encryption --bucket amzn-s3-demo-bucket --server-side-encryption-configuration '{
    "Rules": [
        {
            "ApplyServerSideEncryptionByDefault": {
                "SSEAlgorithm": "AES256"
            }
        }
    ]
}'
```

**Example - Crittografia predefinita con SSE-KMS utilizzando una chiave bucket S3**  
In questo esempio viene configurata la crittografia predefinita del bucket con SSE-KMS utilizzando una chiave bucket S3.   

```
aws s3api put-bucket-encryption --bucket amzn-s3-demo-bucket --server-side-encryption-configuration '{
    "Rules": [
            {
                "ApplyServerSideEncryptionByDefault": {
                    "SSEAlgorithm": "aws:kms",
                    "KMSMasterKeyID": "KMS-Key-ARN"
                },
                "BucketKeyEnabled": true
            }
        ]
    }'
```

## Utilizzo della REST API
<a name="bucket-encryption-how-to-set-up-api"></a>

Usa l'operazione REST API `PutBucketEncryption` per abilitare la crittografia predefinita e impostare il tipo di crittografia lato server da utilizzare: SSE-S3, SSE-KMS o DSSE-KMS. 

Per ulteriori informazioni, consulta [https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTencryption.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTencryption.html) in *Amazon Simple Storage Service API Reference* (Guida di riferimento per l'API di Amazon Simple Storage Service).

# Monitoraggio della crittografia predefinita con AWS CloudTrail e Amazon EventBridge
<a name="bucket-encryption-tracking"></a>

**Importante**  
Amazon S3 ora applica la crittografia lato server con chiavi gestite da Amazon S3 (SSE-S3) come livello di base della crittografia per ogni bucket di Amazon S3. A partire dal 5 gennaio 2023, tutti i caricamenti di nuovi oggetti su Amazon S3 vengono crittografati automaticamente senza costi aggiuntivi e senza alcun impatto sulle prestazioni. Lo stato di crittografia automatico per la configurazione di crittografia predefinita del bucket S3 e per il caricamento di nuovi oggetti è disponibile nei CloudTrail log, in S3 Inventory, S3 Storage Lens, nella console Amazon S3 e come intestazione di risposta dell'API Amazon S3 aggiuntiva nella e. AWS CLI AWS SDKs Per ulteriori informazioni, consulta [Domande frequenti sulla crittografia predefinita](https://docs.aws.amazon.com/AmazonS3/latest/userguide/default-encryption-faq.html).

È possibile tenere traccia le richieste di configurazione della crittografia predefinita per i bucket Amazon S3 mediante gli eventi AWS CloudTrail . I seguenti nomi di eventi API vengono utilizzati nei log: CloudTrail 
+ `PutBucketEncryption`
+ `GetBucketEncryption`
+ `DeleteBucketEncryption`

Puoi anche creare EventBridge regole che corrispondano agli CloudTrail eventi per queste chiamate API. Per ulteriori informazioni sugli CloudTrail eventi, consulta[Abilitazione della registrazione per gli oggetti in un bucket utilizzando la console](enable-cloudtrail-logging-for-s3.md#enable-cloudtrail-events). Per ulteriori informazioni sugli EventBridge eventi, vedere [Events from Servizi AWS](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-service-event.html).

Puoi utilizzare CloudTrail i log per le azioni Amazon S3 a livello di oggetto per tracciare `PUT` e inviare richieste ad Amazon S3. `POST` È possibile utilizzare queste azioni per verificare se la crittografia predefinita viene utilizzata per crittografare gli oggetti quando le richieste `PUT` in arrivo non dispongono di intestazioni di crittografia.

Quando Amazon S3 esegue la crittografia di un oggetto in base alle impostazioni della crittografia predefinita, il log include uno dei seguenti campi come coppia nome/valore: `"SSEApplied":"Default_SSE_S3"`, `"SSEApplied":"Default_SSE_KMS"` o `"SSEApplied":"Default_DSSE_KMS"`.

Quando Amazon S3 esegue la crittografia di un oggetto in base alle intestazioni di crittografia `PUT`, il log include uno dei campi seguenti come coppia nome/valore: `"SSEApplied":"SSE_S3"`, `"SSEApplied":"SSE_KMS"`, `"SSEApplied":"DSSE_KMS"` o `"SSEApplied":"SSE_C"`. 

Per i caricamenti in più parti, queste informazioni sono incluse nelle richieste dell'operazione API `InitiateMultipartUpload`. Per ulteriori informazioni sull'utilizzo di and, consulta. CloudTrail CloudWatch [Registrazione e monitoraggio in Amazon S3](monitoring-overview.md)

# Domande frequenti sulla crittografia predefinita
<a name="default-encryption-faq"></a>

Amazon S3 ora applica la crittografia lato server con chiavi gestite da Amazon S3 (SSE-S3) come livello di base della crittografia per ogni bucket di Amazon S3. A partire dal 5 gennaio 2023, tutti i caricamenti di nuovi oggetti su Amazon S3 vengono crittografati automaticamente senza costi aggiuntivi e senza alcun impatto sulle prestazioni. SSE-S3, che utilizza l'algoritmo Advanced Encryption Standard (AES-256) a 256 bit, viene applicato automaticamente a tutti i nuovi bucket e a qualsiasi bucket S3 esistente per il quale non sia già stata configurata la crittografia predefinita. Lo stato di crittografia automatico per la configurazione di crittografia predefinita del bucket S3 e per il caricamento di nuovi oggetti è disponibile nei AWS CloudTrail log, S3 Inventory, S3 Storage Lens, la console Amazon S3 e come intestazione di risposta dell'API Amazon S3 aggiuntiva nei file () e. AWS Command Line Interface AWS CLI AWS SDKs

Nelle sezioni seguenti vengono fornite le risposte alle domande su questo aggiornamento. 

**Amazon S3 modifica le impostazioni della crittografia predefinita per i miei bucket esistenti che hanno già configurato la crittografia predefinita?**  
No. Non sono state apportate modifiche alla configurazione di crittografia predefinita per un bucket esistente che ha già configurato la crittografia SSE-S3 o lato server con chiavi AWS Key Management Service (AWS KMS) (SSE-KMS). Per ulteriori informazioni su come configurare il comportamento della crittografia predefinita per i bucket, consulta [Impostazione del comportamento predefinito della crittografia lato server per i bucket Amazon S3](bucket-encryption.md). Per ulteriori informazioni sulle impostazioni della crittografia SSE-S3 e SSE-KMS, consulta [Protezione dei dati con la crittografia lato server](serv-side-encryption.md).

**La crittografia predefinita è abilitata nei miei bucket esistenti che non hanno la crittografia predefinita configurata?**  
Sì. Amazon S3 ora configura la crittografia predefinita in tutti i bucket non crittografati esistenti per applicare la crittografia lato server con chiavi gestite da S3 come livello base di crittografia per i nuovi oggetti caricati in questi bucket. Gli oggetti già presenti in un bucket non crittografato esistente non verranno crittografati automaticamente.

**Come posso visualizzare lo stato della crittografia predefinita dei caricamenti di nuovi oggetti?**  
Attualmente, puoi visualizzare lo stato di crittografia predefinito dei caricamenti di nuovi oggetti nei AWS CloudTrail log, S3 Inventory e S3 Storage Lens, nella console Amazon S3 e come intestazione di risposta dell'API Amazon S3 aggiuntiva nei file () e. AWS Command Line Interface AWS CLI AWS SDKs
+ *Per visualizzare i tuoi CloudTrail eventi, consulta [Visualizzazione CloudTrail degli eventi nella console nella](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events-console.html) Guida per l'utente. CloudTrail AWS CloudTrail * CloudTrail i log forniscono il monitoraggio delle API `PUT` e le `POST` richieste ad Amazon S3. Quando viene utilizzata la crittografia predefinita per crittografare gli oggetti nei bucket, i CloudTrail log `PUT` e le richieste `POST` API includeranno il seguente campo come coppia nome-valore:. `"SSEApplied":"Default_SSE_S3"` 
+ Per visualizzare lo stato di crittografia automatica dei nuovi caricamenti di oggetti in S3 Inventory, configura un report di S3 Inventory che includa il campo dei metadati **Encryption (Crittografia)**, quindi visualizza lo stato di crittografia di ogni nuovo oggetto nel report. Per ulteriori informazioni, consulta [Impostazione di Amazon S3 Inventory](https://docs.aws.amazon.com/AmazonS3/latest/userguide/configure-inventory.html#storage-inventory-setting-up).
+ Per visualizzare lo stato di crittografia automatica per i nuovi caricamenti di oggetti in S3 Storage Lens, configura un pannello di controllo di S3 Storage Lens e visualizza le metriche **Encrypted bytes (Byte crittografati)** e **Encrypted object count (Conteggio degli oggetti crittografati)** nella categoria **Data protection (Protezione dei dati)** del pannello di controllo. Per ulteriori informazioni, consultare [Utilizzo della console S3](storage_lens_creating_dashboard.md#storage_lens_console_creating) e [Visualizzazione dei parametri di S3 Storage Lens nei pannelli di controllo](storage_lens_view_metrics_dashboard.md).
+ Per visualizzare lo stato della crittografia automatica a livello di bucket nella console Amazon S3, controlla la **crittografia predefinita** dei bucket Amazon S3 nella console Amazon S3. Per ulteriori informazioni, consulta [Configurazione della crittografia predefinita](default-bucket-encryption.md).
+ Per visualizzare lo stato della crittografia automatica come intestazione di risposta dell'API Amazon S3 aggiuntiva nei campi AWS Command Line Interface (AWS CLI) e AWS SDKs, controlla l'intestazione della risposta `x-amz-server-side-encryption` quando usi l'azione dell'oggetto APIs, ad esempio e. [PutObject[GetObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html) 

**Cosa devo fare per trarre vantaggio da questa modifica?**  
Non è necessario apportare modifiche alle applicazioni esistenti. Poiché la crittografia predefinita è abilitata per tutti i bucket, tutti i nuovi oggetti caricati in Amazon S3 vengono crittografati automaticamente.

**Posso disabilitare la crittografia per i nuovi oggetti che vengono scritti nel mio bucket?**  
No. SSE-S3 è il nuovo livello di crittografia di base che viene applicato a tutti i nuovi oggetti caricati nel bucket. Non è più possibile disabilitare la crittografia per il caricamento di nuovi oggetti.

**Ciò avrà ripercussioni sui miei addebiti?**  
No. La crittografia predefinita con SSE-S3 è disponibile senza costi aggiuntivi. Ti verranno fatturati lo spazio di archiviazione, le richieste e le altre funzionalità di S3, come al solito. Per informazioni sui prezzi, consulta [Prezzi di Amazon S3](https://aws.amazon.com/s3/pricing/).

**Amazon S3 crittograferà i miei oggetti esistenti non crittografati?**  
No. A partire dal 5 gennaio 2023, Amazon S3 crittografa automaticamente solo i caricamenti di nuovi oggetti. Per crittografare gli oggetti esistenti, è possibile utilizzare la funzionalità Operazioni in batch Amazon S3 per creare copie crittografate degli oggetti. Queste copie crittografate manterranno i dati e il nome dell'oggetto esistenti e verranno crittografate utilizzando le chiavi di crittografia specificate. Per ulteriori informazioni, consulta [Crittografia degli oggetti con Operazioni in batch Amazon S3](https://aws.amazon.com/blogs/storage/encrypting-objects-with-amazon-s3-batch-operations/) nel *Blog dell’archiviazione AWS *.

**Non ho abilitato la crittografia per i miei bucket prima di questa versione. Devo cambiare la modalità di accesso agli oggetti?**  
No. La crittografia predefinita con SSE-S3 consente di crittografare automaticamente i dati durante la scrittura in Amazon S3 e di eseguire la decrittografia al momento dell'accesso. Non vi è alcuna modifica nel modo in cui si accede agli oggetti crittografati automaticamente.

**Devo cambiare il modo in cui accedo ai miei oggetti con crittografia lato client?**  
No. Tutti gli oggetti con crittografia lato client crittografati prima di essere caricati in Amazon S3 arrivano come oggetti di testo criptato crittografati all'interno di Amazon S3. Questi oggetti avranno ora un livello di crittografia SSE-S3 aggiuntivo. I carichi di lavoro che utilizzano oggetti con crittografia lato client non richiederanno alcuna modifica ai servizi client o alle impostazioni di autorizzazione.

**Nota**  
HashiCorp Gli utenti Terraform che non utilizzano una versione aggiornata del AWS Provider potrebbero riscontrare una variazione inaspettata dopo la creazione di nuovi bucket S3 senza una configurazione di crittografia definita dal cliente. Per evitare questa deriva, aggiorna la versione di Terraform AWS Provider a una delle seguenti versioni: qualsiasi versione, o. 4.x 3.76.1 2.70.4

# Aggiornamento della crittografia lato server per i dati esistenti
<a name="update-sse-encryption"></a>

La crittografia è configurata per tutti i bucket Amazon S3 per impostazione predefinita; gli oggetti vengono crittografati automaticamente utilizzando la crittografia lato server con chiavi gestite da Amazon S3 (SSE-S3). Questa impostazione di crittografia predefinita si applica a tutti i nuovi oggetti nei bucket Amazon S3.

Utilizzando l'operazione `UpdateObjectEncryption` API, puoi aggiornare atomicamente il tipo di crittografia lato server di un oggetto crittografato esistente in un bucket generico dalla crittografia lato server con crittografia gestita Amazon S3 (SSE-S3) alla crittografia lato server con () chiavi di crittografia (SSE-KMS). AWS Key Management Service AWS KMS L'operazione `UpdateObjectEncryption` API utilizza la [crittografia a busta](https://docs.aws.amazon.com/kms/latest/developerguide/kms-cryptography.html#enveloping) per crittografare nuovamente la chiave dati utilizzata per crittografare e decrittografare l'oggetto con il tipo di crittografia lato server appena specificato. 

Amazon S3 esegue questo aggiornamento di tipo di crittografia senza alcun trasferimento di dati. In altre parole, quando si utilizza l'`UpdateObjectEncryption`operazione, i dati non vengono copiati, gli oggetti archiviati in S3 Glacier Flexible Retrieval o S3 Glacier Deep Archive non vengono ripristinati e gli oggetti nella classe di storage S3 Intelligent-Tiering non vengono spostati tra i livelli. Inoltre, l'`UpdateObjectEncryption`operazione conserva tutte le proprietà dei metadati degli oggetti, tra cui la classe di archiviazione, la data di creazione, la data dell'ultima modifica e le proprietà di checksum. ETag

L'`UpdateObjectEncryption`operazione è supportata per tutte le classi di storage S3 supportate da bucket generici. È possibile utilizzare l'`UpdateObjectEncryption`operazione per effettuare le seguenti operazioni: 
+ Modifica gli oggetti crittografati dalla crittografia lato server con la crittografia gestita di Amazon S3 (SSE-S3) alla crittografia lato server con () chiavi di crittografia AWS Key Management Service (SSE-KMS).AWS KMS
+ Aggiorna gli oggetti crittografati SSE-KMS a livello di oggetto per utilizzare S3 Bucket Keys, che riduce il traffico AWS KMS di richieste da Amazon S3 a. AWS KMS Per ulteriori informazioni, consulta [Riduzione del costo di SSE-KMS con le chiavi bucket Amazon S3](bucket-key.md).
+ Modifica la chiave KMS gestita dal cliente che viene utilizzata per crittografare i dati in modo da rispettare gli standard personalizzati di rotazione delle chiavi.

**Nota**  
Gli oggetti di origine non crittografati o crittografati con crittografia lato server a doppio livello con AWS KMS keys (DSSE-KMS) o chiavi di crittografia fornite dal cliente (SSE-C) non sono supportati da questa operazione.

L'`UpdateObjectEncryption`operazione viene in genere completata in millisecondi indipendentemente dalla dimensione dell'oggetto o dalla classe di storage, tra cui S3 Glacier Flexible Retrieval o S3 Glacier Deep Archive. Questa operazione non conta come accesso per S3 Intelligent-Tiering, quindi gli oggetti nel livello Infrequent Access o Archive Instant Access non torneranno automaticamente al livello Frequent Access se si modifica il tipo di crittografia lato server dell'oggetto. 

`UpdateObjectEncryption`è un'operazione API a livello di oggetto (piano dati) che viene registrata nei log di accesso al server Amazon S3 e negli eventi dei dati. AWS CloudTrail Per ulteriori informazioni, consulta [Opzioni di registrazione per Amazon S3](logging-with-S3.md). 

 L'`UpdateObjectEncryption`operazione ha lo stesso prezzo di`PUT`, `COPY``POST`, e request (per 1.000 `LIST` richieste) e viene sempre addebitata come richiesta di classe di storage S3 Standard indipendentemente dalla classe di storage dell'oggetto sottostante. Per ulteriori informazioni, consulta [Prezzi di Amazon S3](https://aws.amazon.com/s3/pricing/).

## Restrizioni e considerazioni
<a name="update-sse-encryption-restrictions"></a>

Quando si utilizza l'`UpdateObjectEncryption`operazione, si applicano le seguenti restrizioni e considerazioni:
+ L'`UpdateObjectEncryption`operazione non supporta oggetti non crittografati o oggetti crittografati con crittografia lato server a doppio livello con AWS KMS keys (DSSE-KMS) o chiavi di crittografia fornite dal cliente (SSE-C). Inoltre, non è possibile specificare SSE-S3 come nuova richiesta di tipo di crittografia richiesta. `UpdateObjectEncryption`
+ È possibile utilizzare l'`UpdateObjectEncryption`operazione per aggiornare gli oggetti nei bucket con S3 Versioning abilitato. Per aggiornare il tipo di crittografia di una particolare versione, è necessario specificare un ID di versione nella richiesta. `UpdateObjectEncryption` Se non specificate l'ID della versione, la `UpdateObjectEncryption` richiesta agisce sulla versione corrente dell'oggetto. Per ulteriori informazioni sulla funzione Controllo delle versioni S3, consulta [Conservazione di più versioni degli oggetti con Controllo delle versioni S3](Versioning.md).
+ L'`UpdateObjectEncryption`operazione ha esito negativo su qualsiasi oggetto a cui è applicata una modalità di conservazione o un blocco legale di S3 Object Lock. Se un oggetto ha un periodo di conservazione in modalità governance o un blocco legale, devi prima rimuovere lo stato Object Lock sull'oggetto prima di emettere la richiesta. `UpdateObjectEncryption` Non è possibile utilizzare l'`UpdateObjectEncryption`operazione con oggetti a cui è applicato un periodo di conservazione in modalità di conformità Object Lock. Per ulteriori informazioni sul blocco degli oggetti S3, consulta [Blocco di oggetti con Object Lock](object-lock.md).
+ `UpdateObjectEncryption`le richieste sui bucket di origine con replica live abilitata non avvieranno eventi di replica nel bucket di destinazione. Se desideri modificare il tipo di crittografia degli oggetti sia nei bucket di origine che in quelli di destinazione, devi avviare `UpdateObjectEncryption` richieste separate sugli oggetti nei bucket di origine e di destinazione.
+ Per impostazione predefinita, tutte le `UpdateObjectEncryption` richieste che specificano una chiave KMS gestita dal cliente sono limitate alle chiavi KMS di proprietà del proprietario del bucket. Account AWS Se lo utilizzi AWS Organizations, puoi richiedere la possibilità di utilizzare gli account di AWS KMS keys proprietà di altri membri all'interno della tua organizzazione contattando. Supporto AWS
+ Se utilizzi S3 Batch Replication per replicare set di dati su più regioni e in precedenza il tipo di crittografia lato server degli oggetti era stato aggiornato da SSE-S3 a SSE-KMS, potresti aver bisogno di autorizzazioni aggiuntive. Nel bucket `kms:decrypt` della regione di origine, devi disporre delle autorizzazioni. Quindi, avrai bisogno delle `kms:encrypt` autorizzazioni `kms:decrypt` e per il bucket nella regione di destinazione. 
+ È necessario fornire una chiave KMS completa (ARN) nella `UpdateObjectEncryption` richiesta. Non puoi usare un nome alias o un alias ARN. Puoi determinare l'ARN completo della chiave KMS nella console AWS KMS o utilizzando l'API AWS KMS. `DescribeKey`

## Autorizzazioni richieste
<a name="update-sse-encryption-permissions"></a>

Per eseguire l'`UpdateObjectEncryption`operazione, devi disporre delle seguenti autorizzazioni: 
+ `s3:PutObject`
+ `s3:UpdateObjectEncryption`
+ `kms:Encrypt`
+ `kms:Decrypt`
+ `kms:GenerateDataKey`
+ `kms:ReEncrypt*`

Se utilizzi AWS Organizations, per utilizzare questa operazione con chiavi KMS gestite dal cliente provenienti da altri membri dell' Account AWS organizzazione, devi disporre dell'autorizzazione. `organizations:DescribeAccount` È inoltre necessario richiedere la possibilità di utilizzare gli account AWS KMS keys di proprietà di altri membri all'interno dell'organizzazione contattando. Supporto AWS

Per eseguire l'`UpdateObjectEncryption`operazione, aggiungi la seguente policy AWS Identity and Access Management (IAM) al tuo ruolo IAM. Per utilizzare questa policy, `amzn-s3-demo-bucket` sostituiscila con il nome del tuo bucket generico e sostituisci l'altra `user input placeholders` con le tue informazioni.

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [{
            "Sid": "AllowUpdateObjectEncryption",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:UpdateObjectEncryption",
                "kms:Encrypt",
                "kms:Decrypt",
                "kms:GenerateDataKey",
                "kms:ReEncrypt*",
                "organizations:DescribeAccount"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket",
                "arn:aws:s3:::amzn-s3-demo-bucket/*",
                "arn:aws:kms:us-east-1:111122223333:key/01234567-89ab-cdef-0123-456789abcdef"
            ]
        }
    ]
}
```

## Aggiornamento della crittografia in blocco
<a name="update-sse-encryption-bulk"></a>

Per aggiornare il tipo di crittografia lato server di più di un oggetto Amazon S3 con una singola richiesta, puoi utilizzare S3 Batch Operations. Puoi fornire a S3 Batch Operations un elenco di oggetti su cui operare oppure puoi indirizzare Batch Operations a generare metadati di oggetti basati su un elenco di oggetti, tra cui prefisso, classe di archiviazione, data di creazione, tipo di crittografia, ARN della chiave KMS o stato della chiave S3 Bucket. Le operazioni in batch S3 richiamano la rispettiva API per eseguire l'operazione specificata. Un singolo processo Batch Operations può eseguire l'operazione specificata su miliardi di oggetti all'interno di un bucket contenente petabyte di dati. Per ulteriori informazioni su Batch Operations, consulta [Esecuzione di operazioni sugli oggetti in blocco con le operazioni in batch](batch-ops.md). 

La funzionalità Operazioni in batch S3 tiene traccia dei progressi, invia notifiche e memorizza un report dettagliato sul completamento di tutte le azioni, offrendo un'esperienza serverless completamente gestita e verificabile. Puoi utilizzare S3 Batch Operations tramite la console Amazon S3 AWS Command Line Interface ,AWS CLI( AWS SDKs) o l'API REST di Amazon S3. Per ulteriori informazioni, consulta [Aggiorna la crittografia degli oggetti](batch-ops-update-encryption.md).

## Aggiornamento della crittografia per gli oggetti
<a name="update-sse-encryption-single-object"></a>

Puoi aggiornare il tipo di crittografia lato server per un oggetto tramite AWS Command Line Interface (AWS CLI) AWS SDKs o l'API REST di Amazon S3. 

### Aggiorna la crittografia per un oggetto
<a name="update-sse-encryption-single-object-procedure"></a>

#### Usando il AWS CLI
<a name="update-sse-encryption-single-object-cli"></a>

Per eseguire i seguenti comandi, è necessario averli AWS CLI installati e configurati. Se non lo hai AWS CLI installato, consulta [Installare o aggiornare alla versione più recente di AWS CLI nella](https://docs.aws.amazon.com//cli/latest/userguide/getting-started-install.html) *Guida per l'AWS Command Line Interface utente*.

In alternativa, puoi eseguire AWS CLI comandi dalla console utilizzando AWS CloudShell. AWS CloudShell è una shell preautenticata basata su browser che è possibile avviare direttamente da. Console di gestione AWS[Per ulteriori informazioni, consulta Cos'è? CloudShell](https://docs.aws.amazon.com//cloudshell/latest/userguide/welcome.html) e [Guida introduttiva AWS CloudShell](https://docs.aws.amazon.com//cloudshell/latest/userguide/getting-started.html) nella *Guida AWS CloudShell per l'utente*.

**Per aggiornare la crittografia di un oggetto utilizzando il AWS CLI**

Per utilizzare il seguente comando di esempio, sostituisci `user input placeholders` con le tue informazioni. 

1. Utilizza il seguente comando per aggiornare la crittografia per un singolo oggetto (`index.html`) nel tuo bucket generico (ad esempio,`amzn-s3-demo-bucket`) per utilizzare SSE-KMS con una chiave S3 Bucket:

   ```
   aws s3api update-object-encryption \
   --bucket amzn-s3-demo-bucket \
   --key index.html \
   --object-encryption '{"SSEKMS": { "KMSKeyArn": "arn:aws:kms:us-east-1:111122223333:key/f12a345a-678e-9bbb-1025-62e317037583", "BucketKeyEnabled": true }}'
   ```
**Nota**  
È necessario specificare l' AWS KMS key Amazon Resource Name (ARN) completo. L'ID della chiave KMS e l'alias della chiave KMS non sono supportati.

1. Esegui il `head-object` comando per visualizzare il tipo di crittografia aggiornato del tuo oggetto:

   ```
   aws s3api head-object --bucket amzn-s3-demo-bucket --key index.html
   ```

#### Utilizzo della REST API
<a name="update-sse-encryption-single-object-rest-api"></a>

È possibile inviare richieste REST per aggiornare la crittografia di un oggetto. Per ulteriori informazioni, consulta [https://docs.aws.amazon.com/AmazonS3/latest/API/API_UpdateObjectEncryption.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UpdateObjectEncryption.html).

#### Usando il AWS SDKs
<a name="update-sse-encryption-single-object-sdk"></a>

È possibile utilizzare AWS SDKs per aggiornare la crittografia di un oggetto. Per ulteriori informazioni, consulta l'[elenco delle opzioni supportate SDKs](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UpdateObjectEncryption.html#API_UpdateObjectEncryption_SeeAlso).

------
#### [ Java ]

**Example**  
L' AWS SDK for Java 2.x esempio seguente aggiorna il tipo di crittografia a SSE-KMS per un oggetto in un bucket generico.  

```
    public void updateObjectEncryption(String bucketName,
                                       String objectKey,
                                       String versionId,
                                       String kmsKeyArn,
                                       boolean bucketKeyEnabled) {
        // Create the target object encryption type.
        ObjectEncryption objectEncryption = ObjectEncryption.builder()
                .ssekms(SSEKMSEncryption.builder()
                        .kmsKeyArn(kmsKeyArn)
                        .bucketKeyEnabled(bucketKeyEnabled)
                        .build())
                .build();

        // Create the UpdateObjectEncryption request.
        UpdateObjectEncryptionRequest request = UpdateObjectEncryptionRequest.builder()
                .bucket(bucketName)
                .key(objectKey)
                .versionId(versionId)
                .objectEncryption(objectEncryption)
                .build();

        // Update the object encryption.
        try {
            getS3Client().updateObjectEncryption(request);
            logger.info("Object encryption updated to SSE-KMS for {} in bucket {}", objectKey, bucketName);
        } catch (S3Exception e) {
            logger.error("Failed to update to object encryption: {} - Error code: {}", e.awsErrorDetails().errorMessage(),
                    e.awsErrorDetails().errorCode());
            throw e;
        }
    }
```

------
#### [ Python ]

**Example**  
L' AWS SDK per Python (Boto3) esempio seguente mostra come aggiornare il tipo di crittografia a SSE-KMS per un oggetto in un bucket generico.   

```
response = client.update_object_encryption(
    Bucket='string',
    Key='string',
    VersionId='string',
    ObjectEncryption={
        'SSEKMS': {
                'KMSKeyArn': 'string',
                'BucketKeyEnabled': True|False
        }
    }
)
```

------

# Uso della crittografia lato server con chiavi gestite da Amazon S3 (SSE-S3)
<a name="UsingServerSideEncryption"></a>

**Importante**  
Amazon S3 ora applica la crittografia lato server con chiavi gestite da Amazon S3 (SSE-S3) come livello di base della crittografia per ogni bucket di Amazon S3. A partire dal 5 gennaio 2023, tutti i caricamenti di nuovi oggetti su Amazon S3 vengono crittografati automaticamente senza costi aggiuntivi e senza alcun impatto sulle prestazioni. Lo stato di crittografia automatico per la configurazione di crittografia predefinita del bucket S3 e per il caricamento di nuovi oggetti è disponibile nei CloudTrail log, in S3 Inventory, S3 Storage Lens, nella console Amazon S3 e come intestazione di risposta dell'API Amazon S3 aggiuntiva nella e. AWS CLI AWS SDKs Per ulteriori informazioni, consulta [Domande frequenti sulla crittografia predefinita](https://docs.aws.amazon.com/AmazonS3/latest/userguide/default-encryption-faq.html).

Tutti i nuovi caricamenti di oggetti su bucket Amazon S3 vengono crittografati per impostazione predefinita con la crittografia lato server con chiavi gestite da Amazon S3 (SSE-S3).

La crittografia lato server protegge i dati inattivi. Amazon S3 crittografa ogni oggetto con una chiave univoca. Come ulteriore tutela, crittografa la chiave con una chiave che ruota con regolarità. La crittografia lato server di Amazon S3 utilizza la modalità AES-GCM (Advanced Encryption Standard Galois/Counter Mode) a 256 bit per crittografare tutti gli oggetti caricati.

Non sono previsti costi aggiuntivi per l'utilizzo della crittografia lato server con le chiavi gestite da Amazon S3 (SSE-S3). Tuttavia, per le richieste di configurare la funzione di crittografia predefinita vengono applicati i costi delle richieste Amazon S3 standard. Per informazioni sui prezzi, consulta [Prezzi di Amazon S3](https://aws.amazon.com/s3/pricing/).

Se desideri che i tuoi caricamenti di dati siano crittografati utilizzando solo le chiavi gestite da Amazon S3, puoi utilizzare la seguente policy dei bucket. Ad esempio, la seguente policy del bucket rifiuta le autorizzazioni al caricamento di un oggetto a meno che la richiesta non includa l'intestazione `x-amz-server-side-encryption` per richiedere la codifica lato server:

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Id": "PutObjectPolicy",
  "Statement": [
    {
      "Sid": "DenyObjectsThatAreNotSSES3",
      "Effect": "Deny",
      "Principal": "*",
      "Action": "s3:PutObject",
      "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
      "Condition": {
        "StringNotEquals": {
          "s3:x-amz-server-side-encryption": "AES256"
        }
      }
    }
   ]
}
```

------

**Nota**  
La crittografia lato server viene applicata solo ai dati dell'oggetto, non dei metadati dell'oggetto. 

## Supporto API per la crittografia lato server
<a name="APISupportforServer-SideEncryption"></a>

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. Per utilizzare un diverso tipo di crittografia, puoi specificare il tipo di crittografia lato server da utilizzare nelle richieste `PUT` S3 oppure aggiornare la configurazione di crittografia predefinita nel bucket di destinazione. 

Se desideri specificare un tipo di crittografia diverso nelle tue `PUT` richieste, puoi utilizzare la crittografia lato server con () chiavi (SSE-KMS), la crittografia lato server a doppio livello con chiavi AWS Key Management Service (AWS KMS DSSE-KMS) o la crittografia lato server con chiavi fornite dal cliente (SSE-C). AWS KMS Per impostare una configurazione di crittografia predefinita diversa nel bucket di destinazione puoi utilizzare SSE-KMS o DSSE-KMS.

Per ulteriori informazioni su come modificare la configurazione di crittografia predefinita per i bucket per uso generico, consulta [Configurazione della crittografia predefinita](default-bucket-encryption.md). 

Quando modifichi la configurazione di crittografia predefinita del bucket in SSE-KMS, il tipo di crittografia degli oggetti Amazon S3 esistenti nel bucket non viene modificato. Per modificare il tipo di crittografia degli oggetti preesistenti dopo aver aggiornato la configurazione di crittografia predefinita a SSE-KMS, puoi utilizzare Operazioni in batch Amazon S3. Si fornisce a Operazioni in batch S3 un elenco di oggetti e Operazioni in batch richiama la rispettiva operazione API. È possibile utilizzare l’azione [Copia oggetti](batch-ops-copy-object.md) per copiare gli oggetti esistenti, scrivendoli nello stesso bucket degli oggetti crittografati SSE-KMS. Un solo processo di operazioni in batch può eseguire l'operazione specificata su miliardi di oggetti. Per ulteriori informazioni, consulta [Esecuzione di operazioni sugli oggetti in blocco con le operazioni in batch](batch-ops.md) e il post [Come crittografare retroattivamente gli oggetti esistenti in Amazon S3 utilizzando Inventario S3, Amazon Athena e Operazioni in batch S3](https://aws.amazon.com/blogs/security/how-to-retroactively-encrypt-existing-objects-in-amazon-s3-using-s3-inventory-amazon-athena-and-s3-batch-operations/) nel *Blog dell’archiviazione AWS *. 

Per configurare la crittografia lato server utilizzando il REST per la creazione di oggetti, è necessario fornire l'intestazione della richiesta. APIs `x-amz-server-side-encryption` Per informazioni sul REST, vedere. APIs [Utilizzo della REST API](specifying-s3-encryption.md#SSEUsingRESTAPI)

I seguenti Amazon S3 APIs supportano questa intestazione:
+ **Operazioni PUT**: specifica l'intestazione della richiesta quando si caricano i dati utilizzando l'API `PUT`. Per ulteriori informazioni, consulta [PUT Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html).
+ **Avvia caricamento in più parti**: specifica l'intestazione nella richiesta di avvio quando si caricano oggetti di grandi dimensioni utilizzando l'API per il caricamento in più parti. Per ulteriori informazioni, consulta [Initiate Multipart Upload](https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadInitiate.html).
+ **Operazione COPY**: l'operazione di copia di un oggetto coinvolge un oggetto di origine e un oggetto di destinazione. Per ulteriori informazioni, consulta [PUT Object - Copy](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectCOPY.html).

**Nota**  
Quando si utilizza un'operazione `POST` per caricare un oggetto anziché l'intestazione della richiesta, si specificano le stesse informazioni nei campi del modulo. Per ulteriori informazioni, consulta [POST Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html). 

Forniscono AWS SDKs anche un wrapper APIs che puoi utilizzare per richiedere la crittografia lato server. È inoltre possibile utilizzare il Console di gestione AWS per caricare oggetti e richiedere la crittografia lato server.

Per ulteriori informazioni generali, consulta [Concetti di AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html) nella *Guida per gli sviluppatori di AWS Key Management Service *.

**Topics**
+ [

## Supporto API per la crittografia lato server
](#APISupportforServer-SideEncryption)
+ [

# Specifica della crittografia lato server con chiavi gestite da Amazon S3 (SSE-S3)
](specifying-s3-encryption.md)

# Specifica della crittografia lato server con chiavi gestite da Amazon S3 (SSE-S3)
<a name="specifying-s3-encryption"></a>

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. Per utilizzare un diverso tipo di crittografia, puoi specificare il tipo di crittografia lato server da utilizzare nelle richieste `PUT` S3 oppure aggiornare la configurazione di crittografia predefinita nel bucket di destinazione. 

Se desideri specificare un tipo di crittografia diverso nelle tue `PUT` richieste, puoi utilizzare la crittografia lato server con AWS Key Management Service () chiavi (SSE-KMS AWS KMS), la crittografia lato server a doppio livello con chiavi (DSSE-KMS) o la crittografia lato server con AWS KMS chiavi fornite dal cliente (SSE-C). Per impostare una configurazione di crittografia predefinita diversa nel bucket di destinazione puoi utilizzare SSE-KMS o DSSE-KMS.

Per ulteriori informazioni su come modificare la configurazione di crittografia predefinita per i bucket per uso generico, consulta [Configurazione della crittografia predefinita](default-bucket-encryption.md). 

Quando modifichi la configurazione di crittografia predefinita del bucket in SSE-KMS, il tipo di crittografia degli oggetti Amazon S3 esistenti nel bucket non viene modificato. Per modificare il tipo di crittografia degli oggetti preesistenti dopo aver aggiornato la configurazione di crittografia predefinita a SSE-KMS, puoi utilizzare Operazioni in batch Amazon S3. Si fornisce a Operazioni in batch S3 un elenco di oggetti e Operazioni in batch richiama la rispettiva operazione API. È possibile utilizzare l’azione [Copia oggetti](batch-ops-copy-object.md) per copiare gli oggetti esistenti, scrivendoli nello stesso bucket degli oggetti crittografati SSE-KMS. Un solo processo di operazioni in batch può eseguire l'operazione specificata su miliardi di oggetti. Per ulteriori informazioni, consulta [Esecuzione di operazioni sugli oggetti in blocco con le operazioni in batch](batch-ops.md) e il post [Come crittografare retroattivamente gli oggetti esistenti in Amazon S3 utilizzando Inventario S3, Amazon Athena e Operazioni in batch S3](https://aws.amazon.com/blogs/security/how-to-retroactively-encrypt-existing-objects-in-amazon-s3-using-s3-inventory-amazon-athena-and-s3-batch-operations/) nel *Blog dell’archiviazione AWS *. 

Puoi specificare SSE-S3 APIs utilizzando AWS SDKs la console S3, REST e (). AWS Command Line Interface AWS CLI Per ulteriori informazioni, consulta [Impostazione del comportamento predefinito della crittografia lato server per i bucket Amazon S3](bucket-encryption.md).

## Utilizzo della console S3
<a name="add-object-encryption-s3"></a>

Questo argomento descrive in che modo impostare o modificare il tipo di crittografia che viene utilizzato da un oggetto utilizzando la Console di gestione AWS. Quando si copia un oggetto utilizzando la console, l'oggetto viene copiato da Amazon S3 così com'è: Ciò significa che se l'oggetto di origine è crittografato, anche l'oggetto di destinazione sarà crittografato. Puoi usare la console per aggiungere o modificare la crittografia per un oggetto. 

**Nota**  
È possibile modificare la crittografia di un oggetto se l'oggetto è inferiore a 5 GB. Se l'oggetto è più grande di 5 GB, è necessario utilizzare [AWS CLI](mpu-upload-object.md#UsingCLImpUpload)o [AWS SDKs](CopyingObjectsMPUapi.md)per modificare la crittografia di un oggetto.
Per un elenco delle autorizzazioni aggiuntive necessarie per modificare la crittografia di un oggetto, consulta [Autorizzazioni necessarie per le operazioni API di Amazon S3](using-with-s3-policy-actions.md). Per esempi di policy che concedono questa autorizzazione, consulta [Esempi di policy basate sull'identità per Amazon S3](example-policies-s3.md).
Se si modifica la crittografia di un oggetto, viene creato un nuovo oggetto per sostituire quello precedente. Se è abilitata la funzione Controllo delle versioni S3, viene creata una nuova versione dell'oggetto e l'oggetto esistente diventa una versione precedente. Il ruolo che modifica la proprietà diventa anche il proprietario del nuovo oggetto o della versione dell'oggetto. 

**Per modificare la crittografia di un oggetto**

1. Accedi Console di gestione AWS e apri la console Amazon S3 all'indirizzo. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Nel riquadro di navigazione, scegli **Bucket**, quindi scegli la scheda **Bucket per uso generico**. Naviga al bucket o alla cartella Amazon S3 che contiene gli oggetti da modificare.

1. Seleziona la casella di controllo degli oggetti da modificare.

1. Nel menu **Azioni**, scegli **Modifica crittografia lato server** dall'elenco di opzioni visualizzato.

1. Scorrere fino alla sezione **Crittografia lato server**.

1. In **Impostazioni di crittografia**, scegli **Utilizza le impostazioni del bucket per la crittografia predefinita** o **Ignora le impostazioni del bucket per la crittografia predefinita**.

1. Se scegli **Sostituisci impostazioni del bucket per la crittografia predefinita**, configura le seguenti impostazioni di crittografia.

   1. In **Tipo di crittografia**, scegli **Crittografia lato server con chiavi gestite da Amazon S3 (SSE-S3)**. Per crittografare gli oggetti, SSE-S3 utilizza una delle cifrature di blocco più complesse, lo standard di crittografia avanzata a 256 bit (AES-256). Per ulteriori informazioni, consulta [Uso della crittografia lato server con chiavi gestite da Amazon S3 (SSE-S3)](UsingServerSideEncryption.md).

1. In **Impostazioni di copia aggiuntive**, scegli se eseguire **Copia impostazioni dell'origine**, **Non specificare le impostazioni** o **Specifica le impostazioni**. **Copia impostazioni dell'origine** è l'opzione predefinita. Se desideri copiare solo l'oggetto senza gli attributi delle impostazioni dell'origine, scegli **Non specificare le impostazioni**. Scegli **Specificare le impostazioni** per specificare le impostazioni per la classe di archiviazione ACLs, i tag degli oggetti, i metadati, la crittografia lato server e i checksum aggiuntivi.

1. Scegli **Save changes** (Salva modifiche).

**Nota**  
Questa azione applica la crittografia a tutti gli oggetti specificati. Durante la crittografia delle cartelle, attendere il completamento dell'operazione di salvataggio prima di aggiungere nuovi oggetti alla cartella.

## Utilizzo della REST API
<a name="SSEUsingRESTAPI"></a>

Al momento della creazione dell'oggetto, ovvero quando si carica un nuovo oggetto o si esegue una copia di un oggetto esistente, è possibile specificare se si desidera che Amazon S3 esegua la crittografia dei dati con le chiavi gestite da Amazon S3 (SSE-S3) aggiungendo alla richiesta l'intestazione `x-amz-server-side-encryption`. Imposta il valore dell'intestazione sull'algoritmo della crittografia `AES256` supportato da Amazon S3. Amazon S3 conferma che l'oggetto è stato archiviato utilizzando SSE-S3 restituendo l'intestazione della risposta `x-amz-server-side-encryption`. 

Le operazioni API per il caricamento REST elencate di seguito accettano l'intestazione della richiesta `x-amz-server-side-encryption`.
+ [PUT Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html)
+ [PUT Object - Copy](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectCOPY.html)
+ [POST Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html)
+ [Avvio del caricamento in più parti](https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadInitiate.html)

Quando si caricano oggetti di grandi dimensioni utilizzando l'operazione API per il caricamento in più parti, è possibile specificare la crittografia lato server aggiungendo l'intestazione `x-amz-server-side-encryption` alla richiesta di avvio del caricamento in più parti. Quando si copia un oggetto esistente, indipendentemente dal fatto che l'oggetto di origine sia stato o meno crittografato, l'oggetto di destinazione non viene crittografato, a meno che non si richieda esplicitamente la crittografia lato server.

Quando un oggetto viene archiviato utilizzando SSE-S3, le intestazioni di risposta delle seguenti operazioni REST API restituiscono l'intestazione `x-amz-server-side-encryption`. 
+ [PUT Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html)
+ [PUT Object - Copy](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectCOPY.html)
+ [POST Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html)
+ [Avvio del caricamento in più parti](https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadInitiate.html)
+ [Upload Part](https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadUploadPart.html)
+ [Caricamento di parte - Copy](https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadUploadPartCopy.html)
+ [Completamento del caricamento in più parti](https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadComplete.html)
+ [Get Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectGET.html)
+ [Head Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectHEAD.html)

**Nota**  
Non inviare l'intestazione di richiesta di crittografia per richieste `GET` e `HEAD` se l'oggetto utilizza SSE-S3 per evitare di ricevere un errore HTTP 400 (Bad Request).

## Utilizzando il AWS SDKs
<a name="s3-using-sdks"></a>

Durante l'utilizzo AWS SDKs, puoi richiedere ad Amazon S3 di utilizzare la crittografia lato server con le chiavi di crittografia gestite di Amazon S3 (SSE-S3). Questa sezione fornisce esempi di utilizzo di in più lingue. AWS SDKs Per informazioni su altri SDKs, vai a [Codice di esempio e librerie](https://aws.amazon.com/code). 

------
#### [ Java ]

Quando si utilizza il AWS SDK per Java per caricare un oggetto, è possibile utilizzare SSE-S3 per crittografarlo. Per richiedere la crittografia lato server, utilizza la proprietà `ObjectMetadata` della `PutObjectRequest` per impostare l'intestazione della richiesta `x-amz-server-side-encryption`. Quando si utilizza il metodo `putObject()` di `AmazonS3Client`, Amazon S3 cripta i dati e li salva.

È anche possibile richiedere la crittografia SSE-S3 durante il caricamento di oggetti con l'operazione API per il caricamento in più parti: 
+ Quando si utilizza l'operazione API per il caricamento in più parti di alto livello, usi i metodi `TransferManager` per applicare la crittografia lato server agli oggetti durante il loro caricamento. È possibile utilizzare uno qualsiasi dei metodi di caricamento che accetta `ObjectMetadata` come parametro. Per ulteriori informazioni, consulta [Caricamento di un oggetto utilizzando il caricamento in più parti](mpu-upload-object.md).
+ Quando si utilizza l'operazione API per il caricamento in più parti di basso livello, specifichi la crittografia lato server quando avvii il caricamento in più parti. Si aggiungi la proprietà `ObjectMetadata` mediante una chiamata al metodo `InitiateMultipartUploadRequest.setObjectMetadata()`. Per ulteriori informazioni, consulta [Utilizzo dell'API (di basso livello AWS SDKs )](mpu-upload-object.md#mpu-upload-low-level).

Non puoi direttamente modificare lo stato di crittografia di un oggetto (la crittografia di un oggetto non crittografato o la decrittografia dell'oggetto crittografato). Per modificare lo stato di crittografia di un oggetto, effettuare una copia dell'oggetto, specificando lo stato di crittografia per la copia e poi eliminare l'oggetto originale. Amazon S3 esegue la crittografia dell'oggetto copiato solo se hai effettuato una richiesta specifica di crittografia lato server. Per richiedere la crittografia dell'oggetto copiato tramite l'API Java, utilizza la proprietà `ObjectMetadata` per specificare la crittografia lato server in `CopyObjectRequest`, come mostrato nell'esempio di codice Java riportato di seguito.

**Example Esempio**  
L'esempio che segue mostra come impostare la crittografia lato server utilizzando AWS SDK per Java. Mostra come eseguire le seguenti operazioni:  
+ Carica un nuovo oggetto usando SSE-S3.
+ Modifica lo stato di crittografia di un oggetto (in questo esempio, crittografare un oggetto precedentemente non crittografato) eseguendo una copia dell'oggetto.
+ Controlla lo stato di crittografia dell'oggetto.
Per ulteriori informazioni sulla crittografia lato server, consulta [Utilizzo della REST API](#SSEUsingRESTAPI). Per istruzioni su come creare e testare un esempio funzionante, consulta [Getting Started nella Developer Guide](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/getting-started.html). AWS SDK per Java   

```
import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.internal.SSEResultBase;
import com.amazonaws.services.s3.model.*;

import java.io.ByteArrayInputStream;

public class SpecifyServerSideEncryption {

    public static void main(String[] args) {
        Regions clientRegion = Regions.DEFAULT_REGION;
        String bucketName = "*** Bucket name ***";
        String keyNameToEncrypt = "*** Key name for an object to upload and encrypt ***";
        String keyNameToCopyAndEncrypt = "*** Key name for an unencrypted object to be encrypted by copying ***";
        String copiedObjectKeyName = "*** Key name for the encrypted copy of the unencrypted object ***";

        try {
            AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
                    .withRegion(clientRegion)
                    .withCredentials(new ProfileCredentialsProvider())
                    .build();

            // Upload an object and encrypt it with SSE.
            uploadObjectWithSSEEncryption(s3Client, bucketName, keyNameToEncrypt);

            // Upload a new unencrypted object, then change its encryption state
            // to encrypted by making a copy.
            changeSSEEncryptionStatusByCopying(s3Client,
                    bucketName,
                    keyNameToCopyAndEncrypt,
                    copiedObjectKeyName);
        } catch (AmazonServiceException e) {
            // The call was transmitted successfully, but Amazon S3 couldn't process
            // it, so it returned an error response.
            e.printStackTrace();
        } catch (SdkClientException e) {
            // Amazon S3 couldn't be contacted for a response, or the client
            // couldn't parse the response from Amazon S3.
            e.printStackTrace();
        }
    }

    private static void uploadObjectWithSSEEncryption(AmazonS3 s3Client, String bucketName, String keyName) {
        String objectContent = "Test object encrypted with SSE";
        byte[] objectBytes = objectContent.getBytes();

        // Specify server-side encryption.
        ObjectMetadata objectMetadata = new ObjectMetadata();
        objectMetadata.setContentLength(objectBytes.length);
        objectMetadata.setSSEAlgorithm(ObjectMetadata.AES_256_SERVER_SIDE_ENCRYPTION);
        PutObjectRequest putRequest = new PutObjectRequest(bucketName,
                keyName,
                new ByteArrayInputStream(objectBytes),
                objectMetadata);

        // Upload the object and check its encryption status.
        PutObjectResult putResult = s3Client.putObject(putRequest);
        System.out.println("Object \"" + keyName + "\" uploaded with SSE.");
        printEncryptionStatus(putResult);
    }

    private static void changeSSEEncryptionStatusByCopying(AmazonS3 s3Client,
            String bucketName,
            String sourceKey,
            String destKey) {
        // Upload a new, unencrypted object.
        PutObjectResult putResult = s3Client.putObject(bucketName, sourceKey, "Object example to encrypt by copying");
        System.out.println("Unencrypted object \"" + sourceKey + "\" uploaded.");
        printEncryptionStatus(putResult);

        // Make a copy of the object and use server-side encryption when storing the
        // copy.
        CopyObjectRequest request = new CopyObjectRequest(bucketName,
                sourceKey,
                bucketName,
                destKey);
        ObjectMetadata objectMetadata = new ObjectMetadata();
        objectMetadata.setSSEAlgorithm(ObjectMetadata.AES_256_SERVER_SIDE_ENCRYPTION);
        request.setNewObjectMetadata(objectMetadata);

        // Perform the copy operation and display the copy's encryption status.
        CopyObjectResult response = s3Client.copyObject(request);
        System.out.println("Object \"" + destKey + "\" uploaded with SSE.");
        printEncryptionStatus(response);

        // Delete the original, unencrypted object, leaving only the encrypted copy in
        // Amazon S3.
        s3Client.deleteObject(bucketName, sourceKey);
        System.out.println("Unencrypted object \"" + sourceKey + "\" deleted.");
    }

    private static void printEncryptionStatus(SSEResultBase response) {
        String encryptionStatus = response.getSSEAlgorithm();
        if (encryptionStatus == null) {
            encryptionStatus = "Not encrypted with SSE";
        }
        System.out.println("Object encryption status is: " + encryptionStatus);
    }
}
```

------
#### [ .NET ]

Quando carichi un oggetto, puoi indirizzare Amazon S3 per crittografarlo. Per modificare lo stato di crittografia di un oggetto esistente, effettuare una copia dell'oggetto ed eliminare l'oggetto di origine. Per impostazione predefinita, l'operazione di copia crittografa la destinazione solo se si richiede esplicitamente la crittografia lato server dell'oggetto di destinazione. Per specificare SSE-S3 in `CopyObjectRequest`, aggiungi quanto segue:

```
 ServerSideEncryptionMethod = ServerSideEncryptionMethod.AES256
```

Per un esempio di come copiare un oggetto, consulta [Usando il AWS SDKs](copy-object.md#CopyingObjectsUsingSDKs). 

Nel seguente esempio viene caricato un oggetto. Nella richiesta l'esempio indirizza Amazon S3 per crittografare l'oggetto. L'esempio poi recupera i metadati dell'oggetto e verifica i metodi di crittografia utilizzati. Per informazioni sulla configurazione e l'esecuzione degli esempi di codice, consulta [Getting Started with the AWS SDK for .NET nella AWS SDK for](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/net-dg-setup.html) .NET *Developer Guide*. 

```
using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using System;
using System.Threading.Tasks;

namespace Amazon.DocSamples.S3
{
    class SpecifyServerSideEncryptionTest
    {
        private const string bucketName = "*** bucket name ***";
        private const string keyName = "*** key name for object created ***";
        // Specify your bucket region (an example region is shown).
        private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
        private static IAmazonS3 client;

        public static void Main()
        {
            client = new AmazonS3Client(bucketRegion);
            WritingAnObjectAsync().Wait();
        }

        static async Task WritingAnObjectAsync()
        {
            try
            {
                var putRequest = new PutObjectRequest
                {
                    BucketName = bucketName,
                    Key = keyName,
                    ContentBody = "sample text",
                    ServerSideEncryptionMethod = ServerSideEncryptionMethod.AES256
                };

                var putResponse = await client.PutObjectAsync(putRequest);

                // Determine the encryption state of an object.
                GetObjectMetadataRequest metadataRequest = new GetObjectMetadataRequest
                {
                    BucketName = bucketName,
                    Key = keyName
                };
                GetObjectMetadataResponse response = await client.GetObjectMetadataAsync(metadataRequest);
                ServerSideEncryptionMethod objectEncryption = response.ServerSideEncryptionMethod;

                Console.WriteLine("Encryption method used: {0}", objectEncryption.ToString());
            }
            catch (AmazonS3Exception e)
            {
                Console.WriteLine("Error encountered ***. Message:'{0}' when writing an object", e.Message);
            }
            catch (Exception e)
            {
                Console.WriteLine("Unknown encountered on server. Message:'{0}' when writing an object", e.Message);
            }
        }
    }
}
```

------
#### [ PHP ]

Questo argomento mostra come utilizzare le classi della versione 3 di AWS SDK per PHP per aggiungere SSE-S3 agli oggetti caricati su Amazon S3. Per ulteriori informazioni sull'API AWS SDK for Ruby, [AWS vai a SDK for Ruby](https://docs.aws.amazon.com/sdkforruby/api/index.html) - Versione 2.

Per caricare un oggetto su Amazon S3, si utilizza il metodo [Aws\$1S3\$1S3Client::putObject()](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#putobject). Per aggiungere l'intestazione di richiesta `x-amz-server-side-encryption` alla richiesta di caricamento, specificare il parametro`ServerSideEncryption` con il valore `AES256`, come mostrato nel seguente esempio di codice. Per ulteriori informazioni sulla crittografia lato server delle richieste, consultare [Utilizzo della REST API](#SSEUsingRESTAPI).

```
 require 'vendor/autoload.php';

use Aws\S3\S3Client;

$bucket = '*** Your Bucket Name ***';
$keyname = '*** Your Object Key ***';

// $filepath should be an absolute path to a file on disk.
$filepath = '*** Your File Path ***';

$s3 = new S3Client([
    'version' => 'latest',
    'region'  => 'us-east-1'
]);

// Upload a file with server-side encryption.
$result = $s3->putObject([
    'Bucket'               => $bucket,
    'Key'                  => $keyname,
    'SourceFile'           => $filepath,
    'ServerSideEncryption' => 'AES256',
]);
```

Nella risposta Amazon S3 restituisce l'intestazione `x-amz-server-side-encryption` con il valore dell'algoritmo di crittografia utilizzato per crittografare i dati dell'oggetto. 

Quando si caricano oggetti di grandi dimensioni utilizzando l'API per il caricamento in più parti, puoi specificare SSE-S3 per gli oggetti che carichi, come segue: 
+ Quando utilizzi l'operazione API di caricamento multiparte di basso livello, specifica la crittografia lato server quando chiami il metodo [Aws\$1 S3\$1 S3Client](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#createmultipartupload):: (). createMultipartUpload Per aggiungere l'intestazione di richiesta `x-amz-server-side-encryption` alla richiesta, specificare la chiave `array` del parametro `ServerSideEncryption` con il valore `AES256`. Per ulteriori informazioni sull'operazione API per il caricamento in più parti di basso livello, consulta [Utilizzo dell'API (di basso livello AWS SDKs )](mpu-upload-object.md#mpu-upload-low-level).
+ Quando utilizzi l'operazione API di caricamento multiparte di alto livello, specifica la crittografia lato server utilizzando il parametro dell'operazione API. `ServerSideEncryption` [CreateMultipartUpload](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#createmultipartupload) Per un esempio di utilizzo del metodo `setOption()` con l'operazione API per il caricamento in più parti di alto livello, consulta [Caricamento di un oggetto utilizzando il caricamento in più parti](mpu-upload-object.md).

Per determinare lo stato di crittografia di un oggetto esistente, recuperare i metadati dell'oggetto richiamando il metodo [Aws\$1S3\$1S3Client::headObject()](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#headobject), come mostrato nell'esempio di codice PHP riportato di seguito.

```
 require 'vendor/autoload.php';

use Aws\S3\S3Client;

$bucket = '*** Your Bucket Name ***';
$keyname = '*** Your Object Key ***';

$s3 = new S3Client([
    'version' => 'latest',
    'region'  => 'us-east-1'
]);

// Check which server-side encryption algorithm is used.
$result = $s3->headObject([
    'Bucket' => $bucket,
    'Key'    => $keyname,
]);
echo $result['ServerSideEncryption'];
```

Per modificare lo stato di crittografia di un oggetto esistente, effettuare una copia dell'oggetto utilizzando il metodo [Aws\$1S3\$1S3Client::copyObject()](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#copyobject) ed eliminare l'oggetto di origine. Per impostazione predefinita, `copyObject()` non esegue la crittografia della destinazione, a meno che non si richieda esplicitamente la crittografia lato server dell'oggetto di destinazione utilizzando il parametro `ServerSideEncryption` con il valore `AES256`. Il seguente esempio di codice PHP esegue una copia di un oggetto e aggiunge la crittografia lato server all'oggetto copiato.

```
 require 'vendor/autoload.php';

use Aws\S3\S3Client;

$sourceBucket = '*** Your Source Bucket Name ***';
$sourceKeyname = '*** Your Source Object Key ***';

$targetBucket = '*** Your Target Bucket Name ***';
$targetKeyname = '*** Your Target Object Key ***';

$s3 = new S3Client([
    'version' => 'latest',
    'region'  => 'us-east-1'
]);

// Copy an object and add server-side encryption.
$s3->copyObject([
    'Bucket'               => $targetBucket,
    'Key'                  => $targetKeyname,
    'CopySource'           => "$sourceBucket/$sourceKeyname",
    'ServerSideEncryption' => 'AES256',
]);
```

Per ulteriori informazioni, consulta i seguenti argomenti:
+ [AWS SDK per PHP per la classe Amazon S3 Aws\$1 S3\$1 S3Client](https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Aws.S3.S3Client.html) 
+ [Documentazione di AWS SDK per PHP](https://aws.amazon.com/documentation/sdk-for-php/)

------
#### [ Ruby ]

Quando si utilizza AWS SDK per Ruby per caricare un oggetto, è possibile specificare che l'oggetto venga archiviato crittografato quando è inattivo con SSE-S3. Dopo essere stato letto, l'oggetto viene automaticamente decrittografato.

Il seguente esempio di AWS SDK per Ruby versione 3 dimostra come specificare che un file caricato su Amazon S3 sia crittografato quando è inattivo.

```
require 'aws-sdk-s3'

# Wraps Amazon S3 object actions.
class ObjectPutSseWrapper
  attr_reader :object

  # @param object [Aws::S3::Object] An existing Amazon S3 object.
  def initialize(object)
    @object = object
  end

  def put_object_encrypted(object_content, encryption)
    @object.put(body: object_content, server_side_encryption: encryption)
    true
  rescue Aws::Errors::ServiceError => e
    puts "Couldn't put your content to #{object.key}. Here's why: #{e.message}"
    false
  end
end

# Example usage:
def run_demo
  bucket_name = "amzn-s3-demo-bucket"
  object_key = "my-encrypted-content"
  object_content = "This is my super-secret content."
  encryption = "AES256"

  wrapper = ObjectPutSseWrapper.new(Aws::S3::Object.new(bucket_name, object_content))
  return unless wrapper.put_object_encrypted(object_content, encryption)

  puts "Put your content into #{bucket_name}:#{object_key} and encrypted it with #{encryption}."
end

run_demo if $PROGRAM_NAME == __FILE__
```

L'esempio di codice seguente dimostra come determinare lo stato di crittografia di un oggetto esistente.

```
require 'aws-sdk-s3'

# Wraps Amazon S3 object actions.
class ObjectGetEncryptionWrapper
  attr_reader :object

  # @param object [Aws::S3::Object] An existing Amazon S3 object.
  def initialize(object)
    @object = object
  end

  # Gets the object into memory.
  #
  # @return [Aws::S3::Types::GetObjectOutput, nil] The retrieved object data if successful; otherwise nil.
  def object
    @object.get
  rescue Aws::Errors::ServiceError => e
    puts "Couldn't get object #{@object.key}. Here's why: #{e.message}"
  end
end

# Example usage:
def run_demo
  bucket_name = "amzn-s3-demo-bucket"
  object_key = "my-object.txt"

  wrapper = ObjectGetEncryptionWrapper.new(Aws::S3::Object.new(bucket_name, object_key))
  obj_data = wrapper.get_object
  return unless obj_data

  encryption = obj_data.server_side_encryption.nil? ? 'no' : obj_data.server_side_encryption
  puts "Object #{object_key} uses #{encryption} encryption."
end

run_demo if $PROGRAM_NAME == __FILE__
```

Se la crittografia lato server non viene utilizzata per l'oggetto archiviato in Amazon S3, il metodo restituisce `null`.

Per modificare lo stato di crittografia di un oggetto esistente, effettuare una copia dell'oggetto ed eliminare l'oggetto di origine. Per default, i metodi di copia non eseguono la crittografia della destinazione, a meno che non si richieda esplicitamente la crittografia lato server. È possibile richiedere la crittografia dell'oggetto di destinazione specificando il valore `server_side_encryption` nell'argomento hash dell'opzione, come mostrato nel seguente esempio di codice Ruby. L'esempio di codice dimostra come copiare un oggetto e crittografare la copia con SSE-S3. 

```
require 'aws-sdk-s3'

# Wraps Amazon S3 object actions.
class ObjectCopyEncryptWrapper
  attr_reader :source_object

  # @param source_object [Aws::S3::Object] An existing Amazon S3 object. This is used as the source object for
  #                                        copy actions.
  def initialize(source_object)
    @source_object = source_object
  end

  # Copy the source object to the specified target bucket, rename it with the target key, and encrypt it.
  #
  # @param target_bucket [Aws::S3::Bucket] An existing Amazon S3 bucket where the object is copied.
  # @param target_object_key [String] The key to give the copy of the object.
  # @return [Aws::S3::Object, nil] The copied object when successful; otherwise, nil.
  def copy_object(target_bucket, target_object_key, encryption)
    @source_object.copy_to(bucket: target_bucket.name, key: target_object_key, server_side_encryption: encryption)
    target_bucket.object(target_object_key)
  rescue Aws::Errors::ServiceError => e
    puts "Couldn't copy #{@source_object.key} to #{target_object_key}. Here's why: #{e.message}"
  end
end

# Example usage:
def run_demo
  source_bucket_name = "amzn-s3-demo-bucket1"
  source_key = "my-source-file.txt"
  target_bucket_name = "amzn-s3-demo-bucket2"
  target_key = "my-target-file.txt"
  target_encryption = "AES256"

  source_bucket = Aws::S3::Bucket.new(source_bucket_name)
  wrapper = ObjectCopyEncryptWrapper.new(source_bucket.object(source_key))
  target_bucket = Aws::S3::Bucket.new(target_bucket_name)
  target_object = wrapper.copy_object(target_bucket, target_key, target_encryption)
  return unless target_object

  puts "Copied #{source_key} from #{source_bucket_name} to #{target_object.bucket_name}:#{target_object.key} and "\
       "encrypted the target with #{target_object.server_side_encryption} encryption."
end

run_demo if $PROGRAM_NAME == __FILE__
```

------

## Usando il AWS CLI
<a name="sse-s3-aws-cli"></a>

Per specificare SSE-S3 quando caricate un oggetto utilizzando il AWS CLI, utilizzate il seguente esempio.

```
aws s3api put-object --bucket amzn-s3-demo-bucket1 --key object-key-name --server-side-encryption AES256  --body file path
```

Per ulteriori informazioni, consulta [put-object](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-object.html) in *Riferimenti della AWS CLI *. [Per specificare SSE-S3 quando si copia un oggetto utilizzando il, vedere copy-object. AWS CLI](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/copy-object.html)

## Usando CloudFormation
<a name="ss3-s3-cfn"></a>

*Per esempi di configurazione della crittografia utilizzando CloudFormation, consulta l'esempio [Creare un bucket con crittografia predefinita](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-serversideencryptionrule.html#aws-properties-s3-bucket-serversideencryptionrule--examples--Create_a_bucket_with_default_encryption) e [Creare un bucket utilizzando la crittografia AWS KMS lato server con una chiave S3 Bucket](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-serversideencryptionrule.html#aws-properties-s3-bucket-serversideencryptionrule--examples--Create_a_bucket_using_AWS_KMS_server-side_encryption_with_an_S3_Bucket_Key) nell'argomento della Guida per l'`AWS::S3::Bucket ServerSideEncryptionRule`utente.AWS CloudFormation * 

# Utilizzo della crittografia lato server con chiavi (SSE-KMS) AWS KMS
<a name="UsingKMSEncryption"></a>

**Importante**  
Amazon S3 ora applica la crittografia lato server con chiavi gestite da Amazon S3 (SSE-S3) come livello di base della crittografia per ogni bucket di Amazon S3. A partire dal 5 gennaio 2023, tutti i caricamenti di nuovi oggetti su Amazon S3 vengono crittografati automaticamente senza costi aggiuntivi e senza alcun impatto sulle prestazioni. Lo stato di crittografia automatico per la configurazione di crittografia predefinita del bucket S3 e per il caricamento di nuovi oggetti è disponibile nei CloudTrail log, in S3 Inventory, S3 Storage Lens, nella console Amazon S3 e come intestazione di risposta dell'API Amazon S3 aggiuntiva nella e. AWS CLI AWS SDKs Per ulteriori informazioni, consulta [Domande frequenti sulla crittografia predefinita](https://docs.aws.amazon.com/AmazonS3/latest/userguide/default-encryption-faq.html).

La crittografia lato server è la crittografia dei dati nella posizione di destinazione eseguita dall'applicazione o dal servizio che li riceve.

Amazon S3 abilita automaticamente la crittografia lato server con le chiavi gestite da Amazon S3 (SSE-S3) per il caricamento di nuovi oggetti.

Salvo diversa indicazione, per crittografare gli oggetti i bucket utilizzano SSE-S3 per impostazione predefinita. Tuttavia, puoi scegliere di configurare i bucket per utilizzare invece la crittografia lato server con () chiavi (SSE-KMS). AWS Key Management Service AWS KMS Per ulteriori informazioni, consulta [Specificare la crittografia lato server con AWS KMS (SSE-KMS)](specifying-kms-encryption.md).

AWS KMS è un servizio che combina hardware e software sicuri e ad alta disponibilità per fornire un sistema di gestione delle chiavi scalabile per il cloud. Amazon S3 utilizza la crittografia lato server con AWS KMS (SSE-KMS) per crittografare i dati degli oggetti S3. Inoltre, quando SSE-KMS viene richiesto per l'oggetto, il checksum S3 (come parte dei metadati dell'oggetto) viene memorizzato in forma criptata. Per ulteriori informazioni sui checksum, consulta [Verifica dell'integrità degli oggetti in Amazon S3](checking-object-integrity.md).

[Se utilizzi le chiavi KMS, puoi utilizzarle AWS KMS tramite l'API o per effettuare le seguenti operazioni: [Console di gestione AWS](https://console.aws.amazon.com/kms)AWS KMS](https://docs.aws.amazon.com/kms/latest/APIReference/) 
+ Creare, visualizzare, modificare, monitorare, abilitare o disabilitare, ruotare e pianificare l'eliminazione delle chiavi KMS in modo centralizzato.
+ Definire le policy che controllano come e da chi possono essere utilizzate le chiavi KMS.
+ Controllare l’utilizzo delle chiavi KMS per verificarne l’uso corretto. Il controllo è supportato dall’[API AWS KMS](https://docs.aws.amazon.com/kms/latest/APIReference/), ma non dalla [console AWS KMS](https://console.aws.amazon.com/kms).



I controlli di sicurezza inclusi AWS KMS possono aiutarti a soddisfare i requisiti di conformità relativi alla crittografia. Puoi utilizzare queste chiavi KMS per proteggere i dati nei bucket Amazon S3. Quando utilizzi la crittografia SSE-KMS con un bucket S3, AWS KMS keys deve trovarsi nella stessa regione del bucket.

Sono previsti costi aggiuntivi per l'utilizzo. AWS KMS keys Per ulteriori informazioni, consulta la sezione [Concetti di AWS KMS key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys) nella *Guida per gli sviluppatori di AWS Key Management Service * e i [Prezzi di AWS KMS](https://aws.amazon.com/kms/pricing).

Per istruzioni su come consentire agli utenti IAM di accedere ai bucket crittografati con KMS, consulta La sezione Il [mio bucket Amazon S3 ha una crittografia predefinita utilizzando una chiave personalizzata. AWS KMS Come posso consentire agli utenti di scaricare e caricare file nel bucket?](https://repost.aws/knowledge-center/s3-bucket-access-default-encryption) nel AWS re:Post Knowledge Center.

**Permissions**  
Per effettuare correttamente una richiesta `PutObject` per crittografare un oggetto con una chiave AWS KMS su Amazon S3, sono necessarie le autorizzazioni `kms:GenerateDataKey` per la chiave. Per scaricare un oggetto crittografato con un AWS KMS key, sono necessarie `kms:Decrypt` le autorizzazioni per la chiave. Per [eseguire un caricamento in più parti](https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpuoverview.html#mpuAndPermissions) per crittografare un oggetto con un AWS KMS key, è necessario disporre delle `kms:Decrypt` autorizzazioni `kms:GenerateDataKey` e relative alla chiave.

**Importante**  
Esamina attentamente le autorizzazioni concesse nelle policy delle chiavi KMS. Limita sempre le autorizzazioni relative alle policy chiave KMS gestite dal cliente solo ai responsabili e ai AWS servizi IAM che devono accedere all'azione chiave pertinente. AWS KMS [Per ulteriori informazioni, consulta Politiche chiave in. AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)

**Topics**
+ [

## AWS KMS keys
](#aws-managed-customer-managed-keys)
+ [

## Chiavi bucket Amazon S3
](#sse-kms-bucket-keys)
+ [

## Richiesta della crittografia lato server
](#require-sse-kms)
+ [

## Contesto di crittografia
](#encryption-context)
+ [

## Invio di richieste per oggetti AWS KMS crittografati
](#aws-signature-version-4-sse-kms)
+ [

# Specificare la crittografia lato server con AWS KMS (SSE-KMS)
](specifying-kms-encryption.md)
+ [

# Riduzione del costo di SSE-KMS con le chiavi bucket Amazon S3
](bucket-key.md)

## AWS KMS keys
<a name="aws-managed-customer-managed-keys"></a>

Quando utilizzi la crittografia lato server con AWS KMS (SSE-KMS), puoi utilizzare la [chiave AWS gestita predefinita oppure puoi specificare una chiave gestita](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) [dal cliente che hai già creato](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk). AWS KMS *supporta la crittografia delle buste.* S3 utilizza le AWS KMS funzionalità di *crittografia delle buste per proteggere ulteriormente i dati*. La crittografia a busta consiste nel crittografare i dati di testo non crittografato con una chiave di dati e quindi nel crittografare la chiave di dati con una chiave KMS. Per ulteriori informazioni sulla crittografia envelope, consulta [Crittografia envelope](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#enveloping) nella *Guida per sviluppatori di AWS Key Management Service *.

Se non specifichi una chiave gestita dal cliente, Amazon S3 ne crea automaticamente una per Account AWS la prima volta che aggiungi un Chiave gestita da AWS oggetto crittografato con SSE-KMS a un bucket. Per impostazione predefinita, Amazon S3 utilizza questa chiave KMS per SSE-KMS. 

**Nota**  
Gli oggetti crittografati mediante SSE-KMS con [Chiavi gestite da AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) non possono essere condivisi tra più account. [Se devi condividere i dati SSE-KMS tra più account, devi utilizzare una chiave gestita dal cliente da.](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) AWS KMS

Se desideri utilizzare una chiave gestita dal cliente per SSE-KMS, crea una chiave di crittografia simmetrica gestita dal cliente prima di configurare SSE-KMS. Quindi, quando configuri SSE-KMS per il bucket, potrai specificare la chiave gestita dal cliente esistente. Per ulteriori informazioni sulla chiave di crittografia simmetrica, consulta [Chiavi KMS di crittografia simmetrica](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#symmetric-cmks) nella *Guida per gli sviluppatori di AWS Key Management Service *.

La creazione di una chiave gestita dal cliente offre maggiore flessibilità e controllo. Ad esempio, puoi creare, ruotare e disabilitare le chiavi gestite dal cliente. Puoi anche definire controlli di accesso e controllare le chiavi gestite dal cliente utilizzate per proteggere i dati. *Per ulteriori informazioni sulle chiavi gestite e AWS gestite dal cliente, consulta [Customer keys and AWS keys](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#key-mgmt) nella Developer Guide.AWS Key Management Service *

**Nota**  
Quando utilizzi la crittografia lato server con una chiave gestita dal cliente archiviata in un archivio di chiavi esterno, a differenza delle chiavi KMS standard, hai la responsabilità di garantire la disponibilità e la durata del materiale chiave. Per ulteriori informazioni sugli archivi di chiavi esterni e sul loro impatto sul modello di responsabilità condivisa, vedi [Archivi di chiavi esterni](https://docs.aws.amazon.com//kms/latest/developerguide/keystore-external.html) nella *Guida per gli sviluppatori di AWS Key Management Service *.

### Utilizzo della crittografia SSE-KMS per operazioni multi-account
<a name="sse-kms-cross-account-operations"></a>

Quando si utilizza la crittografia per operazioni multi-account, tieni presente quanto segue:
+ Se un AWS KMS key Amazon Resource Name (ARN) o un alias non viene fornito al momento della richiesta o tramite la configurazione di crittografia predefinita del bucket, il Chiave gestita da AWS (`aws/s3`) dell'account di caricamento viene utilizzato per la crittografia ed è necessario per la decrittografia.
+ Chiave gestita da AWS (`aws/s3`) può essere utilizzata come chiave KMS per operazioni su più account quando i principali di caricamento e accesso AWS Identity and Access Management (IAM) provengono dagli stessi. Account AWS
+ Se desideri concedere l'accesso multi-account agli oggetti S3, utilizza una chiave gestita dal cliente. È possibile configurare la policy di una chiave gestita dal cliente per consentire l'accesso da un altro account.
+ Se si specifica una chiave KMS gestita dal cliente, si consiglia di utilizzare un ARN della chiave KMS completamente qualificato. Se invece utilizzi un alias di chiave KMS, AWS KMS risolve la chiave all'interno dell'account del richiedente. Ciò potrebbe comportare la crittografia dei dati con una chiave KMS di proprietà del richiedente e non del proprietario del bucket.
+ È necessario specificare una chiave per cui il richiedente ha ottenuto l'autorizzazione `Encrypt`. Per ulteriori informazioni, consulta l'argomento relativo all'[autorizzazione concessa agli utenti delle chiavi di utilizzare una chiave KMS per le operazioni di crittografia](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-users-crypto) nella *Guida per gli sviluppatori di AWS Key Management Service *.

Per ulteriori informazioni su quando utilizzare le chiavi gestite dal cliente e le chiavi KMS AWS gestite, consulta [Devo usare una chiave Chiave gestita da AWS o una chiave gestita dal cliente per crittografare i miei oggetti in Amazon S3](https://aws.amazon.com/premiumsupport/knowledge-center/s3-object-encryption-keys/)?

### Flusso di lavoro della crittografia SSE-KMS
<a name="sse-kms-encryption-workflow"></a>

Se scegli di crittografare i tuoi dati utilizzando una chiave Chiave gestita da AWS o una chiave gestita dal cliente AWS KMS e Amazon S3 esegue le seguenti azioni di crittografia della busta:

1. Amazon S3 richiede una [chiave di dati](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#data-keys) in testo non formattato e una copia della chiave crittografata con la chiave KMS specificata.

1. AWS KMS genera una chiave dati, la crittografa con la chiave KMS e invia sia la chiave dati in testo semplice che la chiave dati crittografata ad Amazon S3.

1. Amazon S3 crittografa i dati utilizzando la chiave di dati ed eliminando appena possibile la chiave di testo normale dalla memoria dopo l'utilizzo.

1. Amazon S3 archivia la chiave di dati crittografata come metadati con i dati crittografati.

Quando richiedi che i tuoi dati vengano decrittografati, usa Amazon S3 AWS KMS ed esegui le seguenti azioni:

1. Amazon S3 invia la chiave dati crittografata AWS KMS a una `Decrypt` richiesta.

1. AWS KMS decrittografa la chiave dati crittografata utilizzando la stessa chiave KMS e restituisce la chiave dati in testo semplice ad Amazon S3.

1. Amazon S3 utilizza la chiave di dati non crittografati per decrittografare i dati crittografati, quindi rimuove il prima possibile la chiave di dati non crittografati dalla memoria.

**Importante**  
Quando utilizzi una AWS KMS key 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](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#symmetric-cmks) nella *Guida per gli sviluppatori di AWS Key Management Service *.

### Verifica della crittografia SSE-KMS
<a name="sse-kms-encryption-audit"></a>

Per identificare le richieste che specificano SSE-KMS, puoi utilizzare i parametri **All SSE-KMS requests** (Tutte le richieste SSE-KMS) e **% all SSE-KMS requests** (% tutte le richieste SSE-KMS) nei parametri di Amazon S3 Storage Lens. S3 Storage Lens è una funzionalità di analisi dell'archiviazione su cloud che puoi utilizzare per avere una panoramica completa a livello di organizzazione sull'utilizzo e sulle attività relative all'archiviazione di oggetti. È inoltre possibile utilizzare il conteggio dei bucket abilitati SSE-KMS e la % di bucket abilitati SSE-KMS per capire il conteggio dei bucket che (SSE-KMS) per la [crittografia predefinita dei bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-encryption.html). Per ulteriori informazioni, consulta [ Valutazione dell'attività e dell'utilizzo dello storage con S3 Storage Lens](https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage_lens.html?icmpid=docs_s3_user_guide_UsingKMSEncryption.html). Per un elenco completo dei parametri, consulta [Glossario dei parametri di S3 Storage](https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage_lens_metrics_glossary.html?icmpid=docs_s3_user_guide_UsingKMSEncryption.html).

Per verificare l'utilizzo delle AWS KMS chiavi per i dati crittografati SSE-KMS, puoi utilizzare i log. AWS CloudTrail Puoi ottenere informazioni dettagliate sulle tue [operazioni crittografiche](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#cryptographic-operations), ad esempio e. [https://docs.aws.amazon.com/kms/latest/developerguide/ct-generatedatakey.html](https://docs.aws.amazon.com/kms/latest/developerguide/ct-generatedatakey.html) CloudTrail supporta numerosi [valori di attributo](https://docs.aws.amazon.com/awscloudtrail/latest/APIReference/API_LookupEvents.html) per filtrare la ricerca, tra cui il nome dell'evento, il nome utente e l'origine dell'evento. 

## Chiavi bucket Amazon S3
<a name="sse-kms-bucket-keys"></a>

Quando configuri la crittografia lato server utilizzando AWS KMS (SSE-KMS), puoi configurare i bucket per utilizzare S3 Bucket Keys per SSE-KMS. L'utilizzo di una chiave a livello di bucket per SSE-KMS può ridurre i costi delle AWS KMS richieste fino al 99 percento diminuendo il traffico delle richieste da Amazon S3 a. AWS KMS

Quando si configura il bucket per utilizzare una chiave di bucket S3 per SSE-KMS su nuovi oggetti, AWS KMS genera una chiave a livello di bucket che viene utilizzata per creare [chiavi di dati](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#data-keys) univoche per gli oggetti nel bucket. Questa S3 Bucket Key viene utilizzata per un periodo di tempo limitato all'interno di Amazon S3, riducendo ulteriormente la necessità per Amazon S3 di effettuare richieste per completare le operazioni di crittografia. AWS KMS Per ulteriori informazioni sull'utilizzo delle chiavi del bucket S3, consulta la sezione [Riduzione del costo di SSE-KMS con le chiavi bucket Amazon S3](bucket-key.md).

## Richiesta della crittografia lato server
<a name="require-sse-kms"></a>

Per richiedere la crittografia lato server di tutti gli oggetti in uno specifico bucket Amazon S3, è possibile utilizzare una policy di bucket. Ad esempio, la seguente policy di bucket rifiuta a chiunque l'autorizzazione al caricamento dell'oggetto (`s3:PutObject`) se la richiesta non include un'intestazione `x-amz-server-side-encryption-aws-kms-key-id` che richiede la crittografia lato server con SSE-KMS.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Id":"PutObjectPolicy",
   "Statement":[{
         "Sid":"DenyObjectsThatAreNotSSEKMS",
         "Effect":"Deny",
         "Principal":"*",
         "Action":"s3:PutObject",
         "Resource":"arn:aws:s3:::amzn-s3-demo-bucket1/*",
         "Condition":{
            "Null":{
               "s3:x-amz-server-side-encryption-aws-kms-key-id":"true"
            }
         }
      }
   ]
}
```

------

Per richiedere che un particolare AWS KMS key venga utilizzato per crittografare gli oggetti in un bucket, puoi usare la chiave condition. `s3:x-amz-server-side-encryption-aws-kms-key-id` Per specificare la chiave KMS, devi utilizzare una chiave Amazon Resource Name (ARN) nel `arn:aws:kms:region:acct-id:key/key-id` formato. AWS Identity and Access Management non convalida se la stringa for esiste. `s3:x-amz-server-side-encryption-aws-kms-key-id` 

**Nota**  
Quando si carica un oggetto, è possibile specificare la chiave KMS utilizzando l'intestazione `x-amz-server-side-encryption-aws-kms-key-id` o affidarsi alla [configurazione predefinita della crittografia del bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-encryption.html). Se la tua PutObject richiesta è specificata `aws:kms` nell'`x-amz-server-side-encryption`intestazione, ma non specifica l'`x-amz-server-side-encryption-aws-kms-key-id`intestazione, Amazon S3 presume che tu voglia utilizzare il. Chiave gestita da AWS Indipendentemente da ciò, l'ID della AWS KMS chiave utilizzato da Amazon S3 per la crittografia degli oggetti deve corrispondere all'ID della AWS KMS chiave nella policy, altrimenti Amazon S3 nega la richiesta.

Per un elenco completo delle chiavi di condizione specifiche per Amazon S3, consulta [Chiavi di condizione per Amazon S3](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html#amazons3-policy-keys) in *Riferimento alle autorizzazioni di servizio*.

## Contesto di crittografia
<a name="encryption-context"></a>

Un *contesto di crittografia* è un set di coppie chiave-valore che contiene ulteriori informazioni contestuali sui dati. Il contesto di crittografia non è crittografato. Quando viene specificato un contesto di crittografia per un'operazione di crittografia, Amazon S3 deve specificare lo stesso contesto di crittografia per l'operazione di decrittografia. In caso contrario, la decrittografia non riesce. AWS KMS [utilizza il contesto di crittografia come [dati autenticati aggiuntivi](https://docs.aws.amazon.com/database-encryption-sdk/latest/devguide/concepts.html#digital-sigs) (AAD) per supportare la crittografia autenticata.](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#cryptographic-operations#digital-sigs) Per ulteriori informazioni sul contesto di crittografia, consulta il [Contesto di crittografia](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context) nella *Guida per gli sviluppatori di AWS Key Management Service *. 

Per impostazione predefinita, Amazon S3 utilizza il nome della risorsa Amazon (ARN) dell'oggetto o del bucket come coppia di contesto di crittografia: 
+ **Se utilizzi SSE-KMS senza abilitare una chiave bucket S3**, l'ARN del oggetto viene utilizzato come contesto di crittografia.

  ```
  arn:aws:s3:::object_ARN
  ```
+ **Se utilizzi SSE-KMS e abiliti una chiave di bucket S3**, l'ARN del bucket viene utilizzato come contesto di crittografia. Per ulteriori informazioni sui bucket S3, consulta la sezione [Riduzione del costo di SSE-KMS con le chiavi bucket Amazon S3](bucket-key.md).

  ```
  arn:aws:s3:::bucket_ARN
  ```

[Facoltativamente, puoi fornire una coppia di contesti di crittografia aggiuntiva utilizzando l'`x-amz-server-side-encryption-context`intestazione in una richiesta s3:. PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html#API_PutObject_RequestSyntax) Tuttavia, poiché il contesto di crittografia non è crittografato, assicurati che non includa informazioni sensibili. Amazon S3 archivia questa coppia di chiavi aggiuntiva insieme al contesto di crittografia predefinito. Quando elabora la tua richiesta `PUT`, Amazon S3 aggiunge il contesto di crittografia predefinito di `aws:s3:arn` a quello che fornisci. 

È possibile utilizzare il contesto di crittografia per identificare e categorizzare le operazioni di crittografia. Puoi anche utilizzare il valore ARN del contesto di crittografia predefinito per tenere traccia delle richieste pertinenti AWS CloudTrail visualizzando quale ARN Amazon S3 è stato utilizzato con quale chiave di crittografia.

Nel `requestParameters` campo di un file di CloudTrail registro, il contesto di crittografia è simile al seguente. 

```
"encryptionContext": {
    "aws:s3:arn": "arn:aws:s3:::amzn-s3-demo-bucket1/file_name"
}
```

Quando utilizzi SSE-KMS con la funzione opzionale chiavi bucket S3, il valore di contesto di crittografia è l'ARN del bucket.

```
"encryptionContext": {
    "aws:s3:arn": "arn:aws:s3:::amzn-s3-demo-bucket1"
}
```

## Invio di richieste per oggetti AWS KMS crittografati
<a name="aws-signature-version-4-sse-kms"></a>

**Importante**  
Tutte `GET` le `PUT` richieste di oggetti AWS KMS crittografati devono essere effettuate utilizzando Secure Sockets Layer (SSL) o Transport Layer Security (TLS). Le richieste devono inoltre essere firmate utilizzando credenziali valide, come AWS Signature Version 4 (o AWS Signature Version 2).

AWS Signature Version 4 è il processo di aggiunta di informazioni di autenticazione alle AWS richieste inviate tramite HTTP. Per motivi di sicurezza, la maggior parte delle richieste AWS deve essere firmata con una chiave di accesso, che consiste in un ID della chiave di accesso e una chiave di accesso segreta. Queste due chiavi in genere vengono definite come le tue credenziali di sicurezza. Per ulteriori informazioni, consulta le sezioni [Autenticazione delle richieste (AWS Signature Version 4)](https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html) e [Processo di firma Signature Version 4](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html).

**Importante**  
Se l'oggetto utilizza SSE-KMS, non inviare intestazioni di richiesta di crittografia per le richieste `GET` e `HEAD`. In caso contrario, riceverai un errore HTTP 400 Bad Request (HTTP 400 - Richiesta non valida).

**Topics**
+ [

## AWS KMS keys
](#aws-managed-customer-managed-keys)
+ [

## Chiavi bucket Amazon S3
](#sse-kms-bucket-keys)
+ [

## Richiesta della crittografia lato server
](#require-sse-kms)
+ [

## Contesto di crittografia
](#encryption-context)
+ [

## Invio di richieste per oggetti AWS KMS crittografati
](#aws-signature-version-4-sse-kms)
+ [

# Specificare la crittografia lato server con AWS KMS (SSE-KMS)
](specifying-kms-encryption.md)
+ [

# Riduzione del costo di SSE-KMS con le chiavi bucket Amazon S3
](bucket-key.md)

# Specificare la crittografia lato server con AWS KMS (SSE-KMS)
<a name="specifying-kms-encryption"></a>

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. Per utilizzare un diverso tipo di crittografia, puoi specificare il tipo di crittografia lato server da utilizzare nelle richieste `PUT` S3 oppure aggiornare la configurazione di crittografia predefinita nel bucket di destinazione. 

Se desideri specificare un tipo di crittografia diverso nelle tue `PUT` richieste, puoi utilizzare la crittografia lato server con () chiavi AWS Key Management Service (SSE-KMS AWS KMS), la crittografia lato server a due livelli con chiavi (DSSE-KMS) o la crittografia lato server con AWS KMS chiavi fornite dal cliente (SSE-C). Per impostare una configurazione di crittografia predefinita diversa nel bucket di destinazione puoi utilizzare SSE-KMS o DSSE-KMS.

Per ulteriori informazioni su come modificare la configurazione di crittografia predefinita per i bucket per uso generico, consulta [Configurazione della crittografia predefinita](default-bucket-encryption.md). 

Quando modifichi la configurazione di crittografia predefinita del bucket in SSE-KMS, il tipo di crittografia degli oggetti Amazon S3 esistenti nel bucket non viene modificato. Per modificare il tipo di crittografia degli oggetti preesistenti dopo aver aggiornato la configurazione di crittografia predefinita a SSE-KMS, puoi utilizzare Operazioni in batch Amazon S3. Si fornisce a Operazioni in batch S3 un elenco di oggetti e Operazioni in batch richiama la rispettiva operazione API. È possibile utilizzare l’azione [Copia oggetti](batch-ops-copy-object.md) per copiare gli oggetti esistenti, scrivendoli nello stesso bucket degli oggetti crittografati SSE-KMS. Un solo processo di operazioni in batch può eseguire l'operazione specificata su miliardi di oggetti. Per ulteriori informazioni, consulta [Esecuzione di operazioni sugli oggetti in blocco con le operazioni in batch](batch-ops.md) e il post [Come crittografare retroattivamente gli oggetti esistenti in Amazon S3 utilizzando Inventario S3, Amazon Athena e Operazioni in batch S3](https://aws.amazon.com/blogs/security/how-to-retroactively-encrypt-existing-objects-in-amazon-s3-using-s3-inventory-amazon-athena-and-s3-batch-operations/) nel *Blog dell’archiviazione AWS *. 

Puoi specificare SSE-KMS utilizzando la console Amazon S3, le operazioni API REST e il (). AWS SDKs AWS Command Line Interface AWS CLI Per ulteriori informazioni, consulta i seguenti argomenti. 

**Nota**  
Puoi usare più regioni AWS KMS keys 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 multiregione](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html) nella *Guida per gli sviluppatori di AWS Key Management Service *.

**Nota**  
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](https://docs.aws.amazon.com//kms/latest/developerguide/key-policy-modifying-external-accounts.html#cross-account-console) nella *Guida per gli sviluppatori di AWS Key Management Service *. 

## Utilizzo della console S3
<a name="add-object-encryption-kms"></a>

Questo argomento descrive come impostare o modificare il tipo di crittografia di un oggetto per utilizzare la crittografia lato server con AWS Key Management Service (AWS KMS) chiavi (SSE-KMS) utilizzando la console Amazon S3.

**Nota**  
È possibile modificare la crittografia di un oggetto se l'oggetto è inferiore a 5 GB. Se l'oggetto è superiore a 5 GB, è necessario utilizzare [AWS CLI](mpu-upload-object.md#UsingCLImpUpload)o [AWS SDKs](CopyingObjectsMPUapi.md)per modificare la crittografia di un oggetto.
Per un elenco delle autorizzazioni aggiuntive necessarie per modificare la crittografia di un oggetto, consulta [Autorizzazioni necessarie per le operazioni API di Amazon S3](using-with-s3-policy-actions.md). Per esempi di policy che concedono questa autorizzazione, consulta [Esempi di policy basate sull'identità per Amazon S3](example-policies-s3.md).
Se si modifica la crittografia di un oggetto, viene creato un nuovo oggetto per sostituire quello precedente. Se è abilitata la funzione Controllo delle versioni S3, viene creata una nuova versione dell'oggetto e l'oggetto esistente diventa una versione precedente. Il ruolo che modifica la proprietà diventa anche il proprietario del nuovo oggetto o della versione dell'oggetto. 

**Per aggiungere o modificare la crittografia di un oggetto**

1. Accedi Console di gestione AWS e apri la console Amazon S3 all'indirizzo. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Nel riquadro di navigazione, scegli **Bucket**, quindi scegli la scheda **Bucket per uso generico**. Naviga al bucket o alla cartella Amazon S3 che contiene gli oggetti da modificare.

1. Seleziona la casella di controllo degli oggetti da modificare.

1. Nel menu **Azioni**, scegli **Modifica crittografia lato server** dall'elenco di opzioni visualizzato.

1. Scorrere fino alla sezione **Crittografia lato server**.

1. In **Impostazioni di crittografia**, scegli **Utilizza le impostazioni del bucket per la crittografia predefinita** o **Ignora le impostazioni del bucket per la crittografia predefinita**.
**Importante**  
Se usi l'opzione SSE-KMS per la configurazione della crittografia predefinita, vengono applicati i limiti di richieste al secondo (RPS) pari a AWS KMS. Per ulteriori informazioni sulle quote AWS KMS e su come richiedere un aumento delle quote, consulta [Quote](https://docs.aws.amazon.com/kms/latest/developerguide/limits.html) nella *Guida per gli sviluppatori di AWS Key Management Service *. 

1. Se scegli **Sostituisci impostazioni del bucket per la crittografia predefinita**, configura le seguenti impostazioni di crittografia.

   1. In **Tipo di crittografia**, scegli Crittografia **lato server con AWS Key Management Service chiavi (SSE-KMS**).

   1. In **AWS KMS key**, esegui una delle seguenti operazioni per scegliere la chiave KMS:
      + Per scegliere da un elenco di chiavi KMS disponibili, seleziona **Scegli tra le chiavi AWS KMS keys**, quindi scegli la **chiave KMS** dall'elenco delle chiavi disponibili.

        In questo elenco vengono visualizzate sia la chiave Chiave gestita da AWS (`aws/s3`) che quella gestita dal cliente. Per ulteriori informazioni sulle chiavi gestite dal cliente, consulta [Chiavi gestite dal cliente e chiavi AWS](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#key-mgmt) nella *Guida per gli sviluppatori di AWS Key Management Service *.
      + Per inserire l'ARN della chiave KMS, scegli **Inserisci AWS KMS key ARN**, quindi inserisci l'ARN della chiave KMS nel campo visualizzato. 
      + **Per creare una nuova chiave gestita dal cliente nella AWS KMS console, scegli Crea una chiave KMS.**

        Per ulteriori informazioni sulla creazione di una AWS KMS key, consulta [Creating keys](https://docs.aws.amazon.com//kms/latest/developerguide/create-keys.html) nella *AWS Key Management Service Developer Guide*.
**Importante**  
Puoi utilizzare solo le chiavi KMS disponibili nello Regione AWS stesso bucket. La console Amazon S3 elenca solo le prime 100 chiavi KMS nella stessa Regione del bucket. Per utilizzare una chiave KMS non elencata, devi inserire l'ARN della chiave KMS. Se desideri utilizzare una chiave KMS di proprietà di un account diverso, è necessario innanzitutto disporre dell'autorizzazione necessaria per l'uso della chiave e quindi inserire l'ARN della chiave KMS.  
Amazon S3 supporta solo chiavi KMS di crittografia simmetriche e non chiavi KMS asimmetriche. Per ulteriori informazioni, consulta [Identificazione delle chiavi KMS simmetriche e asimmetriche](https://docs.aws.amazon.com//kms/latest/developerguide/find-symm-asymm.html) nella *Guida per gli sviluppatori di AWS Key Management Service *.

1. In **Impostazioni di copia aggiuntive**, scegli se eseguire **Copia impostazioni dell'origine**, **Non specificare le impostazioni** o **Specifica le impostazioni**. **Copia impostazioni dell'origine** è l'opzione predefinita. Se desideri copiare solo l'oggetto senza gli attributi delle impostazioni dell'origine, scegli **Non specificare le impostazioni**. Scegliete **Specificate impostazioni** per specificare le impostazioni per la classe di archiviazione ACLs, i tag degli oggetti, i metadati, la crittografia lato server e i checksum aggiuntivi.

1. Scegli **Save changes** (Salva modifiche).

**Nota**  
Questa azione applica la crittografia a tutti gli oggetti specificati. Durante la crittografia delle cartelle, attendere il completamento dell'operazione di salvataggio prima di aggiungere nuovi oggetti alla cartella.

## Utilizzo della REST API
<a name="KMSUsingRESTAPI"></a>

Quando crei un oggetto, ovvero quando carichi un nuovo oggetto o copi un oggetto esistente, puoi specificare l'uso della crittografia lato server con le AWS KMS keys (SSE-KMS) per crittografare i dati. Per fare ciò, aggiungi l'intestazione `x-amz-server-side-encryption` alla richiesta. Impostare il valore dell'intestazione sull'algoritmo di crittografia `aws:kms`. Amazon S3 conferma che l'oggetto è stato archiviato utilizzando SSE-KMS restituendo l'intestazione della risposta `x-amz-server-side-encryption`. 

Se specifichi l'intestazione `x-amz-server-side-encryption` con il valore `aws:kms`, puoi anche utilizzare le intestazioni di richiesta seguenti:
+ `x-amz-server-side-encryption-aws-kms-key-id`
+ `x-amz-server-side-encryption-context`
+ `x-amz-server-side-encryption-bucket-key-enabled`

**Topics**
+ [

### Operazioni REST API di Amazon S3 che supportano SSE-KMS
](#sse-request-headers-kms)
+ [

### Contesto di crittografia (`x-amz-server-side-encryption-context`)
](#s3-kms-encryption-context)
+ [

### AWS KMS ID chiave () `x-amz-server-side-encryption-aws-kms-key-id`
](#s3-kms-key-id-api)
+ [

### Chiavi bucket S3 (`x-amz-server-side-encryption-aws-bucket-key-enabled`)
](#bucket-key-api)

### Operazioni REST API di Amazon S3 che supportano SSE-KMS
<a name="sse-request-headers-kms"></a>

Le operazioni REST API seguenti accettano le intestazioni di richiesta `x-amz-server-side-encryption`, `x-amz-server-side-encryption-aws-kms-key-id` e `x-amz-server-side-encryption-context`.
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html): quando carichi i dati utilizzando l'operazione API `PUT`, è possibile specificare queste intestazioni di richiesta. 
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html) - 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. Quando si copia un oggetto esistente, indipendentemente dal fatto che l'oggetto di partenza sia criptato o meno, l'oggetto di destinazione non viene criptato, a meno che non si richieda esplicitamente la crittografia lato server.
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html) - Quando si usa un'operazione `POST` per caricare un oggetto, invece delle intestazioni della richiesta, si forniscono le stesse informazioni nei campi del modulo.
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html) - 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.
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html)

**Importante**  
Tutte le richieste di `GET` e `PUT` per un oggetto protetto da AWS KMS falliscono se non si effettuano queste richieste utilizzando Secure Sockets Layer (SSL), Transport Layer Security (TLS) o Signature Version 4.
Se il tuo oggetto utilizza SSE-KMS, non inviare le intestazioni delle richieste di crittografia per `GET` richieste e `HEAD` richieste, altrimenti riceverai un errore HTTP 400. BadRequest

### Contesto di crittografia (`x-amz-server-side-encryption-context`)
<a name="s3-kms-encryption-context"></a>

Se si specifica `x-amz-server-side-encryption:aws:kms`, l'API Amazon S3 supporta un contesto di crittografia con l'intestazione `x-amz-server-side-encryption-context`. Un contesto di crittografia è un set di coppie chiave-valore che possono contenere ulteriori informazioni contestuali sui dati.

Amazon S3 utilizza automaticamente l'oggetto o il bucket Amazon Resource Name (ARN) come coppia di contesto di crittografia. Se utilizzi SSE-KMS senza abilitare una chiave bucket S3, usa l'ARN dell'oggetto come contesto di crittografia, ad esempio `arn:aws:s3:::object_ARN`. Se invece utilizzi SSE-KMS e abiliti una chiave bucket S3, usa l'ARN del bucket per il contesto di crittografia, ad esempio `arn:aws:s3:::bucket_ARN`. 

Facoltativamente, è possibile fornire una coppia di contesto di crittografia aggiuntiva utilizzando l'intestazione `x-amz-server-side-encryption-context`. Tuttavia, poiché il contesto di crittografia non è criptato, assicurarsi che non contenga informazioni sensibili. Amazon S3 archivia questa coppia di chiavi aggiuntiva insieme al contesto di crittografia predefinito.

Per informazioni sul contesto di crittografia in Amazon S3, consulta la sezione [Contesto di crittografia](UsingKMSEncryption.md#encryption-context). Per informazioni generali sul contesto di crittografia, consulta [Concetti di AWS Key Management Service : Contesto di crittografia](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context) nella *Guida per gli sviluppatori di AWS Key Management Service *. 

### AWS KMS ID chiave () `x-amz-server-side-encryption-aws-kms-key-id`
<a name="s3-kms-key-id-api"></a>

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. Se specifichi l'intestazione `x-amz-server-side-encryption:aws:kms`, ma non fornisci l'intestazione `x-amz-server-side-encryption-aws-kms-key-id`, Amazon S3 utilizza la Chiave gestita da AWS (`aws/s3`) per proteggere i dati. Se desideri utilizzare una chiave gestita dal cliente, devi fornire l'intestazione `x-amz-server-side-encryption-aws-kms-key-id` della chiave gestita dal cliente.

**Importante**  
Quando utilizzi una AWS KMS key 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](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#symmetric-cmks) nella *Guida per gli sviluppatori di AWS Key Management Service *.

### Chiavi bucket S3 (`x-amz-server-side-encryption-aws-bucket-key-enabled`)
<a name="bucket-key-api"></a>

È possibile utilizzare l'intestazione della richiesta `x-amz-server-side-encryption-aws-bucket-key-enabled` per abilitare o disabilitare un bucket S3 Key a livello di oggetto. S3 Bucket Keys riduce i costi delle AWS KMS richieste diminuendo il traffico delle richieste da Amazon S3 a. AWS KMS Per ulteriori informazioni, consulta [Riduzione del costo di SSE-KMS con le chiavi bucket Amazon S3](bucket-key.md).

Se specifichi l'intestazione `x-amz-server-side-encryption:aws:kms` ma non fornisci l'intestazione `x-amz-server-side-encryption-aws-bucket-key-enabled`, per crittografare l'oggetto saranno utilizzate le impostazioni della chiave bucket S3 per il bucket di destinazione. Per ulteriori informazioni, consulta [Configurazione di una chiave bucket S3 a livello di oggetto](configuring-bucket-key-object.md).

## Utilizzando il AWS CLI
<a name="KMSUsingCLI"></a>

Per utilizzare i seguenti AWS CLI comandi di esempio, `user input placeholders` sostituiscili con le tue informazioni.

Quando caricate un nuovo oggetto o copiate un oggetto esistente, potete specificare l'uso della crittografia lato server con AWS KMS chiavi per crittografare i dati. Per fare ciò, aggiungi l'intestazione `--server-side-encryption aws:kms` alla richiesta. Utilizza il `--ssekms-key-id example-key-id` per aggiungere la [AWS KMS chiave gestita dal cliente](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#customer-cmk) che hai creato. Se specifichi`--server-side-encryption aws:kms`, ma non fornisci un ID di AWS KMS chiave, Amazon S3 utilizzerà una chiave AWS gestita.

```
aws s3api put-object --bucket amzn-s3-demo-bucket --key example-object-key --server-side-encryption aws:kms --ssekms-key-id example-key-id --body filepath
```

Puoi inoltre abilitare o disabilitare le chiavi di bucket Amazon S3 nelle operazioni PUT o COPY aggiungendo `--bucket-key-enabled` o `--no-bucket-key-enabled`. Amazon S3 Bucket Keys può ridurre i costi delle AWS KMS richieste diminuendo il traffico delle richieste da Amazon S3 a. AWS KMS Per ulteriori informazioni, consulta [Riduzione del costo di SSE-KMS con le chiavi bucket Amazon S3](https://docs.aws.amazon.com//AmazonS3/latest/userguide/bucket-key.html).

```
aws s3api put-object --bucket amzn-s3-demo-bucket --key example-object-key --server-side-encryption aws:kms --bucket-key-enabled --body filepath
```

È possibile crittografare un oggetto non crittografato con SSE-KMS copiando l'oggetto nella sua posizione.

```
aws s3api copy-object --bucket amzn-s3-demo-bucket --key example-object-key --body filepath --bucket amzn-s3-demo-bucket --key example-object-key --sse aws:kms --sse-kms-key-id example-key-id --body filepath
```

## Utilizzando il AWS SDKs
<a name="kms-using-sdks"></a>

Durante l'utilizzo AWS SDKs, puoi richiedere che Amazon S3 venga utilizzato AWS KMS keys per la crittografia lato server. Gli esempi seguenti mostrano come usare SSE-KMS con Java e.NET. AWS SDKs Per informazioni su altri SDKs, consulta [Codice di esempio e librerie](https://aws.amazon.com/code) nel AWS Developer Center.

**Importante**  
Quando utilizzi una AWS KMS key 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](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#symmetric-cmks) nella *Guida per gli sviluppatori di AWS Key Management Service *.

### Operazione `CopyObject`
<a name="kms-copy-operation"></a>

Quando copi gli oggetti, puoi aggiungere le stesse proprietà della richiesta (`ServerSideEncryptionMethod` e `ServerSideEncryptionKeyManagementServiceKeyId`) per richiedere che Amazon S3 utilizzi una AWS KMS key. Per ulteriori informazioni sulla copia di oggetti, consulta la sezione [Copia, spostamento e denominazione di oggetti](copy-object.md). 

### Operazione `PUT`
<a name="kms-put-operation"></a>

------
#### [ Java ]

Quando carichi un oggetto utilizzando il AWS SDK per Java, puoi richiedere ad Amazon S3 di utilizzare AWS KMS key un oggetto aggiungendo `SSEAwsKeyManagementParams` la proprietà come mostrato nella seguente richiesta:

```
PutObjectRequest putRequest = new PutObjectRequest(bucketName,
   keyName, file).withSSEAwsKeyManagementParams(new SSEAwsKeyManagementParams());
```

In questo caso, Amazon S3 utilizza Chiave gestita da AWS ()`aws/s3`. Per ulteriori informazioni, consulta [Utilizzo della crittografia lato server con chiavi (SSE-KMS) AWS KMS](UsingKMSEncryption.md). È possibile creare facoltativamente una chiave KMS di crittografia simmetrica e specificarla nella richiesta, come mostrato nell'esempio seguente:

```
PutObjectRequest putRequest = new PutObjectRequest(bucketName,
   keyName, file).withSSEAwsKeyManagementParams(new SSEAwsKeyManagementParams(keyID));
```

Per ulteriori informazioni sulla creazione di chiavi gestite dal cliente, consulta [Programming the AWS KMS API](https://docs.aws.amazon.com/kms/latest/developerguide/programming-top.html) nella *AWS Key Management Service Developer Guide*.

Per esempi di codice di utilizzo per il caricamento di un oggetto, consulta gli argomenti elencati di seguito. Per usare questi esempi dovrai aggiornare gli esempi di codice e fornire informazioni sulla crittografia come mostrato nel frammento di codice precedente.
+ Per il caricamento di un oggetto in un'unica operazione, consulta [Caricamento degli oggetti](upload-objects.md).
+ Per i caricamenti multiparte che utilizzano le operazioni API di caricamento multiparte di alto livello o di basso livello, consulta [Caricamento di un oggetto utilizzando il caricamento in più parti](mpu-upload-object.md). 

------
#### [ .NET ]

Quando carichi un oggetto utilizzando il AWS SDK per .NET, puoi richiedere ad Amazon S3 di utilizzare AWS KMS key un oggetto aggiungendo `ServerSideEncryptionMethod` la proprietà come mostrato nella seguente richiesta:

```
PutObjectRequest putRequest = new PutObjectRequest
 {
     BucketName = amzn-s3-demo-bucket,
     Key = keyName,
     // other properties
     ServerSideEncryptionMethod = ServerSideEncryptionMethod.AWSKMS
 };
```

In questo caso, Amazon S3 utilizza il. Chiave gestita da AWS Per ulteriori informazioni, consulta [Utilizzo della crittografia lato server con chiavi (SSE-KMS) AWS KMS](UsingKMSEncryption.md). È possibile creare una propria chiave di crittografia simmetrica gestita dal cliente e specificarla nella richiesta, come mostrato nell'esempio seguente:

```
PutObjectRequest putRequest1 = new PutObjectRequest
{
  BucketName = amzn-s3-demo-bucket,
  Key = keyName,
  // other properties
  ServerSideEncryptionMethod = ServerSideEncryptionMethod.AWSKMS,
  ServerSideEncryptionKeyManagementServiceKeyId = keyId
};
```

Per ulteriori informazioni sulla creazione di chiavi gestite dal cliente, consulta [Programming the AWS KMS API](https://docs.aws.amazon.com/kms/latest/developerguide/programming-top.html) nella *AWS Key Management Service Developer Guide*. 

Per esempi di codice di utilizzo per il caricamento di un oggetto, consulta gli argomenti elencati di seguito. Per usare questi esempi dovrai aggiornare gli esempi di codice e fornire informazioni sulla crittografia come mostrato nel frammento di codice precedente.
+ Per il caricamento di un oggetto in un'unica operazione, consulta [Caricamento degli oggetti](upload-objects.md).
+ Per i caricamenti multiparte che utilizzano le operazioni API di caricamento multiparte di alto livello o di basso livello, consulta [Caricamento di un oggetto utilizzando il caricamento in più parti](mpu-upload-object.md). 

------

### Predefinito URLs
<a name="kms-presigned-urls"></a>

------
#### [ Java ]

Quando si crea un URL prefirmato per un oggetto crittografato con AWS KMS key, è necessario specificare esplicitamente Signature Version 4, come mostrato nell'esempio seguente:

```
ClientConfiguration clientConfiguration = new ClientConfiguration();
clientConfiguration.setSignerOverride("AWSS3V4SignerType");
AmazonS3Client s3client = new AmazonS3Client(
        new ProfileCredentialsProvider(), clientConfiguration);
...
```

Per un esempio di codice, consulta [Condivisione di oggetti con presigned URLs](ShareObjectPreSignedURL.md). 

------
#### [ .NET ]

Quando si crea un URL prefirmato per un oggetto crittografato con AWS KMS key, è necessario specificare esplicitamente Signature Version 4, come mostrato nell'esempio seguente:

```
AWSConfigs.S3Config.UseSignatureVersion4 = true;
```

Per un esempio di codice, consulta [Condivisione di oggetti con presigned URLs](ShareObjectPreSignedURL.md).

------

# Riduzione del costo di SSE-KMS con le chiavi bucket Amazon S3
<a name="bucket-key"></a>

Amazon S3 Bucket Keys riduce il costo della crittografia lato server di Amazon S3 con AWS Key Management Service chiavi () (SSE-KMS).AWS KMS L'utilizzo di una chiave a livello di bucket per SSE-KMS può ridurre i costi delle AWS KMS richieste fino al 99 percento diminuendo il traffico delle richieste da Amazon S3 a. AWS KMS Con pochi clic nella Console di gestione AWS e senza alcuna modifica alle applicazioni client, potrai configurare il bucket in modo da utilizzare una chiave bucket S3 per la crittografia SSE-KMS sui nuovi oggetti.

**Nota**  
Le S3 Bucket Keys non sono supportate per la crittografia lato server a doppio livello con chiavi () (DSSE-KMS). AWS Key Management Service AWS KMS

## Chiavi bucket S3 per SSE-KMS
<a name="bucket-key-overview"></a>

I carichi di lavoro che accedono a milioni o miliardi di oggetti crittografati con SSE-KMS possono generare grandi volumi di richieste verso. AWS KMS[Quando usi SSE-KMS per proteggere i tuoi dati senza una S3 Bucket Key, Amazon S3 utilizza una chiave dati individuale per ogni oggetto. AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#data-keys) In questo caso, Amazon S3 effettua una chiamata AWS KMS ogni volta che viene effettuata una richiesta su un oggetto crittografato con KMS. Per informazioni sul funzionamento di SSE-KMS, consulta [Utilizzo della crittografia lato server con chiavi (SSE-KMS) AWS KMS](UsingKMSEncryption.md). 

Quando configuri il bucket per utilizzare una chiave S3 Bucket per SSE-KMS, AWS genera una chiave a livello di bucket di breve durata da, quindi la conserva temporaneamente in S3. AWS KMS Questa chiave a livello di bucket creerà chiavi di dati per i nuovi oggetti durante il relativo ciclo di vita. Le S3 Bucket Key vengono utilizzate per un periodo di tempo limitato all'interno di Amazon S3, riducendo la necessità per S3 di effettuare richieste AWS KMS per completare le operazioni di crittografia. Ciò riduce il traffico da S3 a AWS KMS, consentendoti di accedere AWS KMS agli oggetti crittografati in Amazon S3 a una frazione del costo precedente.

Le chiavi univoche a livello di bucket vengono recuperate almeno una volta per richiedente per garantire che l'accesso del richiedente alla chiave venga acquisito in un evento. AWS KMS CloudTrail Amazon S3 tratta i chiamanti come richiedenti diversi quando utilizzano ruoli o account diversi o lo stesso ruolo con politiche di ambito diverse. AWS KMS i risparmi sulle richieste riflettono il numero di richiedenti, i modelli di richiesta e l'età relativa degli oggetti richiesti. Ad esempio, un numero inferiore di richiedenti, la richiesta di più oggetti in una finestra temporale limitata e la crittografia con la stessa chiave a livello di bucket comportano un risparmio maggiore.

**Nota**  
L'utilizzo di S3 Bucket Keys ti consente di risparmiare sui costi delle AWS KMS richieste diminuendo le richieste a AWS KMS for `Encrypt` e le `Decrypt` operazioni tramite l'uso di una chiave a livello di bucket. `GenerateDataKey` In base alla progettazione, le richieste successive che sfruttano questa chiave a livello di bucket non generano richieste AWS KMS API né convalidano l'accesso in base alla policy della chiave. AWS KMS 

Quando si configura una chiave bucket S3, gli oggetti già presenti nel bucket non utilizzano la chiave Bucket S3. Per configurare una chiave bucket S3 per gli oggetti esistenti, è possibile utilizzare un'operazione `CopyObject`. Per ulteriori informazioni, consulta [Configurazione di una chiave bucket S3 a livello di oggetto](configuring-bucket-key-object.md).

Amazon S3 condividerà una chiave S3 bucket solo per gli oggetti crittografati dalla stessa AWS KMS key. Le S3 Bucket Keys sono compatibili con le chiavi KMS create da AWS KMS, il [materiale chiave importato e il materiale chiave supportato](https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html) da archivi di [chiavi personalizzati](https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html).

![\[Diagramma che mostra la AWS KMS generazione di una chiave bucket che crea chiavi dati per oggetti in un bucket.\]](http://docs.aws.amazon.com/it_it/AmazonS3/latest/userguide/images/S3-Bucket-Keys.png)


## Configurazione delle chiavi bucket S3
<a name="configure-bucket-key"></a>

Puoi configurare il tuo bucket per utilizzare una chiave S3 Bucket per SSE-KMS su nuovi oggetti tramite la console Amazon S3 o l'API REST. AWS SDKs AWS CLI Con le chiavi di bucket S3 abilitate sul bucket, gli oggetti caricati con una chiave SSE-KMS specificata diversamente utilizzeranno chiavi di bucket S3 proprie. Indipendentemente dall'impostazione della chiave di bucket S3, puoi includere l'intestazione `x-amz-server-side-encryption-bucket-key-enabled`con un valore `true` o `false` or nella richiesta, per sovrascrivere l'impostazione del bucket.

Prima di configurare il bucket per utilizzare una chiave bucket S3, consulta [Modifiche alla nota prima dell'abilitazione di una chiave bucket S3](#bucket-key-changes). 

### Configurazione di una chiave bucket S3 tramite la console di Amazon S3
<a name="configure-bucket-key-console"></a>

Quando crei un nuovo bucket, puoi configurarlo in modo da utilizzare una chiave bucket S3 per SSE-KMS su nuovi oggetti. Puoi inoltre configurare un bucket esistente in modo utilizzare una chiave bucket S3 per SSE-KMS su nuovi oggetti aggiornando le proprietà del bucket. 

Per ulteriori informazioni, consulta [Configurazione del bucket per utilizzare una chiave bucket S3 con SSE-KMS per nuovi oggetti](configuring-bucket-key.md).

### API REST e supporto SDK per S3 Bucket AWS CLI Keys AWS
<a name="configure-bucket-key-programmatic"></a>

Puoi utilizzare l'API REST o l' AWS SDK per configurare il tuo bucket in modo che utilizzi una S3 Bucket Key per SSE-KMS su nuovi oggetti. AWS CLI Puoi inoltre abilitare una chiave bucket S3 a livello di oggetto.

Per ulteriori informazioni, consulta gli argomenti seguenti: 
+ [Configurazione di una chiave bucket S3 a livello di oggetto](configuring-bucket-key-object.md)
+ [Configurazione del bucket per utilizzare una chiave bucket S3 con SSE-KMS per nuovi oggetti](configuring-bucket-key.md)

Le seguenti operazioni API supportano le chiavi bucket S3 per SSE-KMS:
+ [PutBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html)
  + `ServerSideEncryptionRule` accetta il parametro `BucketKeyEnabled` per abilitare e disabilitare una chiave bucket S3.
+ [GetBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketEncryption.html)
  + `ServerSideEncryptionRule` restituisce le impostazioni per `BucketKeyEnabled`.
+ [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)[,](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html), e oggetto POST [CopyObject[CreateMultipartUpload](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)
  + L'intestazione della richiesta `x-amz-server-side-encryption-bucket-key-enabled` abilita o disabilita una chiave bucket S3 a livello di oggetto.
+ [HeadObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html), [GetObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html), [UploadPartCopy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html), [UploadPart](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html), e [CompleteMultipartUpload](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)
  + L'intestazione della risposta `x-amz-server-side-encryption-bucket-key-enabled` indica se una chiave bucket S3 è abilitata o disabilitata per un oggetto.

### Lavorare con CloudFormation
<a name="configure-bucket-key-cfn"></a>

In CloudFormation, la `AWS::S3::Bucket` risorsa include una proprietà di crittografia denominata `BucketKeyEnabled` che puoi utilizzare per abilitare o disabilitare una S3 Bucket Key. 

Per ulteriori informazioni, consulta [Usando CloudFormation](configuring-bucket-key.md#enable-bucket-key-cloudformation).

## Modifiche alla nota prima dell'abilitazione di una chiave bucket S3
<a name="bucket-key-changes"></a>

Prima di abilitare una chiave bucket S3, tieni presente le seguenti modifiche correlate:

### IAM o politiche chiave AWS KMS
<a name="bucket-key-policies"></a>

Se le tue policy AWS Identity and Access Management (IAM) o le policy AWS KMS chiave esistenti utilizzano il tuo oggetto Amazon Resource Name (ARN) come contesto di crittografia per perfezionare o limitare l'accesso alla tua chiave KMS, queste policy non funzioneranno con una S3 Bucket Key. Le chiavi bucket S3 utilizzano l'ARN del bucket come contesto di crittografia. Prima di abilitare una chiave S3 Bucket, aggiorna le policy IAM o le policy AWS KMS chiave per utilizzare l'ARN del bucket come contesto di crittografia.

Per ulteriori informazioni sul contesto di crittografia e sulle chiavi bucket S3, consulta [Contesto di crittografia](UsingKMSEncryption.md#encryption-context).

### CloudTrail eventi per AWS KMS
<a name="bucket-key-cloudtrail"></a>

Dopo aver abilitato una S3 Bucket Key, AWS KMS CloudTrail gli eventi registrano l'ARN del bucket anziché l'ARN dell'oggetto. Inoltre, nei log vengono visualizzati meno CloudTrail eventi KMS per gli oggetti SSE-KMS. Poiché il materiale chiave è limitato nel tempo in Amazon S3, vengono inviate meno richieste. AWS KMS

## Utilizzo di una chiave bucket S3 con la replica
<a name="bucket-key-replication"></a>

Le chiavi bucket S3 possono essere utilizzate con la replica della stessa regione (SRR) e con la replica tra regioni (CRR).

Quando Amazon S3 replica un oggetto crittografato, in genere conserva le impostazioni di crittografia dell'oggetto di replica nel bucket di destinazione. Tuttavia, se l'oggetto di origine non è crittografato e il bucket di destinazione utilizza la crittografia predefinita o una chiave bucket S3, Amazon S3 crittografa l'oggetto con la configurazione del bucket di destinazione. 

Negli esempi seguenti viene illustrato il funzionamento di una chiave bucket S3 con la replica. Per ulteriori informazioni, consulta [Replica di oggetti crittografati (SSE-S3, SSE-KMS, DSSE-KMS, SSE-C)](replication-config-for-kms-objects.md). 

**Example Esempio 1: l'oggetto di origine utilizza le chiavi bucket S3 e il bucket di destinazione usa la crittografia predefinita**  
Se l'oggetto di origine utilizza una chiave bucket S3 ma il bucket di destinazione utilizza la crittografia predefinita con SSE-KMS, l'oggetto di replica mantiene le impostazioni di crittografia della chiave bucket S3 nel bucket di destinazione. Il bucket di destinazione utilizza ancora la crittografia predefinita con SSE-KMS.   


**Example Esempio 2: l'oggetto di origine non è crittografato e il bucket di destinazione usa una chiave bucket S3 con SSE-KMS**  
Se l'oggetto di origine non è crittografato e il bucket di destinazione usa una chiave bucket S3 con SSE-KMS, l'oggetto di replica viene crittografato con una chiave bucket S3 utilizzando SSE-KMS nel bucket di destinazione. Ciò fa sì che l'`ETag` dell'oggetto di origine sia diverso dall'`ETag` dell'oggetto replicato. È necessario aggiornare le applicazioni che utilizzano l'`ETag` per tenere conto di tale differenza.

## Operazioni con le chiavi bucket S3
<a name="using-bucket-key"></a>

Per ulteriori informazioni sull'abilitazione e l'utilizzo di chiavi bucket S3, consulta le sezioni seguenti:
+ [Configurazione del bucket per utilizzare una chiave bucket S3 con SSE-KMS per nuovi oggetti](configuring-bucket-key.md)
+ [Configurazione di una chiave bucket S3 a livello di oggetto](configuring-bucket-key-object.md)
+ [Visualizzazione delle impostazioni per una chiave bucket S3](viewing-bucket-key-settings.md)

# Configurazione del bucket per utilizzare una chiave bucket S3 con SSE-KMS per nuovi oggetti
<a name="configuring-bucket-key"></a>

Quando configuri la crittografia lato server con le chiavi AWS Key Management Service (AWS KMS) (SSE-KMS), puoi configurare il bucket per utilizzare una S3 Bucket Key per SSE-KMS su nuovi oggetti. Le S3 Bucket Keys riducono il traffico delle richieste da Amazon S3 AWS KMS a SSE-KMS e riducono il costo. Per ulteriori informazioni, consulta [Riduzione del costo di SSE-KMS con le chiavi bucket Amazon S3](bucket-key.md).

Puoi configurare il tuo bucket per utilizzare una chiave S3 Bucket per SSE-KMS su nuovi oggetti utilizzando la console Amazon S3, l'API REST,, () o. AWS SDKs AWS Command Line Interface AWS CLI CloudFormation Se desideri abilitare o disabilitare una chiave bucket S3 per gli oggetti esistenti, puoi utilizzare un'operazione `CopyObject`. Per ulteriori informazioni, consulta [Configurazione di una chiave bucket S3 a livello di oggetto](configuring-bucket-key-object.md) e [Utilizzo delle operazioni in batch per abilitare le chiavi S3 Bucket per SSE-KMS](batch-ops-copy-example-bucket-key.md).

Quando una chiave bucket S3 è abilitata per il bucket di origine o di destinazione, il contesto di crittografia sarà l'Amazon Resource Name (ARN) del bucket e non l'ARN dell'oggetto, ad esempio, `arn:aws:s3:::bucket_ARN`. Dovrai aggiornare le policy IAM per utilizzare l'ARN del bucket per il contesto di crittografia. Per ulteriori informazioni, consulta [Chiavi bucket S3 e replica](replication-config-for-kms-objects.md#bk-replication).

Negli esempi seguenti viene illustrato il funzionamento di una chiave bucket S3 con la replica. Per ulteriori informazioni, consulta [Replica di oggetti crittografati (SSE-S3, SSE-KMS, DSSE-KMS, SSE-C)](replication-config-for-kms-objects.md). 

**Prerequisiti**  
Prima di configurare il bucket per utilizzare una chiave bucket S3, consulta [Modifiche alla nota prima dell'abilitazione di una chiave bucket S3](bucket-key.md#bucket-key-changes).

**Topics**

## Utilizzo della console S3
<a name="enable-bucket-key"></a>

Nella console S3, puoi abilitare o disabilitare una chiave bucket S3 per un bucket nuovo o esistente. Gli oggetti nella console S3 ereditano l'impostazione della chiave bucket S3 dalla configurazione del bucket. Quando abiliti una chiave bucket S3 per il bucket, i nuovi oggetti caricati nel bucket utilizzano una chiave bucket S3 per SSE-KMS. 

**Caricamento, copia o modifica di oggetti nei bucket che dispongono di una chiave bucket S3 abilitata**  
Se carichi, modifichi o copi un oggetto in un bucket con una chiave bucket S3 abilitata, le impostazioni della chiave bucket S3 per tale oggetto potrebbero essere aggiornate in modo da allinearsi alla configurazione del bucket.

Se un oggetto ha già una chiave bucket S3 abilitata, le impostazioni della chiave bucket S3 per quell'oggetto non cambiano quando si copia o si modifica l'oggetto. Tuttavia, se modifichi o copi un oggetto che non dispone di una chiave bucket S3 attivata e il bucket di destinazione ha una configurazione con una chiave bucket S3, l'oggetto eredita le impostazioni della chiave bucket S3 del bucket di destinazione. Ad esempio, se l'oggetto di origine non ha una chiave bucket S3 abilitata ma il bucket di destinazione ne ha una, una chiave bucket S3 è abilitata per l'oggetto.

**Abilitazione di una chiave bucket S3 quando si crea un nuovo bucket**

1. Accedi Console di gestione AWS e apri la console Amazon S3 all'indirizzo. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Nel pannello di navigazione a sinistra, scegli **Buckets** (Bucket).

1. Seleziona **Crea bucket**. 

1. Inserisci il nome del bucket e scegli la tua Regione AWS. 

1. In **Crittografia predefinita**, scegli **Chiave AWS Key Management Service (SSE-KMS)** per **Tipo di chiave di crittografia**.

1. In **Chiave AWS KMS ** effettua una delle seguenti operazioni per scegliere la chiave KMS:
   + Per scegliere da un elenco di chiavi KMS disponibili, scegli **Scegli tra le tue AWS KMS keys**, quindi scegli la tua **chiave KMS** dall'elenco delle chiavi disponibili.

     In questo elenco vengono visualizzate sia la chiave Chiave gestita da AWS (`aws/s3`) che quella gestita dai clienti. Per ulteriori informazioni sulle chiavi gestite dai clienti, consulta [Customer keys and AWS keys](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#key-mgmt) nella *AWS Key Management Service Developer Guide*.
   + Per specificare l'ARN della chiave KMS, scegli **Inserisci l'ARN della AWS KMS key ** e quindi specifica l'ARN della chiave KMS nel campo visualizzato. 
   + Per creare una nuova chiave gestita dal cliente nella AWS KMS console, scegli **Crea una chiave KMS**.

     Per ulteriori informazioni sulla creazione di una AWS KMS key, consulta [Creating Keys](https://docs.aws.amazon.com//kms/latest/developerguide/create-keys.html) nella *AWS Key Management Service Developer Guide*.

1. In **Chiave bucket** scegli **Abilita**. 

1. Scegliere **Create bucket (Crea bucket)**. 

   Amazon S3 crea il tuo bucket con una chiave bucket S3 abilitata. I nuovi oggetti caricati nel bucket utilizzeranno una chiave bucket S3. 

   Per disabilitare una chiave bucket S3, completa i passaggi precedenti e scegli **Disabilita**.

**Abilitazione di una chiave bucket S3 per un bucket esistente**

1. Apri la console Amazon S3 all'indirizzo. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Nel pannello di navigazione a sinistra, scegli **Buckets** (Bucket).

1. Nell'elenco **Bucket** scegli il bucket per cui desideri abilitare una chiave bucket S3.

1. Scegliere la scheda **Properties (Proprietà)**.

1. In **Default encryption (Crittografia di default)**, scegliere **Edit (Modifica)**.

1. In **Crittografia predefinita**, scegli **Chiave AWS Key Management Service (SSE-KMS)** per **Tipo di chiave di crittografia**.

1. In **Chiave AWS KMS ** effettua una delle seguenti operazioni per scegliere la chiave KMS:
   + Per scegliere da un elenco di chiavi KMS disponibili, **scegli tra le tue AWS KMS keys**, quindi scegli la tua **chiave KMS** dall'elenco delle chiavi disponibili.

     In questo elenco vengono visualizzate sia la chiave Chiave gestita da AWS (`aws/s3`) che quella gestita dai clienti. Per ulteriori informazioni sulle chiavi gestite dai clienti, consulta [Customer keys and AWS keys](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#key-mgmt) nella *AWS Key Management Service Developer Guide*.
   + Per specificare l'ARN della chiave KMS, scegli **Inserisci l'ARN della AWS KMS key ** e quindi specifica l'ARN della chiave KMS nel campo visualizzato. 
   + Per creare una nuova chiave gestita dal cliente nella AWS KMS console, scegli **Crea una chiave KMS**.

     Per ulteriori informazioni sulla creazione di una AWS KMS key, consulta [Creating Keys](https://docs.aws.amazon.com//kms/latest/developerguide/create-keys.html) nella *AWS Key Management Service Developer Guide*.

1. In **Chiave bucket** scegli **Abilita**. 

1. Seleziona **Salva modifiche**.

   Amazon S3 abilita una chiave bucket S3 per i nuovi oggetti aggiunti al tuo bucket. Gli oggetti esistenti non utilizzano la chiave bucket S3. Per configurare una chiave bucket S3 per gli oggetti esistenti, è possibile utilizzare un'operazione `CopyObject`. Per ulteriori informazioni, consulta [Configurazione di una chiave bucket S3 a livello di oggetto](configuring-bucket-key-object.md).

   Per disabilitare una chiave bucket S3, completa i passaggi precedenti e scegli **Disabilita**.

## Utilizzo dell'API REST
<a name="enable-bucket-key-rest"></a>

Puoi utilizzarla [PutBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html)per abilitare o disabilitare una S3 Bucket Key per il tuo bucket. Per configurare una S3 Bucket Key con`PutBucketEncryption`, usa il tipo di [ServerSideEncryptionRule](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ServerSideEncryptionRule.html)dati, che include la crittografia predefinita con SSE-KMS. Puoi inoltre utilizzare una chiave gestita dal cliente specificando l'ID della chiave KMS per la chiave gestita dal cliente.  

Per ulteriori informazioni ed esempi di sintassi, consulta. [PutBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html) 

## Utilizzo dell' AWS SDK for Java
<a name="enable-bucket-key-sdk"></a>

Nell'esempio seguente viene abilitata la crittografia bucket predefinita con SSE-KMS e una chiave bucket S3 utilizzando la AWS SDK per Java.

------
#### [ Java ]

```
AmazonS3 s3client = AmazonS3ClientBuilder.standard()
    .withRegion(Regions.DEFAULT_REGION)
    .build();
    
ServerSideEncryptionByDefault serverSideEncryptionByDefault = new ServerSideEncryptionByDefault()
    .withSSEAlgorithm(SSEAlgorithm.KMS);
ServerSideEncryptionRule rule = new ServerSideEncryptionRule()
    .withApplyServerSideEncryptionByDefault(serverSideEncryptionByDefault)
    .withBucketKeyEnabled(true);
ServerSideEncryptionConfiguration serverSideEncryptionConfiguration =
    new ServerSideEncryptionConfiguration().withRules(Collections.singleton(rule));

SetBucketEncryptionRequest setBucketEncryptionRequest = new SetBucketEncryptionRequest()
    .withServerSideEncryptionConfiguration(serverSideEncryptionConfiguration)
    .withBucketName(bucketName);
            
s3client.setBucketEncryption(setBucketEncryptionRequest);
```

------

## Usando il AWS CLI
<a name="enable-bucket-key-cli"></a>

Nell'esempio seguente viene abilitata la crittografia bucket predefinita con SSE-KMS e una chiave bucket S3 utilizzando la AWS CLI. Sostituisci `user input placeholders` con le informazioni appropriate.

```
aws s3api put-bucket-encryption --bucket amzn-s3-demo-bucket --server-side-encryption-configuration '{
        "Rules": [
            {
                "ApplyServerSideEncryptionByDefault": {
                    "SSEAlgorithm": "aws:kms",
                    "KMSMasterKeyID": "KMS-Key-ARN"
                },
                "BucketKeyEnabled": true
            }
        ]
    }'
```

## Usando CloudFormation
<a name="enable-bucket-key-cloudformation"></a>

*Per ulteriori informazioni sulla configurazione di una S3 Bucket Key con CloudFormation, consulta [AWS::S3::Bucket ServerSideEncryptionRule](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-serversideencryptionrule.html)la Guida per l'AWS CloudFormation utente.*

# Configurazione di una chiave bucket S3 a livello di oggetto
<a name="configuring-bucket-key-object"></a>

Quando esegui un'operazione PUT o COPY utilizzando l'API REST, oppure AWS SDKs AWS CLI, puoi abilitare o disabilitare una chiave S3 Bucket a livello di oggetto aggiungendo l'intestazione della `x-amz-server-side-encryption-bucket-key-enabled` richiesta con un valore or. `true` `false` S3 Bucket Keys riduce il costo della crittografia lato server utilizzando AWS Key Management Service (AWS KMS) (SSE-KMS) diminuendo il traffico delle richieste da Amazon S3 a. AWS KMS Per ulteriori informazioni, consulta [Riduzione del costo di SSE-KMS con le chiavi bucket Amazon S3](bucket-key.md). 

Quando configuri una chiave bucket S3 per un oggetto utilizzando un'operazione PUT o COPY, Amazon S3 aggiorna le impostazioni solo per quell'oggetto. Le impostazioni della chiave bucket S3 per il bucket di destinazione non cambiano. Se invii una richiesta PUT o COPY per un oggetto crittografato con KMS in un bucket con le chiavi di bucket S3 abilitate, l'operazione a livello di oggetto utilizzerà automaticamente le chiavi di bucket S3 a meno che non disabiliti le chiavi nell'intestazione della richiesta. Se non specifichi una chiave bucket S3 per il tuo oggetto, Amazon S3 applica le impostazioni della chiave bucket S3 per il bucket di destinazione all'oggetto.

**Prerequisito**  
Prima di configurare l'oggetto per utilizzare una chiave bucket S3, consulta [Modifiche alla nota prima dell'abilitazione di una chiave bucket S3](bucket-key.md#bucket-key-changes). 

**Topics**
+ [

## Operazioni in Batch Amazon S3
](#bucket-key-object-bops)
+ [

## Utilizzo della REST API
](#bucket-key-object-rest)
+ [

## Utilizzo dell' AWS SDK per Java PutObject ()
](#bucket-key-object-sdk)
+ [

## Usando il AWS CLI () PutObject
](#bucket-key-object-cli)

## Operazioni in Batch Amazon S3
<a name="bucket-key-object-bops"></a>

Per crittografare gli oggetti Amazon S3 esistenti, puoi utilizzare le operazioni in batch di Amazon S3. Fornisci alle operazioni in batch S3 un elenco di oggetti da utilizzare e le operazioni in batch chiamano la rispettiva API per eseguire l'operazione specifica. 

Puoi utilizzare l'operazione di [copia delle operazioni in batch S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/batch-ops-copy-object.html) per copiare gli oggetti non crittografati esistenti e scriverli nello stesso bucket degli oggetti crittografati. Un solo processo di operazioni in batch può eseguire l'operazione specificata su miliardi di oggetti. Per ulteriori informazioni, consulta [Esecuzione di operazioni sugli oggetti in blocco con le operazioni in batch](batch-ops.md) e [Crittografia di oggetti con le operazioni in batch di Amazon S3](https://aws.amazon.com/blogs/storage/encrypting-objects-with-amazon-s3-batch-operations/).

## Utilizzo della REST API
<a name="bucket-key-object-rest"></a>

Quando utilizzi SSE-KMS, puoi abilitare una chiave bucket S3 per un oggetto utilizzando le seguenti operazioni API: 
+ [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)— Quando carichi un oggetto, puoi specificare l'intestazione della `x-amz-server-side-encryption-bucket-key-enabled` richiesta per abilitare o disabilitare una S3 Bucket Key a livello di oggetto. 
+ [CopyObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)— Quando copi un oggetto e configuri SSE-KMS, puoi specificare l'intestazione della `x-amz-server-side-encryption-bucket-key-enabled` richiesta per abilitare o disabilitare una S3 Bucket Key per il tuo oggetto. 
+ [POST Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html): quando esegui un'operazione `POST` per caricare un oggetto e configurare SSE-KMS, puoi utilizzare il campo del modulo `x-amz-server-side-encryption-bucket-key-enabled` per abilitare o disabilitare una chiave bucket S3 per l'oggetto.
+ [CreateMultipartUpload](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)— Quando carichi oggetti di grandi dimensioni utilizzando l'operazione `CreateMultipartUpload` API e configuri SSE-KMS, puoi utilizzare l'intestazione della `x-amz-server-side-encryption-bucket-key-enabled` richiesta per abilitare o disabilitare una S3 Bucket Key per il tuo oggetto.

Per abilitare una chiave bucket S3 a livello di oggetto, dovrai includere l'intestazione della richiesta `x-amz-server-side-encryption-bucket-key-enabled`. Per ulteriori informazioni su SSE-KMS e REST API, consulta la sezione [Utilizzo della REST API](specifying-kms-encryption.md#KMSUsingRESTAPI).

## Utilizzo dell' AWS SDK per Java PutObject ()
<a name="bucket-key-object-sdk"></a>

Il seguente esempio può essere utilizzato per configurare una chiave bucket S3 a livello di oggetto utilizzando AWS SDK per Java.

------
#### [ Java ]

```
AmazonS3 s3client = AmazonS3ClientBuilder.standard()
    .withRegion(Regions.DEFAULT_REGION)
    .build();

String bucketName = "amzn-s3-demo-bucket1";
String keyName = "key name for object";
String contents = "file contents";

PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, keyName, contents)
    .withBucketKeyEnabled(true);
    
s3client.putObject(putObjectRequest);
```

------

## Usando il AWS CLI () PutObject
<a name="bucket-key-object-cli"></a>

È possibile utilizzare il seguente AWS CLI esempio per configurare una S3 Bucket Key a livello di oggetto come parte di una `PutObject` richiesta.

```
aws s3api put-object --bucket amzn-s3-demo-bucket --key object key name --server-side-encryption aws:kms --bucket-key-enabled --body filepath
```

# Visualizzazione delle impostazioni per una chiave bucket S3
<a name="viewing-bucket-key-settings"></a>

Puoi visualizzare le impostazioni per una chiave S3 Bucket a livello di bucket o oggetto utilizzando la console Amazon S3, l'API REST, AWS Command Line Interface () o.AWS CLI AWS SDKs

Le S3 Bucket Keys riducono il traffico delle richieste da Amazon S3 AWS KMS a (SSE-KMS) e riducono il costo della crittografia lato server. AWS Key Management Service Per ulteriori informazioni, consulta [Riduzione del costo di SSE-KMS con le chiavi bucket Amazon S3](bucket-key.md). 

Per visualizzare le impostazioni della chiave bucket S3 per un bucket o un oggetto che ha ereditato le impostazioni della chiave bucket S3 dalla configurazione del bucket, è necessaria l'autorizzazione per eseguire l'operazione `s3:GetEncryptionConfiguration`. Per ulteriori informazioni, consulta [GetBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketEncryption.html) in *Amazon Simple Storage Service API Reference* (Guida di riferimento per l'API di Amazon Simple Storage Service). 

## Utilizzo della console S3
<a name="bucket-key-settings"></a>

Nella console S3, puoi visualizzare le impostazioni della chiave bucket S3 per il bucket o l'oggetto. Le impostazioni della chiave bucket S3 vengono ereditate dalla configurazione del bucket a meno che gli oggetti di origine non dispongano già di una chiave bucket S3 configurata.

Oggetti e cartelle nello stesso bucket possono avere diverse impostazioni della chiave bucket S3. Ad esempio, se carichi un oggetto utilizzando REST API e abiliti una chiave bucket S3 per tale oggetto, questo manterrà l'impostazione della chiave bucket S3 nel bucket di destinazione anche se la chiave bucket S3 è disabilitata. Come altro esempio, se abiliti una chiave bucket S3 per un bucket esistente, gli oggetti già presenti nel bucket non utilizzeranno una chiave bucket S3. Tuttavia, i nuovi oggetti avranno una chiave bucket S3 abilitata. 

**Visualizzazione dell'impostazione della chiave bucket S3 per il bucket**

1. Accedi Console di gestione AWS e apri la console Amazon S3 all'indirizzo. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Nel pannello di navigazione a sinistra, scegli **Buckets** (Bucket).

1. Nell'elenco **Bucket** scegli il bucket per cui desideri abilitare una chiave bucket S3.

1. Scegliere **Properties (Proprietà)**.

1. Nella sezione **Crittografia predefinita**, in **Chiave bucket**, viene visualizzata l'impostazione della chiave bucket S3 per il bucket.

   Se non riesci a visualizzare l'impostazione della chiave bucket S3, è possibile che non disponi dell'autorizzazione per eseguire l'operazione `s3:GetEncryptionConfiguration`. Per ulteriori informazioni, consulta [GetBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketEncryption.html) in *Amazon Simple Storage Service API Reference* (Guida di riferimento per l'API di Amazon Simple Storage Service). 

**Visualizzazione dell'impostazione della chiave bucket S3 per l'oggetto**

1. Accedi Console di gestione AWS e apri la console Amazon S3 all'indirizzo. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Nell'elenco **Bucket** scegli il bucket per cui desideri abilitare una chiave bucket S3. 

1. Nell'elenco **Oggetti** scegli il nome dell'oggetto.

1. Nella scheda **Dettagli** , in **Impostazioni di crittografia lato server**, seleziona **Modifica**. 

   In **Chiave bucket** è visualizzata l'impostazione della chiave bucket S3 per l'oggetto. Non è possibile modificare questa impostazione. 

## Usando il AWS CLI
<a name="bucket-key-settings-cli"></a>

**Restituzione delle impostazioni della chiave bucket S3 a livello di bucket**  
Per usare questo comando, sostituire `user input placeholder` con le proprie informazioni.

```
aws s3api get-bucket-encryption --bucket amzn-s3-demo-bucket1
```

Per ulteriori informazioni, consulta [get-bucket-encryption](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/get-bucket-encryption.html) nella *documentazione di riferimento dei comandi della AWS CLI *.

**Restituzione delle impostazioni a livello di oggetto di una chiave bucket S3**  
Per usare questo comando, sostituire `user input placeholder` con le proprie informazioni.

```
aws s3api head-object --bucket amzn-s3-demo-bucket1 --key my_images.tar.bz2
```

Per ulteriori informazioni, consulta [head-object](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/head-object.html) in *Guida di riferimento dei comandi di AWS CLI *.

## Utilizzo della REST API
<a name="bucket-key-settings-rest"></a>

**Restituzione delle impostazioni della chiave bucket S3 a livello di bucket**  
Per restituire le informazioni di crittografia per un bucket, incluse le impostazioni per una chiave bucket S3, utilizza l'operazione `GetBucketEncryption`. Le impostazioni della chiave bucket S3 vengono restituite nel corpo della risposta nell'elemento `ServerSideEncryptionConfiguration` con l'impostazione `BucketKeyEnabled`. Per ulteriori informazioni, consulta [GetBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketEncryption.html) nella *documentazione di riferimento delle API di Amazon S3*. 

**Restituzione delle impostazioni a livello di oggetto per una chiave bucket S3**  
Per restituire lo stato della chiave bucket S3 per un oggetto, utilizza l'operazione `HeadObject`. `HeadObject` restituisce l'intestazione della risposta `x-amz-server-side-encryption-bucket-key-enabled` per mostrare se una chiave bucket S3 è abilitata o disabilitata per l'oggetto. Per ulteriori informazioni, consulta [HeadObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html) nella *documentazione di riferimento delle API di Amazon S3*. 

Le seguenti operazioni delle API restituiscono l'intestazione della risposta `x-amz-server-side-encryption-bucket-key-enabled` anche se una chiave bucket S3 è configurata per un oggetto: 
+ [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html) 
+ [PostObject](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html) 
+ [CopyObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html) 
+ [CreateMultipartUpload](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html) 
+ [UploadPartCopy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html) 
+ [UploadPart](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html) 
+ [CompleteMultipartUpload](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html) 
+ [GetObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html) 

# Utilizzo della crittografia lato server a due livelli con AWS KMS chiavi (DSSE-KMS)
<a name="UsingDSSEncryption"></a>

L'utilizzo della crittografia lato server a due livelli con AWS Key Management Service (AWS KMS) chiavi (DSSE-KMS) applica due livelli di crittografia agli oggetti quando vengono caricati su Amazon S3. DSSE-KMS consente di soddisfare più facilmente gli standard di conformità che richiedono l'applicazione della crittografia a più livelli ai dati e il pieno controllo delle chiavi di crittografia.

Il termine “doppio” in DSSE-KMS si riferisce a due livelli indipendenti di crittografia AES-256 applicati ai dati:
+ *Primo livello:* i dati vengono crittografati utilizzando una chiave di crittografia dei dati unica (DEK) generata da AWS KMS
+ *Secondo livello:* i dati già crittografati vengono crittografati nuovamente utilizzando una chiave di crittografia AES-256 separata gestita da Amazon S3

Questo comportamento differisce dallo standard SSE-KMS, che applica solo un singolo livello di crittografia. L’approccio a doppio livello offre una maggiore sicurezza garantendo che, anche se un livello di crittografia fosse compromesso, i dati rimangano protetti dal secondo livello. Questa sicurezza aggiuntiva comporta un aumento del sovraccarico di elaborazione e delle chiamate AWS KMS API, il che rappresenta il costo più elevato rispetto allo SSE-KMS standard. [Per ulteriori informazioni sui prezzi di DSSE-KMS, consulta i [AWS KMS key concetti](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys) nella Guida per gli sviluppatori e i prezzi. AWS Key Management ServiceAWS KMS](https://aws.amazon.com/kms/pricing)

Quando usi DSSE-KMS con un bucket Amazon S3, AWS KMS le chiavi devono trovarsi nella stessa regione del bucket. Inoltre, quando per l'oggetto è richiesta la crittografia DSSE-KMS, il checksum S3 come parte dei metadati dell'oggetto viene archiviato in formato crittografato. Per ulteriori informazioni sui checksum, consulta [Verifica dell'integrità degli oggetti in Amazon S3](checking-object-integrity.md).

**Nota**  
Le chiavi bucket S3 non sono supportate per DSSE-KMS.

Le principali differenze tra DSSE-KMS e SSE-KMS standard sono:
+ **Livelli di crittografia:** DSSE-KMS applica due livelli indipendenti di crittografia AES-256, mentre lo standard SSE-KMS applica un solo livello
+ **Sicurezza:** DSSE-KMS offre una protezione avanzata contro potenziali vulnerabilità di crittografia
+ **Conformità:** DSSE-KMS consente di soddisfare i requisiti normativi che impongono la crittografia a più livelli
+ **Prestazioni:** DSSE-KMS ha una latenza leggermente superiore grazie all’ulteriore elaborazione della crittografia
+ **Costo:** DSSE-KMS comporta costi più elevati a causa dell'aumento del sovraccarico di calcolo e delle operazioni aggiuntive AWS KMS 

**Richiede la crittografia lato server a doppio livello con (DSSE-KMS) AWS KMS keys**  
Per richiedere la crittografia lato server a doppio livello di tutti gli oggetti in uno specifico bucket Amazon S3, è possibile utilizzare una policy del bucket. Ad esempio, la seguente policy del bucket rifiuta a chiunque l'autorizzazione al caricamento dell'oggetto (`s3:PutObject`) se la richiesta non include un'intestazione `x-amz-server-side-encryption` che richiede la crittografia lato server con DSSE-KMS.

------
#### [ JSON ]

****  

```
{
             "Version":"2012-10-17",		 	 	 
             "Id": "PutObjectPolicy",
             "Statement": [{
                   "Sid": "DenyUnEncryptedObjectUploads",
                   "Effect": "Deny",
                   "Principal": {
                       "AWS": "arn:aws:iam::111122223333:root"
                   },
                   "Action": "s3:PutObject",
                   "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
                   "Condition": {
                      "StringNotEquals": {
                         "s3:x-amz-server-side-encryption": "aws:kms:dsse"
                      }
                   }
                }
             ]
          }
```

------

**Topics**
+ [

# Specificazione della crittografia lato server a doppio livello con chiavi (DSSE-KMS) AWS KMS
](specifying-dsse-encryption.md)

# Specificazione della crittografia lato server a doppio livello con chiavi (DSSE-KMS) AWS KMS
<a name="specifying-dsse-encryption"></a>

È possibile applicare la crittografia quando stai caricando un nuovo oggetto o copiando un oggetto esistente. 

È possibile specificare DSSE-KMS utilizzando la console Amazon S3, la REST API di Amazon S3 e la AWS Command Line Interface (AWS CLI). Per ulteriori informazioni, consulta i seguenti argomenti. 

**Nota**  
Puoi usare più regioni AWS KMS keys 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 multiregione](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html) nella *Guida per gli sviluppatori di AWS Key Management Service *.

**Nota**  
Se desideri utilizzare una chiave KMS di proprietà di un account diverso, devi avere l'autorizzazione necessaria per l'uso della chiave. Per ulteriori informazioni sulle autorizzazioni tra account per le chiavi KMS, vedi [Creazione di chiavi KMS utilizzabili da altri account](https://docs.aws.amazon.com//kms/latest/developerguide/key-policy-modifying-external-accounts.html#cross-account-console) nella *Guida per gli sviluppatori di AWS Key Management Service *. 

## Utilizzo della console S3
<a name="add-object-encryption-dsse"></a>

Questa sezione descrive come impostare o modificare il tipo di crittografia di un oggetto per utilizzare la crittografia lato server a doppio livello con AWS Key Management Service (AWS KMS) chiavi (DSSE-KMS) utilizzando la console Amazon S3.

**Nota**  
È possibile modificare la crittografia di un oggetto se l'oggetto è inferiore a 5 GB. Se l'oggetto è superiore a 5 GB, è necessario utilizzare o per modificare la [AWS CLI](mpu-upload-object.md#UsingCLImpUpload)crittografia di un oggetto. [AWS SDKs](CopyingObjectsMPUapi.md)
Per un elenco delle autorizzazioni aggiuntive necessarie per modificare la crittografia di un oggetto, consulta [Autorizzazioni necessarie per le operazioni API di Amazon S3](using-with-s3-policy-actions.md). Per esempi di policy che concedono questa autorizzazione, consulta [Esempi di policy basate sull'identità per Amazon S3](example-policies-s3.md).
Se si modifica la crittografia di un oggetto, viene creato un nuovo oggetto per sostituire quello precedente. Se è abilitata la funzione Controllo delle versioni S3, viene creata una nuova versione dell'oggetto e l'oggetto esistente diventa una versione precedente. Il ruolo che modifica la proprietà diventa anche il proprietario del nuovo oggetto o della versione dell'oggetto. 

**Per aggiungere o modificare la crittografia di un oggetto**

1. Accedi Console di gestione AWS e apri la console Amazon S3 all'indirizzo. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Nel riquadro di navigazione, scegli **Bucket**, quindi scegli la scheda **Bucket per uso generico**. Naviga al bucket o alla cartella Amazon S3 che contiene gli oggetti da modificare.

1. Seleziona la casella di controllo degli oggetti da modificare.

1. Nel menu **Azioni**, scegli **Modifica crittografia lato server** dall'elenco di opzioni visualizzato.

1. Scorrere fino alla sezione **Crittografia lato server**.

1. In **Impostazioni di crittografia**, scegli **Utilizza le impostazioni del bucket per la crittografia predefinita** o **Ignora le impostazioni del bucket per la crittografia predefinita**.

1. Se scegli **Sostituisci impostazioni del bucket per la crittografia predefinita**, configura le seguenti impostazioni di crittografia.

   1. In **Tipo di crittografia**, scegli Crittografia **lato server a doppio livello con AWS Key Management Service chiavi (DSSE-KMS**). 

   1. In **AWS KMS key**, esegui una delle seguenti operazioni per scegliere la chiave KMS:
      + Per scegliere da un elenco di chiavi KMS disponibili, seleziona **Scegli tra le chiavi AWS KMS keys**, quindi scegli la **chiave KMS** dall'elenco delle chiavi disponibili.

        In questo elenco vengono visualizzate sia la Chiave gestita da AWS chiave (`aws/s3`) che quella gestita dal cliente. Per ulteriori informazioni sulle chiavi gestite dal cliente, consulta [Chiavi gestite dal cliente e chiavi AWS](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#key-mgmt) nella *Guida per gli sviluppatori di AWS Key Management Service *.
      + Per inserire l'ARN della chiave KMS, scegli **Inserisci AWS KMS key ARN**, quindi inserisci l'ARN della chiave KMS nel campo visualizzato. 
      + **Per creare una nuova chiave gestita dal cliente nella AWS KMS console, scegli Crea una chiave KMS.**

        Per ulteriori informazioni sulla creazione di una AWS KMS key, consulta [Creating keys](https://docs.aws.amazon.com//kms/latest/developerguide/create-keys.html) nella *AWS Key Management Service Developer Guide*.
**Importante**  
Puoi utilizzare solo le chiavi KMS disponibili nella stessa Regione AWS del bucket. La console Amazon S3 elenca solo le prime 100 chiavi KMS nella stessa Regione del bucket. Per utilizzare una chiave KMS non elencata, devi inserire l'ARN della chiave KMS. Se desideri utilizzare una chiave KMS di proprietà di un account diverso, è necessario innanzitutto disporre dell'autorizzazione necessaria per l'uso della chiave e quindi inserire l'ARN della chiave KMS.  
Amazon S3 supporta solo chiavi KMS di crittografia simmetriche e non chiavi KMS asimmetriche. Per ulteriori informazioni, consulta [Identificazione delle chiavi KMS asimmetriche](https://docs.aws.amazon.com//kms/latest/developerguide/find-symm-asymm.html) nella *Guida per gli sviluppatori di AWS Key Management Service *.

1. Per **Chiave bucket** scegli **Disabilita**. Le chiavi bucket S3 non sono supportate per DSSE-KMS.

1. In **Impostazioni di copia aggiuntive**, scegli se eseguire **Copia impostazioni dell'origine**, **Non specificare le impostazioni** o **Specifica le impostazioni**. **Copia impostazioni dell'origine** è l'opzione predefinita. Se desideri copiare solo l'oggetto senza gli attributi delle impostazioni dell'origine, scegli **Non specificare le impostazioni**. Scegliete **Specificate impostazioni** per specificare le impostazioni per la classe di archiviazione ACLs, i tag degli oggetti, i metadati, la crittografia lato server e i checksum aggiuntivi.

1. Scegli **Save changes** (Salva modifiche).

**Nota**  
Questa azione applica la crittografia a tutti gli oggetti specificati. Durante la crittografia delle cartelle, attendere il completamento dell'operazione di salvataggio prima di aggiungere nuovi oggetti alla cartella.

## Utilizzo della REST API
<a name="DSSEUsingRESTAPI"></a>

Quando crei un oggetto, ovvero quando carichi un nuovo oggetto o copi un oggetto esistente, puoi specificare l'uso della crittografia lato server a doppio livello con (DSSE-KMS) per crittografare i dati. AWS KMS keys Per fare ciò, aggiungi l'intestazione `x-amz-server-side-encryption` alla richiesta. Impostare il valore dell'intestazione sull'algoritmo di crittografia `aws:kms:dsse`. Amazon S3 conferma che l'oggetto è stato archiviato utilizzando la crittografia DSSE-KMS restituendo l'intestazione della risposta `x-amz-server-side-encryption`. 

Se specifichi l'intestazione `x-amz-server-side-encryption` con il valore `aws:kms:dsse`, puoi anche utilizzare le intestazioni di richiesta seguenti:
+ `x-amz-server-side-encryption-aws-kms-key-id: SSEKMSKeyId`
+ `x-amz-server-side-encryption-context: SSEKMSEncryptionContext`

**Topics**
+ [

### Operazioni REST API di Amazon S3 che supportano DSSE-KMS
](#dsse-request-headers-kms)
+ [

### Contesto di crittografia (`x-amz-server-side-encryption-context`)
](#s3-dsse-encryption-context)
+ [

### AWS KMS ID chiave () `x-amz-server-side-encryption-aws-kms-key-id`
](#s3-dsse-key-id-api)

### Operazioni REST API di Amazon S3 che supportano DSSE-KMS
<a name="dsse-request-headers-kms"></a>

Le operazioni REST API seguenti accettano le intestazioni di richiesta `x-amz-server-side-encryption`, `x-amz-server-side-encryption-aws-kms-key-id` e `x-amz-server-side-encryption-context`.
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html): quando carichi i dati utilizzando l'operazione API `PUT`, è possibile specificare queste intestazioni di richiesta. 
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html): quando copi un oggetto, disponi di un oggetto di origine e un oggetto di destinazione. Tuttavia, le intestazioni DSSE-KMS passate con l'operazione `CopyObject` vengono applicate solo all'oggetto di destinazione. Quando si copia un oggetto esistente, indipendentemente dal fatto che l'oggetto di origine sia stato o meno crittografato, l'oggetto di destinazione non viene crittografato, a meno che non si richieda esplicitamente la crittografia lato server.
+ [POST Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html): quando utilizzi un'operazione `POST` per caricare un oggetto, anziché le intestazioni di richiesta, specifica le stesse informazioni dei campi del modulo.
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html): quando carichi oggetti di grandi dimensioni utilizzando il caricamento in più parti, puoi specificare queste intestazioni nella richiesta `CreateMultipartUpload`.

Quando un oggetto viene archiviato con la crittografia lato server, le intestazioni di risposta delle seguenti operazioni REST API restituiscono l'intestazione `x-amz-server-side-encryption`.
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)
+ [POST Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html)

**Importante**  
Tutte `GET` le `PUT` richieste relative a un oggetto protetto da hanno AWS KMS esito negativo se non vengono effettuate utilizzando Secure Sockets Layer (SSL), Transport Layer Security (TLS) o Signature Version 4.
Se l'oggetto utilizza DSSE-KMS, non inviare intestazioni di richiesta di crittografia per le richieste `GET` e `HEAD` per evitare di ricevere un errore HTTP 400 (richiesta non valida).

### Contesto di crittografia (`x-amz-server-side-encryption-context`)
<a name="s3-dsse-encryption-context"></a>

Se si specifica `x-amz-server-side-encryption:aws:kms:dsse`, l'API Amazon S3 supporta un contesto di crittografia con l'intestazione `x-amz-server-side-encryption-context`. Un contesto di crittografia è un set di coppie chiave-valore che possono contenere ulteriori informazioni contestuali sui dati.

Amazon S3 utilizza automaticamente il nome della risorsa Amazon (ARN) dell'oggetto come coppia di contesto di crittografia; ad esempio, `arn:aws:s3:::object_ARN`.

Facoltativamente, è possibile fornire una coppia di contesto di crittografia aggiuntiva utilizzando l'intestazione `x-amz-server-side-encryption-context`. Tuttavia, poiché il contesto di crittografia non è crittografato, assicurati che non includa informazioni sensibili. Amazon S3 archivia questa coppia di chiavi aggiuntiva insieme al contesto di crittografia predefinito.

Per informazioni sul contesto di crittografia in Amazon S3, consulta la sezione [Contesto di crittografia](UsingKMSEncryption.md#encryption-context). Per informazioni generali sul contesto di crittografia, consulta [Concetti di AWS Key Management Service : Contesto di crittografia](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context) nella *Guida per gli sviluppatori di AWS Key Management Service *. 

### AWS KMS ID chiave () `x-amz-server-side-encryption-aws-kms-key-id`
<a name="s3-dsse-key-id-api"></a>

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. Se specifichi l'`x-amz-server-side-encryption:aws:kms:dsse`intestazione ma non la `x-amz-server-side-encryption-aws-kms-key-id` fornisci, Amazon S3 utilizza `aws/s3` () per Chiave gestita da AWS proteggere i dati. Se desideri utilizzare una chiave gestita dal cliente, devi fornire l'intestazione `x-amz-server-side-encryption-aws-kms-key-id` della chiave gestita dal cliente.

**Importante**  
Quando utilizzi una AWS KMS key 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](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#symmetric-cmks) nella *Guida per gli sviluppatori di AWS Key Management Service *.

## Utilizzando il AWS CLI
<a name="DSSEUsingCLI"></a>

Quando carichi un nuovo oggetto o copi un oggetto esistente, puoi specificare l'uso di DSSE-KMS per crittografare i dati. Per farlo, aggiungi il parametro `--server-side-encryption aws:kms:dsse` alla richiesta. Usa il parametro `--ssekms-key-id example-key-id` per aggiungere la [chiave AWS KMS gestita dal cliente](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#customer-cmk) che hai creato. Se specifichi `--server-side-encryption aws:kms:dsse` ma non fornisci un ID di AWS KMS chiave, Amazon S3 utilizzerà la chiave AWS gestita ()`aws/s3`.

```
aws s3api put-object --bucket amzn-s3-demo-bucket --key example-object-key --server-side-encryption aws:kms:dsse --ssekms-key-id example-key-id --body filepath
```

È possibile crittografare un oggetto non crittografato con DSSE-KMS copiando nuovamente l'oggetto nella sua posizione.

```
aws s3api copy-object --bucket amzn-s3-demo-bucket --key example-object-key --copy-source amzn-s3-demo-bucket/example-object-key --server-side-encryption aws:kms:dsse --ssekms-key-id example-key-id
```

# Utilizzo della crittografia lato server con chiavi fornite dal cliente (SSE-C)
<a name="ServerSideEncryptionCustomerKeys"></a>

La crittografia lato server consente di proteggere i dati inattivi. La crittografia lato server viene applicata solo ai dati dell'oggetto, non dei metadati dell'oggetto. Puoi utilizzare la crittografia lato server con chiavi fornite dal cliente (SSE-C) nei tuoi bucket generici per crittografare i dati con le tue chiavi di crittografia. Con la chiave di crittografia fornita come parte della richiesta, Amazon S3 gestisce la crittografia dei dati durante le operazioni di scrittura su disco e decrittografia dei dati quando viene eseguito l'accesso agli oggetti. Pertanto, non è necessario mantenere alcun codice per effettuare la crittografia e la decrittografia dei dati. L'unica cosa che rimane da fare è gestire le chiavi di crittografia fornite. 

La maggior parte dei casi d'uso moderni in Amazon S3 non utilizza più SSE-C perché manca la flessibilità della crittografia lato server con chiavi gestite di Amazon S3 (SSE-S3) o della crittografia lato server con chiavi KMS (SSE-KMS). AWS Il requisito di SSE-C di fornire la chiave di crittografia ogni volta che interagisci con i tuoi dati crittografati SSE-C rende poco pratico condividere la tua chiave SSE-C con altri utenti, ruoli o AWS servizi che leggono i dati dai tuoi bucket S3 per operare sui tuoi dati. A causa dell'ampio supporto per SSE-KMS in tutti i paesi AWS, la maggior parte dei carichi di lavoro moderni non utilizza la crittografia SSE-C perché manca della flessibilità di SSE-KMS. Per ulteriori informazioni [Utilizzo della crittografia lato server con chiavi (SSE-KMS) AWS KMS](UsingKMSEncryption.md) su SSE-KMS, consulta.

Se desideri impedire che la crittografia SSE-C venga utilizzata per gli oggetti scritti nel tuo bucket, puoi bloccare la crittografia SSE-C quando modifichi la configurazione di crittografia predefinita del bucket. Quando SSE-C viene bloccato per un bucket generico, tutte `PutObject` le richieste di caricamento o replica multipart che `CopyObject` specificano la `PostObject` crittografia SSE-C verranno rifiutate con un errore. `HTTP 403 AccessDenied` Per ulteriori informazioni sul blocco di SSE-C, consulta. [Blocco o sblocco di SSE-C per un bucket per uso generico](blocking-unblocking-s3-c-encryption-gpb.md)

Questa caratteristica non comporta costi supplementari per l'utilizzo di SSE-C. Tuttavia, le richieste di configurazione e utilizzo di SSE-C sono soggette alle tariffe standard delle richieste Amazon S3. Per informazioni sui prezzi, consulta [Prezzi di Amazon S3](https://aws.amazon.com/s3/pricing/).

**Importante**  
Come [annunciato il 19 novembre 2025,](https://aws.amazon.com/blogs/storage/advanced-notice-amazon-s3-to-disable-the-use-of-sse-c-encryption-by-default-for-all-new-buckets-and-select-existing-buckets-in-april-2026/) Amazon Simple Storage Service sta implementando una nuova impostazione di sicurezza predefinita per i bucket che disabilita automaticamente la crittografia lato server con chiavi fornite dal cliente (SSE-C) per tutti i nuovi bucket generici. Per i bucket esistenti senza oggetti crittografati SSE-C, Amazon S3 disabiliterà anche SSE-C per tutte le nuove richieste di scrittura. Account AWS Infatti, Account AWS con l'utilizzo di SSE-C, Amazon S3 non modificherà la configurazione di crittografia dei bucket su nessuno dei bucket esistenti in tali account. Questa implementazione è iniziata il 6 aprile 2026 e sarà completata nelle prossime settimane in 37 AWS regioni, tra cui AWS Cina e regioni AWS GovCloud (Stati Uniti).  
Con queste modifiche, le applicazioni che richiedono la crittografia SSE-C devono abilitare deliberatamente SSE-C utilizzando l'operazione [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html)API dopo la creazione di un nuovo bucket. Per ulteriori informazioni su questa modifica, vedere. [Domande frequenti sull'impostazione SSE-C predefinita per i nuovi bucket](default-s3-c-encryption-setting-faq.md)

## Considerazioni prima di utilizzare SSE-C
<a name="considerations-before-using-sse-c"></a>
+ S3 non memorizza mai la chiave di crittografia quando si utilizza SSE-C. Devi fornire la chiave di crittografia ogni volta che vuoi che qualcuno scarichi i tuoi dati crittografati SSE-C da S3. 
  + L'utente gestisce una mappatura per tenere traccia della chiave di crittografia che è stata utilizzata per crittografare un determinato oggetto. L'utente è responsabile della tracciatura di ciascuna chiave di crittografia fornita per ogni determinato oggetto. Ciò significa anche che se perdi la chiave di crittografia, perdi l'oggetto. 
  + Dato che l'utente gestisce le chiavi di crittografia lato cliente, gestisce anche eventuali tutele aggiuntive, come la rotazione delle chiavi, lato cliente. 
  + Questo design può rendere difficile la condivisione della chiave SSE-C con altri utenti, ruoli o AWS servizi che gestisci sui tuoi dati. A causa dell'ampio supporto per SSE-KMS in tutti i paesi AWS, la maggior parte dei carichi di lavoro moderni non utilizza SSE-C perché non offre la flessibilità di SSE-KMS. [Per ulteriori informazioni su SSE-KMS, consulta Utilizzo della crittografia lato server con chiavi KMS (SSE-KMS). AWS](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html) 
  + Ciò significa che gli oggetti crittografati con SSE-C non possono essere decrittografati nativamente dai servizi gestiti. AWS 
+ È necessario utilizzare HTTPS per specificare le intestazioni SSE-C nelle richieste.
  + Amazon S3 rifiuta qualsiasi richiesta effettuata su HTTP quando si utilizza SSE-C. Per motivi di sicurezza, è consigliabile considerare compromessa qualsiasi chiave inviata per errore tramite HTTP. Elimina la chiave ed esegui la rotazione come opportuno. 
+ Se il bucket è abilitato al controllo delle versioni, ogni versione dell'oggetto che carichi può avere una propria chiave di crittografia. L'utente è responsabile della tracciatura di ciascuna chiave di crittografia utilizzata per ogni determinato oggetto. 
+ SSE-C non è supportato nella console Amazon S3. Non è possibile utilizzare la console Amazon S3 per caricare un oggetto e specificare la crittografia SSE-C. Non è inoltre possibile utilizzare la console per aggiornare (ad esempio, cambiare la classe di storage o aggiungere metadati) un oggetto esistente archiviato utilizzando la crittografia SSE-C. 

**Topics**
+ [

## Considerazioni prima di utilizzare SSE-C
](#considerations-before-using-sse-c)
+ [

# Specifica della crittografia lato server con chiavi fornite dal cliente (SSE-C)
](specifying-s3-c-encryption.md)
+ [

# Blocco o sblocco di SSE-C per un bucket per uso generico
](blocking-unblocking-s3-c-encryption-gpb.md)
+ [

# Domande frequenti sull'impostazione SSE-C predefinita per i nuovi bucket
](default-s3-c-encryption-setting-faq.md)

# Specifica della crittografia lato server con chiavi fornite dal cliente (SSE-C)
<a name="specifying-s3-c-encryption"></a>

Per utilizzare la crittografia lato server con chiavi fornite dal cliente (SSE-C), assicurati innanzitutto che SSE-C non sia un tipo di crittografia bloccato nella configurazione di crittografia predefinita del bucket generico Amazon S3. Se bloccato, puoi abilitare questo tipo di crittografia aggiornando la configurazione di crittografia predefinita per il bucket. Quindi, puoi utilizzare SSE-C nelle tue richieste di caricamento passando le intestazioni richieste. Vedi [Azioni di Amazon S3 che supportano la scrittura di dati con SSE-C](#amazon-s3-actions-that-support-writing-data-with-sse-c) e assicurati di includere il. [Le intestazioni API S3 sono necessarie per le richieste di crittografia e decrittografia degli oggetti SSE-C](#s3-api-headers-required-for-sse-c-object-encryption-and-decryption-requests) 

Quando carichi un oggetto che specifica SSE-C, Amazon S3 utilizza la chiave di crittografia che fornisci per applicare la crittografia AES-256 ai tuoi dati. Amazon S3 rimuove quindi la chiave di crittografia dalla memoria. Quando viene recuperato un oggetto, è necessario fornire la stessa chiave di crittografia come parte della richiesta. Amazon S3 verifica prima che la chiave di crittografia fornita corrisponda, quindi esegue la decrittografia dell'oggetto prima di restituire i relativi dati. 

Prima di utilizzare SSE-C, assicurati di aver esaminato il. [Considerazioni prima di utilizzare SSE-C](ServerSideEncryptionCustomerKeys.md#considerations-before-using-sse-c)

**Nota**  
Amazon S3 non archivia le chiavi di crittografia fornite. Archivia invece un valore per il codice di autenticazione dei messaggi basato su hash (HMAC) con salting casuale della chiave di crittografia per convalidare le richieste future. Il valore HMAC con l'introduzione di un sale non può essere utilizzato per derivare il valore della chiave di crittografia o per decrittografare i contenuti dell'oggetto crittografato. Ciò significa che se si perde la chiave di crittografia, si perde l'oggetto.

**Topics**
+ [

## Azioni SSE-C e intestazioni obbligatorie
](#sse-c-actions-and-required-headers)
+ [

## Esempio di policy bucket per applicare la crittografia SSE-C
](#example-bucket-policy-to-enforce-sse-c-encryption)
+ [

## Presigned e SSE-C URLs
](#ssec-and-presignedurl)
+ [

## Effettuare richieste con SSE-C
](#making-requests-with-sse-c)
+ [

## Utilizzo della REST API
](#using-rest-api-sse-c)
+ [

## Utilizzando AWS SDKs per specificare SSE-C per le operazioni PUT, GET, Head e Copy
](#sse-c-using-sdks)
+ [

## Utilizzo di AWS SDKs per specificare SSE-C per caricamenti in più parti
](#sse-c-using-sdks-multipart-uploads)

## Azioni SSE-C e intestazioni obbligatorie
<a name="sse-c-actions-and-required-headers"></a>

Specificare SSE-C su S3 supportato richiede il passaggio di parametri di richiesta specifici. APIs 

**Nota**  
L'`PutBucketEncryption`API in Amazon S3 viene utilizzata per configurare la crittografia lato server predefinita per un bucket. Tuttavia, non `PutBucketEncryption` supporta l'attivazione di SSE-C come metodo di crittografia predefinito per un bucket. SSE-C è un metodo di crittografia a livello di oggetto in cui fornisci la chiave di crittografia ad Amazon S3 con ogni richiesta di caricamento o download di oggetti. Amazon S3 utilizza questa chiave per crittografare o decrittografare l'oggetto durante la richiesta e quindi scarta la chiave. Ciò significa che SSE-C è abilitato per ogni oggetto, non come impostazione predefinita del bucket. 

### Azioni di Amazon S3 che supportano la scrittura di dati con SSE-C
<a name="amazon-s3-actions-that-support-writing-data-with-sse-c"></a>

Puoi richiedere la crittografia lato server con chiavi fornite dal cliente (SSE-C) quando scrivi oggetti in un bucket generico utilizzando le seguenti operazioni o azioni API: 
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html)

**Nota**  
S3 Replication supporta gli oggetti crittografati con SSE-C. Per ulteriori informazioni sulla replica di oggetti crittografati, consulta [Replica di oggetti crittografati (SSE-S3, SSE-KMS, DSSE-KMS, SSE-C)](replication-config-for-kms-objects.md). 

### Le intestazioni API S3 sono necessarie per le richieste di crittografia e decrittografia degli oggetti SSE-C
<a name="s3-api-headers-required-for-sse-c-object-encryption-and-decryption-requests"></a>

È necessario fornire le seguenti tre intestazioni API per crittografare o decrittografare gli oggetti con SSE-C: 
+ `x-amz-server-side-encryption-customer-algorithm`Utilizzate questa intestazione per specificare l'algoritmo di crittografia. Il valore dell'intestazione deve essere AES256.
+ `x-amz-server-side-encryption-customer-key`Usa questa intestazione per fornire la chiave di crittografia a 256 bit con codifica base64 per Amazon S3 da utilizzare per crittografare o decrittografare i dati.
+ `x-amz-server-side-encryption-customer-key-MD5`Usa questa intestazione per fornire il digest a 128 bit con codifica Base64 della chiave di crittografia secondo RFC 1321. MD5 Amazon S3 utilizza questa intestazione per il controllo dell'integrità del messaggio per accertarsi che la chiave di crittografia sia stata trasmessa senza errori.

### Le intestazioni API S3 sono necessarie per le richieste di copia di oggetti di origine crittografati con SSE-C
<a name="s3-api-headers-required-for-requests-to-copy-source-objects-encrypted-with-sse-c"></a>

È necessario fornire le seguenti tre intestazioni API per copiare gli oggetti di origine crittografati con SSE-C: 
+ `x-amz-copy-source-server-side-encryption-customer-algorithm`Includi questa intestazione per specificare l'algoritmo che Amazon S3 deve utilizzare per decrittografare l'oggetto sorgente. Questo valore deve essere AES256.
+ `x-amz-copy-source-server-side-encryption-customer-key`Includi questa intestazione per fornire la chiave di crittografia con codifica Base64 per Amazon S3 da utilizzare per decrittografare l'oggetto sorgente. Questa chiave di crittografia deve essere quella fornita ad Amazon S3 quando è stato creato l'oggetto di origine. In caso contrario, Amazon S3 non riesce a decrittare l'oggetto.
+ `x-amz-copy-source-server-side-encryption-customer-key-MD5`Includi questa intestazione per fornire il digest a 128 bit con codifica Base64 della chiave di crittografia secondo RFC 1321. MD5 

## Esempio di policy bucket per applicare la crittografia SSE-C
<a name="example-bucket-policy-to-enforce-sse-c-encryption"></a>

Per richiedere SSE-C per tutti gli oggetti scritti in un bucket Amazon S3, puoi utilizzare una policy sui bucket. Ad esempio, la seguente policy del bucket rifiuta l'autorizzazione per il caricamento di oggetti (`s3:PutObject`) per tutte le richieste che non includono l'intestazione `x-amz-server-side-encryption-customer-algorithm` che richiede di SSE-C. 

```
{  
"Version":"2012-10-17",		 	 	                      
    "Id": "PutObjectPolicy",  
    "Statement": [  
        {  
"Sid": "RequireSSECObjectUploads",  
            "Effect": "Deny",  
            "Principal": "*",  
            "Action": "s3:PutObject",  
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",  
            "Condition": {  
            "Null": {  
              "s3:x-amz-server-side-encryption-customer-algorithm": "true"  
                }  
            }  
        }  
    ]  
}
```

**Importante**  
Se utilizzi una policy bucket per richiedere l'attivazione di SSE-C`s3:PutObject`, devi includere l'`x-amz-server-side-encryption-customer-algorithm`intestazione in tutte le richieste di caricamento in più parti (, e). CreateMultipartUpload UploadPart CompleteMultipartUpload 

## Presigned e SSE-C URLs
<a name="ssec-and-presignedurl"></a>

È possibile generare un URL prefirmato che possa essere utilizzato per operazioni quali il caricamento di un nuovo oggetto, il recupero di un oggetto esistente o dei metadata di un oggetto. URLsSupporto predefinito SSE-C come segue:
+ Quando viene creato un URL prefirmato, è necessario specificare l'algoritmo utilizzando l'intestazione `x-amz-server-side-encryption-customer-algorithm` nel calcolo della firma.
+ Quando viene utilizzato l'URL prefirmato per il caricamento di un nuovo oggetto, il recupero di un oggetto esistente o solo dei metadata di un oggetto, è necessario fornire tutte le intestazioni di crittografia nella richiesta dell'applicazione client. 
**Nota**  
Per non-SSE-C gli oggetti, puoi generare un URL predefinito e incollarlo direttamente in un browser per accedere ai dati.   
Tuttavia, ciò non è possibile per gli oggetti SSE-C poiché oltre all'URL prefirmato, è anche necessario includere le intestazioni HTTP specifiche degli oggetti SSE-C. Pertanto, è possibile utilizzare presigned URLs for SSE-C oggetti solo a livello di codice.

Per ulteriori informazioni su presigned, vedere. URLs [Scarica e carica oggetti con presigned URLs](using-presigned-url.md)

## Effettuare richieste con SSE-C
<a name="making-requests-with-sse-c"></a>

 Al momento della creazione di oggetti con REST API, è possibile specificare la crittografia lato server con le chiavi fornite dal cliente (SSE-C). Quando si utilizza SSE-C, è necessario fornire informazioni sulla chiave di crittografia utilizzando. [Le intestazioni API S3 sono necessarie per le richieste di copia di oggetti di origine crittografati con SSE-C](#s3-api-headers-required-for-requests-to-copy-source-objects-encrypted-with-sse-c) Puoi utilizzare le librerie wrapper AWS SDK per aggiungere queste intestazioni alla tua richiesta. Se necessario, è possibile anche effettuare le chiamate REST API di Amazon S3 direttamente nell'applicazione.

**Importante**  
Prima di specificare la crittografia lato server con chiavi fornite dal cliente (SSE-C), assicurati che la crittografia SSE-C non sia bloccata per il tuo bucket generico. Per ulteriori informazioni, consulta [Blocco o sblocco di SSE-C per un bucket per uso generico](blocking-unblocking-s3-c-encryption-gpb.md).

**Nota**  
Non puoi utilizzare la console Amazon S3 per caricare un oggetto e richiedere SSE-C. Inoltre, non è possibile utilizzare la console per aggiornare (ad esempio, modificare la classe di storage o aggiungere metadati) un oggetto esistente archiviato utilizzando SSE-C. Per ulteriori informazioni, vedere. [Le intestazioni API S3 sono necessarie per le richieste di crittografia e decrittografia degli oggetti SSE-C](#s3-api-headers-required-for-sse-c-object-encryption-and-decryption-requests) 

## Utilizzo della REST API
<a name="using-rest-api-sse-c"></a>

### Amazon S3 REST APIs che supporta SSE-C
<a name="sse-c-supported-apis"></a>

I seguenti Amazon S3 APIs supportano la crittografia lato server con chiavi di crittografia fornite dal cliente (SSE-C).
+ **Operazione GET**: quando si recuperano oggetti utilizzando l'API GET (consulta l'argomento relativo all'[operazione GetObject](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectGET.html)), è possibile specificare le intestazioni di richiesta.
+ **Operazione HEAD**: per recuperare i metadati dell'oggetto utilizzando l'API HEAD (consulta l'argomento relativo all'[operazione HeadObject](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectHEAD.html)), è possibile specificare queste intestazioni di richiesta.
+ **Operazione PUT**: quando si caricano dati utilizzando l'API PUT (consulta l'argomento relativo all'[operazione PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html)), è possibile specificare queste intestazioni di richiesta. 
+ **Caricamento in più parti**: quando si caricano oggetti di grandi dimensioni utilizzando l'API per il caricamento in più parti, è possibile specificare queste intestazioni. [Queste intestazioni vengono specificate nella richiesta di avvio (vedi Avvio del caricamento [multiparte) e in ogni richiesta di caricamento di parti successiva (vedi Upload](https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadInitiate.html) Part o). [UploadPartCopy](https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadUploadPartCopy.html)](https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadUploadPart.html) Per ogni richiesta di caricamento di parte, le informazioni della crittografia devono essere uguali a quelle specificate nella richiesta di avvio di caricamento in più parti.
+ **Operazione POST**: quando si utilizza un'operazione POST per caricare un oggetto (consulta l'argomento relativo all'[oggetto POST](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html)), anziché nelle intestazioni di richiesta, è necessario specificare le stesse informazioni nei campi del modulo.
+ **Operazione di copia**: quando copi un oggetto (vedi [CopyObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)), hai sia un oggetto di origine che un oggetto di destinazione:
  + Se si desidera specificare il tipo di crittografia dell'oggetto di destinazione, è necessario fornire l'intestazione della `x-amz-server-side-encryption ` richiesta.
  + Se desideri che l'oggetto di destinazione sia crittografato utilizzando SSE-C, devi fornire informazioni di crittografia utilizzando l'API S3. [Le intestazioni API S3 sono necessarie per le richieste di crittografia e decrittografia degli oggetti SSE-C](#s3-api-headers-required-for-sse-c-object-encryption-and-decryption-requests)
  + Se l'oggetto di origine è crittografato utilizzando SSE-C, devi fornire le informazioni sulla chiave di crittografia utilizzando le intestazioni dell'API S3. [Le intestazioni API S3 sono necessarie per le richieste di copia di oggetti di origine crittografati con SSE-C](#s3-api-headers-required-for-requests-to-copy-source-objects-encrypted-with-sse-c)

## Utilizzando AWS SDKs per specificare SSE-C per le operazioni PUT, GET, Head e Copy
<a name="sse-c-using-sdks"></a>

Nel seguente esempio viene mostrato come richiedere la crittografia lato server con chiavi fornite dal cliente (SSE-C) per gli oggetti. Negli esempi vengono eseguite le operazioni riportate di seguito. Ogni operazione mostra come specificare le SSE-C-related intestazioni nella richiesta:
+ **Put object**: consente di caricare un oggetto e richiedere la crittografia lato server utilizzando la chiave di crittografia fornita dal cliente.
+ **Get object**: consente di scaricare l'oggetto caricato durante la fase precedente. Nella richiesta, vengono fornite le stesse informazioni di crittografia specificate quando è stato caricato l'oggetto. per consentire ad Amazon S3 di decrittare l'oggetto e di restituirlo.
+ **Get object metadata**: consente di recuperare i metadati dell'oggetto. Fornire le stesse informazioni di crittografia utilizzate quando l'oggetto è stato creato.
+ **Copy object**: consente di creare una copia dell'oggetto caricato in precedenza. Poiché l'oggetto di origine è stato archiviato utilizzando la chiave SSE-C, è necessario fornire le relative informazioni di crittografia nella richiesta di copia. Per impostazione predefinita, Amazon S3 esegue la crittografia dell'oggetto solo se richiesta esplicitamente. In questo esempio, Amazon S3 viene configurato per archiviare una copia crittografata dell'oggetto.

------
#### [ Java ]

**Nota**  
In questo esempio viene illustrato come caricare un oggetto in un'unica operazione. Quando si utilizza l'API per il caricamento in più parti per caricare oggetti di grandi dimensioni, fornire le informazioni di crittografia nello stesso modo mostrato in questo esempio. Per esempi di caricamenti in più parti che utilizzano il AWS SDK per Java, consulta. [Caricamento di un oggetto utilizzando il caricamento in più parti](mpu-upload-object.md)

Per aggiungere le informazioni di crittografia richieste, includere `SSECustomerKey` nella richiesta. Per ulteriori informazioni sulla classe `SSECustomerKey`, consulta la sezione relativa a REST API.

Per istruzioni su come creare e testare un esempio funzionante, consulta [Getting Started](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/getting-started.html) nella AWS SDK per Java Developer Guide.

**Example**  

```
import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.*;

import javax.crypto.KeyGenerator;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;

public class ServerSideEncryptionUsingClientSideEncryptionKey {
    private static SSECustomerKey SSE_KEY;
    private static AmazonS3 S3_CLIENT;
    private static KeyGenerator KEY_GENERATOR;

    public static void main(String[] args) throws IOException, NoSuchAlgorithmException {
        Regions clientRegion = Regions.DEFAULT_REGION;
        String bucketName = "*** Bucket name ***";
        String keyName = "*** Key name ***";
        String uploadFileName = "*** File path ***";
        String targetKeyName = "*** Target key name ***";

        // Create an encryption key.
        KEY_GENERATOR = KeyGenerator.getInstance("AES");
        KEY_GENERATOR.init(256, new SecureRandom());
        SSE_KEY = new SSECustomerKey(KEY_GENERATOR.generateKey());

        try {
            S3_CLIENT = AmazonS3ClientBuilder.standard()
                    .withCredentials(new ProfileCredentialsProvider())
                    .withRegion(clientRegion)
                    .build();

            // Upload an object.
            uploadObject(bucketName, keyName, new File(uploadFileName));

            // Download the object.
            downloadObject(bucketName, keyName);

            // Verify that the object is properly encrypted by attempting to retrieve it
            // using the encryption key.
            retrieveObjectMetadata(bucketName, keyName);

            // Copy the object into a new object that also uses SSE-C.
            copyObject(bucketName, keyName, targetKeyName);
        } catch (AmazonServiceException e) {
            // The call was transmitted successfully, but Amazon S3 couldn't process
            // it, so it returned an error response.
            e.printStackTrace();
        } catch (SdkClientException e) {
            // Amazon S3 couldn't be contacted for a response, or the client
            // couldn't parse the response from Amazon S3.
            e.printStackTrace();
        }
    }

    private static void uploadObject(String bucketName, String keyName, File file) {
        PutObjectRequest putRequest = new PutObjectRequest(bucketName, keyName, file).withSSECustomerKey(SSE_KEY);
        S3_CLIENT.putObject(putRequest);
        System.out.println("Object uploaded");
    }

    private static void downloadObject(String bucketName, String keyName) throws IOException {
        GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, keyName).withSSECustomerKey(SSE_KEY);
        S3Object object = S3_CLIENT.getObject(getObjectRequest);

        System.out.println("Object content: ");
        displayTextInputStream(object.getObjectContent());
    }

    private static void retrieveObjectMetadata(String bucketName, String keyName) {
        GetObjectMetadataRequest getMetadataRequest = new GetObjectMetadataRequest(bucketName, keyName)
                .withSSECustomerKey(SSE_KEY);
        ObjectMetadata objectMetadata = S3_CLIENT.getObjectMetadata(getMetadataRequest);
        System.out.println("Metadata retrieved. Object size: " + objectMetadata.getContentLength());
    }

    private static void copyObject(String bucketName, String keyName, String targetKeyName)
            throws NoSuchAlgorithmException {
        // Create a new encryption key for target so that the target is saved using
        // SSE-C.
        SSECustomerKey newSSEKey = new SSECustomerKey(KEY_GENERATOR.generateKey());

        CopyObjectRequest copyRequest = new CopyObjectRequest(bucketName, keyName, bucketName, targetKeyName)
                .withSourceSSECustomerKey(SSE_KEY)
                .withDestinationSSECustomerKey(newSSEKey);

        S3_CLIENT.copyObject(copyRequest);
        System.out.println("Object copied");
    }

    private static void displayTextInputStream(S3ObjectInputStream input) throws IOException {
        // Read one line at a time from the input stream and display each line.
        BufferedReader reader = new BufferedReader(new InputStreamReader(input));
        String line;
        while ((line = reader.readLine()) != null) {
            System.out.println(line);
        }
        System.out.println();
    }
}
```

------
#### [ .NET ]

**Nota**  
Per esempi di caricamento di oggetti di grandi dimensioni utilizzando l'API per il caricamento in più parti, consulta [Caricamento di un oggetto utilizzando il caricamento in più parti](mpu-upload-object.md) e [Utilizzo dell'API (di basso livello AWS SDKs )](mpu-upload-object.md#mpu-upload-low-level).

Per informazioni sulla configurazione e l'esecuzione degli esempi di codice, consulta [Getting Started with the AWS SDK for .NET nella AWS SDK for](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/net-dg-setup.html) .NET *Developer Guide*. 

**Example**  

```
using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using System;
using System.IO;
using System.Security.Cryptography;
using System.Threading.Tasks;

namespace Amazon.DocSamples.S3
{
    class SSEClientEncryptionKeyObjectOperationsTest
    {
        private const string bucketName = "*** bucket name ***"; 
        private const string keyName = "*** key name for new object created ***"; 
        private const string copyTargetKeyName = "*** key name for object copy ***";
        // Specify your bucket region (an example region is shown).
        private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
        private static IAmazonS3 client;

        public static void Main()
        {
            client = new AmazonS3Client(bucketRegion);
            ObjectOpsUsingClientEncryptionKeyAsync().Wait();
        }
        private static async Task ObjectOpsUsingClientEncryptionKeyAsync()
        {
            try
            {
                // Create an encryption key.
                Aes aesEncryption = Aes.Create();
                aesEncryption.KeySize = 256;
                aesEncryption.GenerateKey();
                string base64Key = Convert.ToBase64String(aesEncryption.Key);

                // 1. Upload the object.
                PutObjectRequest putObjectRequest = await UploadObjectAsync(base64Key);
                // 2. Download the object and verify that its contents matches what you uploaded.
                await DownloadObjectAsync(base64Key, putObjectRequest);
                // 3. Get object metadata and verify that the object uses AES-256 encryption.
                await GetObjectMetadataAsync(base64Key);
                // 4. Copy both the source and target objects using server-side encryption with 
                //    a customer-provided encryption key.
                await CopyObjectAsync(aesEncryption, base64Key);
            }
            catch (AmazonS3Exception e)
            {
                Console.WriteLine("Error encountered ***. Message:'{0}' when writing an object", e.Message);
            }
            catch (Exception e)
            {
                Console.WriteLine("Unknown encountered on server. Message:'{0}' when writing an object", e.Message);
            }
        }

        private static async Task<PutObjectRequest> UploadObjectAsync(string base64Key)
        {
            PutObjectRequest putObjectRequest = new PutObjectRequest
            {
                BucketName = bucketName,
                Key = keyName,
                ContentBody = "sample text",
                ServerSideEncryptionCustomerMethod = ServerSideEncryptionCustomerMethod.AES256,
                ServerSideEncryptionCustomerProvidedKey = base64Key
            };
            PutObjectResponse putObjectResponse = await client.PutObjectAsync(putObjectRequest);
            return putObjectRequest;
        }
        private static async Task DownloadObjectAsync(string base64Key, PutObjectRequest putObjectRequest)
        {
            GetObjectRequest getObjectRequest = new GetObjectRequest
            {
                BucketName = bucketName,
                Key = keyName,
                // Provide encryption information for the object stored in Amazon S3.
                ServerSideEncryptionCustomerMethod = ServerSideEncryptionCustomerMethod.AES256,
                ServerSideEncryptionCustomerProvidedKey = base64Key
            };

            using (GetObjectResponse getResponse = await client.GetObjectAsync(getObjectRequest))
            using (StreamReader reader = new StreamReader(getResponse.ResponseStream))
            {
                string content = reader.ReadToEnd();
                if (String.Compare(putObjectRequest.ContentBody, content) == 0)
                    Console.WriteLine("Object content is same as we uploaded");
                else
                    Console.WriteLine("Error...Object content is not same.");

                if (getResponse.ServerSideEncryptionCustomerMethod == ServerSideEncryptionCustomerMethod.AES256)
                    Console.WriteLine("Object encryption method is AES256, same as we set");
                else
                    Console.WriteLine("Error...Object encryption method is not the same as AES256 we set");

                // Assert.AreEqual(putObjectRequest.ContentBody, content);
                // Assert.AreEqual(ServerSideEncryptionCustomerMethod.AES256, getResponse.ServerSideEncryptionCustomerMethod);
            }
        }
        private static async Task GetObjectMetadataAsync(string base64Key)
        {
            GetObjectMetadataRequest getObjectMetadataRequest = new GetObjectMetadataRequest
            {
                BucketName = bucketName,
                Key = keyName,

                // The object stored in Amazon S3 is encrypted, so provide the necessary encryption information.
                ServerSideEncryptionCustomerMethod = ServerSideEncryptionCustomerMethod.AES256,
                ServerSideEncryptionCustomerProvidedKey = base64Key
            };

            GetObjectMetadataResponse getObjectMetadataResponse = await client.GetObjectMetadataAsync(getObjectMetadataRequest);
            Console.WriteLine("The object metadata show encryption method used is: {0}", getObjectMetadataResponse.ServerSideEncryptionCustomerMethod);
            // Assert.AreEqual(ServerSideEncryptionCustomerMethod.AES256, getObjectMetadataResponse.ServerSideEncryptionCustomerMethod);
        }
        private static async Task CopyObjectAsync(Aes aesEncryption, string base64Key)
        {
            aesEncryption.GenerateKey();
            string copyBase64Key = Convert.ToBase64String(aesEncryption.Key);

            CopyObjectRequest copyRequest = new CopyObjectRequest
            {
                SourceBucket = bucketName,
                SourceKey = keyName,
                DestinationBucket = bucketName,
                DestinationKey = copyTargetKeyName,
                // Information about the source object's encryption.
                CopySourceServerSideEncryptionCustomerMethod = ServerSideEncryptionCustomerMethod.AES256,
                CopySourceServerSideEncryptionCustomerProvidedKey = base64Key,
                // Information about the target object's encryption.
                ServerSideEncryptionCustomerMethod = ServerSideEncryptionCustomerMethod.AES256,
                ServerSideEncryptionCustomerProvidedKey = copyBase64Key
            };
            await client.CopyObjectAsync(copyRequest);
        }
    }
}
```

------

## Utilizzo di AWS SDKs per specificare SSE-C per caricamenti in più parti
<a name="sse-c-using-sdks-multipart-uploads"></a>

L'esempio nella sezione precedente mostra come richiedere la crittografia lato server con la chiave fornita dal cliente (SSE-C) nelle operazioni PUT, GET, Head e Copy. Questa sezione descrive altri Amazon S3 APIs che supportano SSE-C.

------
#### [ Java ]

Per caricare oggetti di grandi dimensioni, puoi utilizzare il caricamento in più parti. APIs Per ulteriori informazioni, consulta [Caricamento e copia di oggetti utilizzando il caricamento multiparte in Amazon S3](mpuoverview.md). Puoi utilizzare sia il livello alto che il livello basso APIs per caricare oggetti di grandi dimensioni. Questi APIs supportano le intestazioni relative alla crittografia nella richiesta.
+ Quando si utilizza l'`TransferManager`API di alto livello, si forniscono le intestazioni specifiche per la crittografia in. `PutObjectRequest` Per ulteriori informazioni, consulta [Caricamento di un oggetto utilizzando il caricamento in più parti](mpu-upload-object.md). 
+ Quando si utilizza l'API di basso livello, è necessario fornire informazioni correlate alla crittografia nella `InitiateMultipartUploadRequest`, seguite da informazioni di crittografia identiche in ogni `UploadPartRequest`. Non è necessario fornire alcuna intestazione specifica della crittografia nella `CompleteMultipartUploadRequest`. Per alcuni esempi, consulta [Utilizzo dell'API (di basso livello AWS SDKs )](mpu-upload-object.md#mpu-upload-low-level). 

Nel seguente esempio viene utilizzato `TransferManager` per creare gli oggetti e viene illustrato come fornire le informazioni correlate alla chiave SSE-C. Inoltre, vengono effettuate le seguenti operazioni:
+ Viene creato un oggetto utilizzando il metodo `TransferManager.upload()`. Nel `PutObjectRequest` caso, fornisci le informazioni sulla chiave di crittografia nella richiesta. Amazon S3 esegue la crittografia dell'oggetto utilizzando la chiave fornita dal cliente.
+ Viene eseguita una copia dell'oggetto richiamando il metodo `TransferManager.copy()`. Nell'esempio Amazon S3 viene configurato per crittografare la copia dell'oggetto utilizzando una nuova `SSECustomerKey`. Poiché l'oggetto di origine è crittografato tramite la chiave SSE-C, `CopyObjectRequest` fornisce anche la chiave di crittografia dell'oggetto di origine in modo che Amazon S3 possa decrittare l'oggetto prima di copiarlo. 

**Example**  

```
import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.CopyObjectRequest;
import com.amazonaws.services.s3.model.PutObjectRequest;
import com.amazonaws.services.s3.model.SSECustomerKey;
import com.amazonaws.services.s3.transfer.Copy;
import com.amazonaws.services.s3.transfer.TransferManager;
import com.amazonaws.services.s3.transfer.TransferManagerBuilder;
import com.amazonaws.services.s3.transfer.Upload;

import javax.crypto.KeyGenerator;
import java.io.File;
import java.security.SecureRandom;

public class ServerSideEncryptionCopyObjectUsingHLwithSSEC {

    public static void main(String[] args) throws Exception {
        Regions clientRegion = Regions.DEFAULT_REGION;
        String bucketName = "*** Bucket name ***";
        String fileToUpload = "*** File path ***";
        String keyName = "*** New object key name ***";
        String targetKeyName = "*** Key name for object copy ***";

        try {
            AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
                    .withRegion(clientRegion)
                    .withCredentials(new ProfileCredentialsProvider())
                    .build();
            TransferManager tm = TransferManagerBuilder.standard()
                    .withS3Client(s3Client)
                    .build();

            // Create an object from a file.
            PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, keyName, new File(fileToUpload));

            // Create an encryption key.
            KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
            keyGenerator.init(256, new SecureRandom());
            SSECustomerKey sseCustomerEncryptionKey = new SSECustomerKey(keyGenerator.generateKey());

            // Upload the object. TransferManager uploads asynchronously, so this call
            // returns immediately.
            putObjectRequest.setSSECustomerKey(sseCustomerEncryptionKey);
            Upload upload = tm.upload(putObjectRequest);

            // Optionally, wait for the upload to finish before continuing.
            upload.waitForCompletion();
            System.out.println("Object created.");

            // Copy the object and store the copy using SSE-C with a new key.
            CopyObjectRequest copyObjectRequest = new CopyObjectRequest(bucketName, keyName, bucketName, targetKeyName);
            SSECustomerKey sseTargetObjectEncryptionKey = new SSECustomerKey(keyGenerator.generateKey());
            copyObjectRequest.setSourceSSECustomerKey(sseCustomerEncryptionKey);
            copyObjectRequest.setDestinationSSECustomerKey(sseTargetObjectEncryptionKey);

            // Copy the object. TransferManager copies asynchronously, so this call returns
            // immediately.
            Copy copy = tm.copy(copyObjectRequest);

            // Optionally, wait for the upload to finish before continuing.
            copy.waitForCompletion();
            System.out.println("Copy complete.");
        } catch (AmazonServiceException e) {
            // The call was transmitted successfully, but Amazon S3 couldn't process
            // it, so it returned an error response.
            e.printStackTrace();
        } catch (SdkClientException e) {
            // Amazon S3 couldn't be contacted for a response, or the client
            // couldn't parse the response from Amazon S3.
            e.printStackTrace();
        }
    }
}
```

------
#### [ .NET ]

Per caricare oggetti di grandi dimensioni, puoi utilizzare l'API di caricamento multipart (vedi[Caricamento e copia di oggetti utilizzando il caricamento multiparte in Amazon S3](mpuoverview.md)). AWS SDK for .NET fornisce sia il livello alto che quello APIs basso per caricare oggetti di grandi dimensioni. Questi APIs supportano le intestazioni relative alla crittografia nella richiesta.
+ Quando si utilizza l'API `Transfer-Utility ` di alto livello, è necessario fornire le intestazioni specifiche della crittografia in `TransferUtilityUploadRequest` come mostrato. Per alcuni esempi di codice, consultare [Caricamento di un oggetto utilizzando il caricamento in più parti](mpu-upload-object.md).

  ```
  TransferUtilityUploadRequest request = new TransferUtilityUploadRequest()
  {
      FilePath = filePath,
      BucketName = existingBucketName,
      Key = keyName,
      // Provide encryption information.
      ServerSideEncryptionCustomerMethod = ServerSideEncryptionCustomerMethod.AES256,
      ServerSideEncryptionCustomerProvidedKey = base64Key,
  };
  ```
+ Quando si utilizza l'API di basso livello, è necessario fornire informazioni correlate alla crittografia nella richiesta di avvio del caricamento in più parti, seguite da informazioni di crittografia identiche nelle successive richieste di caricamento della parte. Non è necessario fornire alcuna intestazione specifica della crittografia nella richiesta di caricamento in più parti completa. Per alcuni esempi, consulta [Utilizzo dell'API (di basso livello AWS SDKs )](mpu-upload-object.md#mpu-upload-low-level).

  Di seguito è riportato un esempio di caricamento in più parti di basso livello in cui viene creata una copia di un oggetto di grandi dimensioni esistente. Nell'esempio l'oggetto da copiare è archiviato in Amazon S3 con la chiave SSE-C e l'oggetto di destinazione deve essere salvato utilizzando la stessa chiave. Nell'esempio vengono effettuate le seguenti operazioni:
  + Viene avviata una richiesta di caricamento in più parti specificando una chiave di crittografia e informazioni correlate.
  + Vengono fornite chiavi di crittografia e informazioni correlate per gli oggetti di origine e di destinazione nella richiesta `CopyPartRequest`.
  + Viene ottenuta la dimensione dell'oggetto di origine da copiare recuperando i metadata dell'oggetto.
  + Caricamento degli oggetti in parti da 5 MB  
**Example**  

  ```
  using Amazon;
  using Amazon.S3;
  using Amazon.S3.Model;
  using System;
  using System.Collections.Generic;
  using System.IO;
  using System.Security.Cryptography;
  using System.Threading.Tasks;
  
  namespace Amazon.DocSamples.S3
  {
      class SSECLowLevelMPUcopyObjectTest
      {
          private const string existingBucketName = "*** bucket name ***";
          private const string sourceKeyName      = "*** source object key name ***"; 
          private const string targetKeyName      = "*** key name for the target object ***";
          private const string filePath           = @"*** file path ***";
          // Specify your bucket region (an example region is shown).
          private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
          private static IAmazonS3 s3Client;
          static void Main()
          {
              s3Client = new AmazonS3Client(bucketRegion);
              CopyObjClientEncryptionKeyAsync().Wait();
          }
  
          private static async Task CopyObjClientEncryptionKeyAsync()
          {
              Aes aesEncryption = Aes.Create();
              aesEncryption.KeySize = 256;
              aesEncryption.GenerateKey();
              string base64Key = Convert.ToBase64String(aesEncryption.Key);
  
              await CreateSampleObjUsingClientEncryptionKeyAsync(base64Key, s3Client);
  
              await CopyObjectAsync(s3Client, base64Key);
          }
          private static async Task CopyObjectAsync(IAmazonS3 s3Client, string base64Key)
          {
              List<CopyPartResponse> uploadResponses = new List<CopyPartResponse>();
  
              // 1. Initialize.
              InitiateMultipartUploadRequest initiateRequest = new InitiateMultipartUploadRequest
              {
                  BucketName = existingBucketName,
                  Key = targetKeyName,
                  ServerSideEncryptionCustomerMethod = ServerSideEncryptionCustomerMethod.AES256,
                  ServerSideEncryptionCustomerProvidedKey = base64Key,
              };
  
              InitiateMultipartUploadResponse initResponse =
                  await s3Client.InitiateMultipartUploadAsync(initiateRequest);
  
              // 2. Upload Parts.
              long partSize = 5 * (long)Math.Pow(2, 20); // 5 MB
              long firstByte = 0;
              long lastByte = partSize;
  
              try
              {
                  // First find source object size. Because object is stored encrypted with
                  // customer provided key you need to provide encryption information in your request.
                  GetObjectMetadataRequest getObjectMetadataRequest = new GetObjectMetadataRequest()
                  {
                      BucketName = existingBucketName,
                      Key = sourceKeyName,
                      ServerSideEncryptionCustomerMethod = ServerSideEncryptionCustomerMethod.AES256,
                      ServerSideEncryptionCustomerProvidedKey = base64Key // " * **source object encryption key ***"
                  };
  
                  GetObjectMetadataResponse getObjectMetadataResponse = await s3Client.GetObjectMetadataAsync(getObjectMetadataRequest);
  
                  long filePosition = 0;
                  for (int i = 1; filePosition < getObjectMetadataResponse.ContentLength; i++)
                  {
                      CopyPartRequest copyPartRequest = new CopyPartRequest
                      {
                          UploadId = initResponse.UploadId,
                          // Source.
                          SourceBucket = existingBucketName,
                          SourceKey = sourceKeyName,
                          // Source object is stored using SSE-C. Provide encryption information.
                          CopySourceServerSideEncryptionCustomerMethod = ServerSideEncryptionCustomerMethod.AES256,
                          CopySourceServerSideEncryptionCustomerProvidedKey = base64Key, //"***source object encryption key ***",
                          FirstByte = firstByte,
                          // If the last part is smaller then our normal part size then use the remaining size.
                          LastByte = lastByte > getObjectMetadataResponse.ContentLength ?
                              getObjectMetadataResponse.ContentLength - 1 : lastByte,
  
                          // Target.
                          DestinationBucket = existingBucketName,
                          DestinationKey = targetKeyName,
                          PartNumber = i,
                          // Encryption information for the target object.
                          ServerSideEncryptionCustomerMethod = ServerSideEncryptionCustomerMethod.AES256,
                          ServerSideEncryptionCustomerProvidedKey = base64Key
                      };
                      uploadResponses.Add(await s3Client.CopyPartAsync(copyPartRequest));
                      filePosition += partSize;
                      firstByte += partSize;
                      lastByte += partSize;
                  }
  
                  // Step 3: complete.
                  CompleteMultipartUploadRequest completeRequest = new CompleteMultipartUploadRequest
                  {
                      BucketName = existingBucketName,
                      Key = targetKeyName,
                      UploadId = initResponse.UploadId,
                  };
                  completeRequest.AddPartETags(uploadResponses);
  
                  CompleteMultipartUploadResponse completeUploadResponse =
                      await s3Client.CompleteMultipartUploadAsync(completeRequest);
              }
              catch (Exception exception)
              {
                  Console.WriteLine("Exception occurred: {0}", exception.Message);
                  AbortMultipartUploadRequest abortMPURequest = new AbortMultipartUploadRequest
                  {
                      BucketName = existingBucketName,
                      Key = targetKeyName,
                      UploadId = initResponse.UploadId
                  };
                  s3Client.AbortMultipartUpload(abortMPURequest);
              }
          }
          private static async Task CreateSampleObjUsingClientEncryptionKeyAsync(string base64Key, IAmazonS3 s3Client)
          {
              // List to store upload part responses.
              List<UploadPartResponse> uploadResponses = new List<UploadPartResponse>();
  
              // 1. Initialize.
              InitiateMultipartUploadRequest initiateRequest = new InitiateMultipartUploadRequest
              {
                  BucketName = existingBucketName,
                  Key = sourceKeyName,
                  ServerSideEncryptionCustomerMethod = ServerSideEncryptionCustomerMethod.AES256,
                  ServerSideEncryptionCustomerProvidedKey = base64Key
              };
  
              InitiateMultipartUploadResponse initResponse =
                 await s3Client.InitiateMultipartUploadAsync(initiateRequest);
  
              // 2. Upload Parts.
              long contentLength = new FileInfo(filePath).Length;
              long partSize = 5 * (long)Math.Pow(2, 20); // 5 MB
  
              try
              {
                  long filePosition = 0;
                  for (int i = 1; filePosition < contentLength; i++)
                  {
                      UploadPartRequest uploadRequest = new UploadPartRequest
                      {
                          BucketName = existingBucketName,
                          Key = sourceKeyName,
                          UploadId = initResponse.UploadId,
                          PartNumber = i,
                          PartSize = partSize,
                          FilePosition = filePosition,
                          FilePath = filePath,
                          ServerSideEncryptionCustomerMethod = ServerSideEncryptionCustomerMethod.AES256,
                          ServerSideEncryptionCustomerProvidedKey = base64Key
                      };
  
                      // Upload part and add response to our list.
                      uploadResponses.Add(await s3Client.UploadPartAsync(uploadRequest));
  
                      filePosition += partSize;
                  }
  
                  // Step 3: complete.
                  CompleteMultipartUploadRequest completeRequest = new CompleteMultipartUploadRequest
                  {
                      BucketName = existingBucketName,
                      Key = sourceKeyName,
                      UploadId = initResponse.UploadId,
                      //PartETags = new List<PartETag>(uploadResponses)
  
                  };
                  completeRequest.AddPartETags(uploadResponses);
  
                  CompleteMultipartUploadResponse completeUploadResponse =
                      await s3Client.CompleteMultipartUploadAsync(completeRequest);
  
              }
              catch (Exception exception)
              {
                  Console.WriteLine("Exception occurred: {0}", exception.Message);
                  AbortMultipartUploadRequest abortMPURequest = new AbortMultipartUploadRequest
                  {
                      BucketName = existingBucketName,
                      Key = sourceKeyName,
                      UploadId = initResponse.UploadId
                  };
                  await s3Client.AbortMultipartUploadAsync(abortMPURequest);
              }
          }
      }
  }
  ```

------

# Blocco o sblocco di SSE-C per un bucket per uso generico
<a name="blocking-unblocking-s3-c-encryption-gpb"></a>

La maggior parte dei casi d'uso moderni in Amazon S3 non utilizza più la crittografia lato server con chiavi fornite dal cliente (SSE-C) perché manca la flessibilità della crittografia lato server con chiavi gestite di Amazon S3 (SSE-S3) o della crittografia lato server con chiavi KMS (SSE-KMS). AWS Il requisito di SSE-C di fornire la chiave di crittografia ogni volta che interagisci con i tuoi dati crittografati SSE-C rende poco pratico condividere la tua chiave SSE-C con altri utenti, ruoli o AWS servizi che leggono i dati dai tuoi bucket S3 per operare sui tuoi dati.

Per limitare i tipi di crittografia lato server che è possibile utilizzare nei bucket generici, è possibile scegliere di bloccare le richieste di scrittura SSE-C aggiornando la configurazione di crittografia predefinita per i bucket. Questa configurazione a livello di bucket blocca le richieste di caricamento di oggetti che specificano SSE-C. Quando SSE-C è bloccato per un bucket `PutObject``CopyObject`, `PostObject` tutte le richieste di caricamento o replica multipart o multipart che specificano la crittografia SSE-C verranno rifiutate con un errore HTTP 403. `AccessDenied`

Questa impostazione è un parametro dell'`PutBucketEncryption`API e può essere aggiornata anche utilizzando la console S3, la AWS CLI AWS SDKs e, se `s3:PutEncryptionConfiguration` disponi dell'autorizzazione.

I valori validi sono`SSE-C`, che blocca la crittografia SSE-C per il bucket generico e`NONE`, che consente l'uso di SSE-C per le scritture nel bucket.

**Importante**  
Come [annunciato il 19 novembre 2025,](https://aws.amazon.com/blogs/storage/advanced-notice-amazon-s3-to-disable-the-use-of-sse-c-encryption-by-default-for-all-new-buckets-and-select-existing-buckets-in-april-2026/) Amazon Simple Storage Service sta implementando una nuova impostazione di sicurezza predefinita per i bucket che disabilita automaticamente la crittografia lato server con chiavi fornite dal cliente (SSE-C) per tutti i nuovi bucket generici. Per i bucket esistenti senza oggetti crittografati SSE-C, Amazon S3 disabiliterà anche SSE-C per tutte le nuove richieste di scrittura. Account AWS Infatti, Account AWS con l'utilizzo di SSE-C, Amazon S3 non modificherà la configurazione di crittografia dei bucket su nessuno dei bucket esistenti in tali account. Questa implementazione è iniziata il 6 aprile 2026 e sarà completata nelle prossime settimane in 37 AWS regioni, tra cui AWS Cina e regioni AWS GovCloud (Stati Uniti).  
Con queste modifiche, le applicazioni che richiedono la crittografia SSE-C devono abilitare deliberatamente SSE-C utilizzando l'operazione [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html)API dopo la creazione di un nuovo bucket. Per ulteriori informazioni su questa modifica, vedere. [Domande frequenti sull'impostazione SSE-C predefinita per i nuovi bucket](default-s3-c-encryption-setting-faq.md)

## Permissions
<a name="bucket-encryption-permissions"></a>

Usa l'`PutBucketEncryption`API o la console S3 o la AWS CLI per bloccare o sbloccare i tipi di crittografia per un bucket generico. AWS SDKs È necessario disporre delle seguenti autorizzazioni:
+ `s3:PutEncryptionConfiguration`

Usa l'`GetBucketEncryption`API o la console S3 o la AWS CLI per visualizzare i tipi di crittografia bloccati per un bucket generico. AWS SDKs È necessario disporre delle seguenti autorizzazioni:
+ `s3:GetEncryptionConfiguration`

## Considerazioni prima di bloccare la crittografia SSE-C
<a name="considerations-before-blocking-sse-c"></a>

Dopo aver bloccato SSE-C per qualsiasi bucket, si applica il seguente comportamento di crittografia:
+ Non è stata apportata alcuna modifica alla crittografia degli oggetti presenti nel bucket prima del blocco della crittografia SSE-C.
+ Dopo aver bloccato la crittografia SSE-C, è possibile continuare a effettuare GetObject HeadObject richieste su oggetti preesistenti crittografati con SSE-C purché si forniscano le intestazioni SSE-C richieste nelle richieste.
+ Quando SSE-C è bloccato per un bucket, qualsiasi richiesta di caricamento o multiparte che specifica la `PutObject` crittografia `CopyObject` SSE-C verrà rifiutata con un errore HTTP 403. `PostObject` `AccessDenied`
+ Se un bucket di destinazione per la replica ha SSE-C bloccato e gli oggetti di origine da replicare sono crittografati con SSE-C, la replica avrà esito negativo con un errore HTTP 403. `AccessDenied`

Se desideri verificare se stai utilizzando la crittografia SSE-C in uno qualsiasi dei tuoi bucket prima di bloccare questo tipo di crittografia, puoi utilizzare strumenti come il monitoraggio dell'accesso ai tuoi dati. [AWS CloudTrail](https://aws.amazon.com/cloudtrail/) Questo [post del blog](https://aws.amazon.com/blogs/storage/auditing-amazon-s3-server-side-encryption-methods-for-object-uploads/) mostra come controllare i metodi di crittografia per il caricamento di oggetti in tempo reale. Puoi anche fare riferimento a questo [articolo di re:Post per aiutarti](https://repost.aws/articles/ARhGC12rOiTBCKHcAe9GZXCA/how-to-detect-existing-use-of-sse-c-in-your-amazon-s3-buckets) a consultare i report di S3 Inventory per verificare se hai oggetti crittografati SSE-C.

### Fasi
<a name="block-sse-c-gpb-steps"></a>

Puoi bloccare o sbloccare la crittografia lato server con chiavi fornite dal cliente (SSE-C) per un bucket generico utilizzando la console Amazon S3, la ( AWS Command Line Interface )AWS CLI, l'API REST di Amazon S3 e. AWS SDKs

### Utilizzo della console S3
<a name="block-sse-c-gpb-console"></a>

Per bloccare o sbloccare la crittografia SSE-C per un bucket utilizzando la console Amazon S3:

1. Accedi alla console di AWS gestione e apri la console Amazon S3 all'indirizzo. https://console.aws.amazon.com/s3/

1. Nel riquadro di navigazione a sinistra, scegli **bucket per uso generico**.

1. Seleziona il bucket per cui desideri bloccare la crittografia SSE-C.

1. Seleziona la scheda **Proprietà** per il bucket.

1. **Passa al pannello delle proprietà di **crittografia predefinita** per il bucket e seleziona Modifica.**

1. Nella sezione **Tipi di crittografia bloccati**, seleziona la casella accanto a **Crittografia lato server con chiavi fornite dal cliente (SSE-C) per bloccare la crittografia SSE-C** o deseleziona questa casella per consentire SSE-C.

1. Seleziona **Salva modifiche**.

### Utilizzando il AWS CLI
<a name="block-sse-c-gpb-cli"></a>

*Per installare la AWS CLI, consulta [Installazione della AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) nella Guida per l'utente.AWS Command Line Interface *

Il seguente esempio CLI mostra come bloccare o sbloccare la crittografia SSE-C per un bucket generico utilizzando il. AWS CLI Per utilizzare il comando, sostituiscilo con le tue informazioni*user input placeholders*.

**Richiesta di blocco della crittografia SSE-C per un bucket generico:**

```
aws s3api put-bucket-encryption \
  --bucket amzn-s3-demo-bucket \
  --server-side-encryption-configuration '{
    "Rules": [{
      "BlockEncryptionTypes": {
        "EncryptionType": "SSE-C"
      }
    }]
  }'
```

**Richiesta di abilitazione dell'uso della crittografia SSE-C su un bucket generico:**

```
aws s3api put-bucket-encryption \
  --bucket amzn-s3-demo-bucket \
  --server-side-encryption-configuration '{
    "Rules": [{
      "BlockEncryptionTypes": {
        "EncryptionType": "NONE"
      }
    }]
  }'
```

## Usando il AWS SDKs
<a name="block-sse-c-gpb-sdks"></a>

------
#### [ SDK for Java 2.x ]

Gli esempi seguenti mostrano come bloccare o sbloccare le scritture di crittografia SSE-C nei bucket generici utilizzando il AWS SDKs

**Esempio: PutBucketEncryption richiesta di impostare la configurazione di crittografia predefinita su SSE-S3 e bloccare SSE-C**

```
S3Client s3Client = ...;
ServerSideEncryptionByDefault defaultSse = ServerSideEncryptionByDefault
        .builder()
        .sseAlgorithm(ServerSideEncryption.AES256)
        .build();
BlockedEncryptionTypes blockedEncryptionTypes = BlockedEncryptionTypes
        .builder()
        .encryptionType(EncryptionType.SSE_C)
        .build();
ServerSideEncryptionRule rule = ServerSideEncryptionRule.builder()
        .applyServerSideEncryptionByDefault(defaultSse)
        .blockedEncryptionTypes(blockedEncryptionTypes)
        .build();
s3Client.putBucketEncryption(be -> be
        .bucket(bucketName)
        .serverSideEncryptionConfiguration(c -> c.rules(rule)));
```

**Esempio: PutBucketEncryption richiesta di impostazione della configurazione di crittografia predefinita su SSE-S3 e sblocco di SSE-C**

```
S3Client s3Client = ...;
ServerSideEncryptionByDefault defaultSse = ServerSideEncryptionByDefault
        .builder()
        .sseAlgorithm(ServerSideEncryption.AES256)
        .build();
BlockedEncryptionTypes blockedEncryptionTypes = BlockedEncryptionTypes
        .builder()
        .encryptionType(EncryptionType.NONE)
        .build();
ServerSideEncryptionRule rule = ServerSideEncryptionRule.builder()
        .applyServerSideEncryptionByDefault(defaultSse)
        .blockedEncryptionTypes(blockedEncryptionTypes)
        .build();
s3Client.putBucketEncryption(be -> be
        .bucket(bucketName)
        .serverSideEncryptionConfiguration(c -> c.rules(rule)));
```

------
#### [ SDK for Python Boto3 ]

**Esempio: PutBucketEncryption richiesta di impostare la configurazione di crittografia predefinita su SSE-S3 e bloccare SSE-C**

```
s3 = boto3.client("s3")
s3.put_bucket_encryption(
    Bucket="amzn-s3-demo-bucket",
    ServerSideEncryptionConfiguration={
        "Rules":[{
            "ApplyServerSideEncryptionByDefault": {
                "SSEAlgorithm": "AES256"
            },
            "BlockedEncryptionTypes": {
                "EncryptionType": ["SSE-C"]
            }
        }]
    }
)
```

**Esempio: PutBucketEncryption richiesta di impostazione della configurazione di crittografia predefinita su SSE-S3 e sblocco di SSE-C**

```
s3 = boto3.client("s3")
s3.put_bucket_encryption(
    Bucket="amzn-s3-demo-bucket",
    ServerSideEncryptionConfiguration={
        "Rules":[{
            "ApplyServerSideEncryptionByDefault": {
                "SSEAlgorithm": "AES256"
            },
            "BlockedEncryptionTypes": {
                "EncryptionType": ["NONE"]
            }
        }]
    }
)
```

------

## Utilizzo della REST API
<a name="bucket-tag-add-api"></a>

*Per informazioni sul supporto dell'API REST di Amazon S3 per il blocco o lo sblocco della crittografia SSE-C per un bucket generico, consulta la sezione seguente nel riferimento all'API di Amazon Simple Storage Service:*
+ [BlockedEncryptionTypes](https://docs.aws.amazon.com/AmazonS3/latest/API/API_BlockedEncryptionTypes.html)tipo di dati utilizzato nel tipo di [ServerSideEncryptionRule](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ServerSideEncryptionRule.html)dati delle operazioni e API. [PutBucketEncryption[GetBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketEncryption.html)](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html)

# Domande frequenti sull'impostazione SSE-C predefinita per i nuovi bucket
<a name="default-s3-c-encryption-setting-faq"></a>

**Importante**  
Come [annunciato il 19 novembre 2025,](https://aws.amazon.com/blogs/storage/advanced-notice-amazon-s3-to-disable-the-use-of-sse-c-encryption-by-default-for-all-new-buckets-and-select-existing-buckets-in-april-2026/) Amazon Simple Storage Service sta implementando una nuova impostazione di sicurezza predefinita per i bucket che disabilita automaticamente la crittografia lato server con chiavi fornite dal cliente (SSE-C) per tutti i nuovi bucket generici. Per i bucket esistenti senza oggetti crittografati SSE-C, Amazon S3 disabiliterà anche SSE-C per tutte le nuove richieste di scrittura. Account AWS Infatti, Account AWS con l'utilizzo di SSE-C, Amazon S3 non modificherà la configurazione di crittografia dei bucket su nessuno dei bucket esistenti in tali account. Questa implementazione è iniziata il 6 aprile 2026 e sarà completata nelle prossime settimane in 37 AWS regioni, tra cui AWS Cina e regioni AWS GovCloud (Stati Uniti).  
Con queste modifiche, le applicazioni che richiedono la crittografia SSE-C devono abilitare deliberatamente SSE-C utilizzando l'operazione [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html)API dopo la creazione di un nuovo bucket.

Nelle sezioni seguenti vengono fornite le risposte alle domande su questo aggiornamento.

**1. Nell'aprile 2026, la nuova impostazione SSE-C avrà effetto per tutti i bucket appena creati?**

Sì. Questa implementazione è iniziata il 6 aprile 2026 e sarà completata nelle prossime settimane in 37 AWS regioni, tra cui AWS Cina e regioni AWS GovCloud (Stati Uniti).

**Nota**  
Una volta completata la distribuzione, i bucket appena creati in tutte le AWS regioni tranne Medio Oriente (Bahrein) e Medio Oriente (Emirati Arabi Uniti) avranno SSE-C disabilitato per impostazione predefinita.

**2. Quanto tempo ci vorrà prima che questa implementazione copra tutte le AWS regioni?**

L'implementazione è iniziata il 6 aprile 2026 e sarà completata in poche settimane.

**3. Come faccio a sapere che l'aggiornamento è completo?**

È possibile determinare facilmente se la modifica è stata completata nella propria AWS regione creando un nuovo bucket e chiamando l'operazione [GetBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketEncryption.html)API per determinare se la crittografia SSE-C è disabilitata. Una volta completato l'aggiornamento, per tutti i nuovi bucket generici la crittografia SSE-C sarà automaticamente disabilitata per impostazione predefinita. Puoi modificare queste impostazioni dopo aver creato il tuo bucket S3 chiamando l'operazione API. [PutBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html)

**4. Amazon S3 aggiornerà le mie configurazioni di bucket esistenti?**

Se il tuo AWS account non dispone di oggetti crittografati SSE-C, AWS disabiliterà la crittografia SSE-C su tutti i bucket esistenti. Se un bucket del tuo AWS account contiene oggetti crittografati SSE-C, non AWS modificherà le configurazioni dei bucket su nessuno dei tuoi bucket in quell'account. Una volta completata la `CreateBucket` modifica per la tua AWS regione, la nuova impostazione predefinita verrà applicata a tutti i nuovi bucket generici. 

 **5. Posso disabilitare la crittografia SSE-C per i miei bucket prima che l'aggiornamento sia completo?** 

Sì. Puoi disabilitare la crittografia SSE-C per qualsiasi bucket chiamando l'operazione [PutBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html)API e specificando la nuova intestazione. `BlockedEncryptionTypes` 

**6. Posso usare SSE-C per crittografare i dati nei miei nuovi bucket?**

Sì. La maggior parte dei casi d'uso moderni in Amazon S3 non utilizza più SSE-C perché manca la flessibilità della crittografia lato server con chiavi gestite di Amazon S3 (SSE-S3) o della crittografia lato server con chiavi KMS (SSE-KMS). AWS Se devi utilizzare la crittografia SSE-C in un nuovo bucket, puoi creare il nuovo bucket e quindi abilitare l'uso della crittografia SSE-C in una richiesta separata. `PutBucketEncryption`

 **Esempio**

```
aws s3api create-bucket \  
bucket amzn-s3-demo-bucket \ 
region us-east-1 \ 
  
aws s3api put-bucket-encryption \  
-- bucket amzn-s3-demo-bucket \
-- server-side-encryption-configuration \
'{ \Rules\: [{   
   {   
   \ApplyServerSideEncryptionByDefault\: {   
     \SSEAlgorithm\: \AES256\,  
    },   
   \BlockedEncryptionTypes\: [  
     \EncryptionType\:\NONE\]   
   }   
   }]   
}'
```

**Nota**  
È necessario disporre dell'autorizzazione per chiamare l'API. `s3:PutEncryptionConfiguration` `PutBucketEncryption` 

**7. In che modo il blocco di SSE-C influisce sulle richieste al mio bucket?**

Quando SSE-C è bloccato per un bucket `PutObject` `CopyObject``PostObject`, qualsiasi richiesta di caricamento o replica multiparte che specifichi la crittografia SSE-C verrà rifiutata con un errore HTTP 403. `AccessDenied` 