Utilizzo della crittografia lato server con chiavi AWS KMS (SSE-KMS)
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 della crittografia automatica per la configurazione della crittografia predefinita del bucket S3 e per il caricamento di nuovi oggetti è disponibile nei log di AWS CloudTrail, in Inventario S3, in S3 Storage Lens, nella console di Amazon S3 e come intestazione di risposta API Amazon S3 aggiuntiva nella AWS Command Line Interface e negli SDK AWS. Per ulteriori informazioni, consulta Domande frequenti sulla crittografia predefinita.
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, è possibile scegliere di configurare i bucket in modo da utilizzare la crittografia lato server con chiavi AWS Key Management Service (AWS KMS) (SSE-KMS). Per ulteriori informazioni, consulta Specifica della crittografia lato server con AWS KMS (SSE-KMS).
AWS KMS è un servizio che combina hardware e software sicuri e altamente disponibili per offrire un sistema di gestione delle chiavi a misura di 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.
Se utilizzi le chiavi KMS, puoi utilizzare AWS KMS mediante la Console di gestione AWS
-
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, ma non dalla console AWS KMS
.
I controlli della sicurezza in AWS KMS possono essere d'aiuto per soddisfare i requisiti di conformità correlati alla crittografia. Puoi utilizzare queste chiavi KMS per proteggere i dati nei bucket Amazon S3. Quando utilizzi la crittografia SSE-KMS con un S3 bucket, è necessario che le AWS KMS keys si trovino nelle stessa regione del bucket.
Non vi sono costi aggiuntivi per l'utilizzo di AWS KMS keys. Per ulteriori informazioni, consulta la sezione Concetti di AWS KMS key nella Guida per gli sviluppatori di AWS Key Management Service e i Prezzi di AWS KMS
Per istruzioni su come consentire agli utenti IAM di accedere ai bucket crittografati con KMS, consulta Il mio bucket Amazon S3 dispone di una crittografia predefinita che utilizza una chiave AWS KMS personalizzata. Come posso consentire agli utenti di scaricare e caricare nel bucket?
Autorizzazioni
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 una AWS KMS key, sono necessarie le autorizzazioni kms:Decrypt per la chiave. Per eseguire un caricamento in più parti per crittografare un oggetto con una AWS KMS key, sono necessarie le autorizzazioni kms:GenerateDataKey e kms:Decrypt per la chiave.
Importante
Esamina attentamente le autorizzazioni concesse nelle policy delle chiavi KMS. Limita sempre le autorizzazioni delle policy delle chiavi KMS gestite dal cliente solo ai principali IAM e ai servizi AWS che devono accedere all'azione chiave AWS KMS pertinente. Per ulteriori informazioni, consulta Policy delle chiavi in AWS KMS.
Argomenti
AWS KMS keys
Se utilizzi la crittografia lato server con AWS KMS (SSE-KMS), puoi utilizzare le chiavi gestite da AWS predefinite oppure specificare una chiave gestita dal cliente già creata. AWS KMS supporta la crittografia a busta. S3 utilizza le funzionalità AWS KMS per la crittografia a busta 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 nella Guida per sviluppatori di AWS Key Management Service.
Se non specifichi una chiave gestita dal cliente, Amazon S3 crea automaticamente una Chiave gestita da AWS nel tuo Account AWS la prima volta che un oggetto crittografato con SSE-KMS viene aggiunto 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 non possono essere condivisi tra più account. Per condividere i dati SSE-KMS in modalità multi-account, è necessario utilizzare una chiave gestita dal cliente di 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 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 dal cliente e le chiavi gestite da AWS, consulta Chiavi del cliente e chiavi AWS nella Guida per gli sviluppatori di 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 nella Guida per gli sviluppatori di AWS Key Management Service.
Utilizzo della crittografia SSE-KMS per operazioni multi-account
Quando si utilizza la crittografia per operazioni multi-account, tieni presente quanto segue:
-
Se per la AWS KMS key non viene specificato un nome della risorsa Amazon (ARN) o un alias al momento della richiesta né tramite la configurazione della crittografia predefinita del bucket, viene utilizzata la Chiave gestita da AWS (
aws/s3) dell’account di caricamento per la crittografia ed è richiesta per la decrittografia. -
Chiave gestita da AWS (
aws/s3) può essere utilizzata come chiave KMS per operazioni multi-account quando i principali AWS Identity and Access Management (IAM) di caricamento e accesso 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 utilizzi invece l'alias di una 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 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 gestite da AWS, consulta l'argomento relativo all'uso di una Chiave gestita da AWS o di una chiave gestita dal cliente per crittografare gli oggetti in Amazon S3
Flusso di lavoro della crittografia SSE-KMS
Se scegli di crittografare i dati utilizzando una Chiave gestita da AWS o una chiave gestita dal cliente, AWS KMS e Amazon S3 eseguono le seguenti operazioni di crittografia a busta:
-
Amazon S3 richiede una chiave di dati in testo non formattato e una copia della chiave crittografata con la chiave KMS specificata.
-
AWS KMS crea una chiave di dati, esegue la crittografia utilizzando la chiave KMS, quindi invia la chiave di dati in testo normale e la chiave di dati crittografata ad Amazon S3.
-
Amazon S3 crittografa i dati utilizzando la chiave di dati ed eliminando appena possibile la chiave di testo normale dalla memoria dopo l'utilizzo.
-
Amazon S3 archivia la chiave di dati crittografata come metadati con i dati crittografati.
Quando richiedi che i dati siano decrittografati, Amazon S3 e AWS KMS eseguono le seguenti operazioni:
-
Amazon S3 invia la chiave di dati crittografati a AWS KMS in una richiesta
Decrypt. -
AWS KMS decritta la chiave dei dati crittografati utilizzando la stessa chiave KMS e restituisce la chiave di dati non crittografati ad Amazon S3.
-
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 per la crittografia lato server in Amazon S3, devi scegliere una chiave KMS di crittografia simmetrica. Amazon S3 supporta solo chiavi KMS di crittografia simmetrica. Per ulteriori informazioni sulle chiavi, consulta Chiavi KMS di crittografia simmetrica nella Guida per gli sviluppatori di AWS Key Management Service.
Verifica della crittografia SSE-KMS
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. Per ulteriori informazioni, consulta Valutazione dell'attività e dell'utilizzo dello storage con S3 Storage Lens. Per un elenco completo dei parametri, consulta Glossario dei parametri di S3 Storage.
Per verificare l'utilizzo delle chiavi AWS KMS per i dati crittografati SSE-KMS, è possibile utilizzare i log di AWS CloudTrail. È possibile ottenere informazioni sulle operazioni crittografiche, come ad esempio GenerateDataKey e Decrypt. CloudTrail supporta numerosi valori di attributo per filtrare la ricerca, tra cui nome dell'evento, nome utente e origine dell'evento.
Chiavi bucket Amazon S3
Quando si configura la crittografia lato server tramite AWS KMS (SSE-KMS), è possibile impostare il bucket per l'utilizzo di chiavi di bucket S3 per SSE-KMS. L'utilizzo di una chiave a livello di bucket per SSE-KMS può ridurre i costi delle richieste di AWS KMS fino a 99%, riducendo il traffico di 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 univoche per gli oggetti nel bucket. Questa chiave di bucket S3 viene utilizzata per un periodo di tempo limitato all'interno di Amazon S3, riducendo ulteriormente la necessità di Amazon S3 di effettuare richieste a AWS KMS per completare le operazioni di crittografia. 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.
Richiesta della crittografia lato server
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.
Per richiedere l'utilizzo di una specifica AWS KMS key per crittografare gli oggetti in un bucket, puoi utilizzare la chiave di condizione s3:x-amz-server-side-encryption-aws-kms-key-id. Per specificare la chiave KMS, devi utilizzare il nome della risorsa Amazon (ARN) della chiave nel formato arn:aws:kms:. AWS Identity and Access Management non convalida se la stringa per region:acct-id:key/key-ids3:x-amz-server-side-encryption-aws-kms-key-id esiste.
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. Se la richiesta PutObject specifica aws:kms nell'intestazione x-amz-server-side-encryption, ma non specifica l'intestazione x-amz-server-side-encryption-aws-kms-key-id, Amazon S3 presume che si voglia usare l'intestazione Chiave gestita da AWS. Ciò nonostante, è necessario che l'ID della chiave AWS KMS utilizzata da Amazon S3 per la crittografia degli oggetti corrisponda a quello della chiave AWS KMS nella policy. In caso contrario, Amazon S3 rifiuta la richiesta.
Per un elenco completo delle chiavi di condizione specifiche per Amazon S3, consulta Chiavi di condizione per Amazon S3 in Riferimento alle autorizzazioni di servizio.
Contesto di crittografia
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 ha esito negativo. AWS KMS utilizza il contesto di crittografia come dati autenticati aggiuntivi (AAD) per supportare la crittografia autenticata. Per ulteriori informazioni sul contesto di crittografia, consulta il Contesto di crittografia 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.
arn:aws:s3:::bucket_ARN
Facoltativamente, è possibile fornire una coppia di contesto di crittografia aggiuntiva utilizzando l'intestazione x-amz-server-side-encryption-context in una richiesta s3:PutObject. 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. È inoltre possibile utilizzare il valore ARN del contesto di crittografia predefinito per tenere traccia delle richieste pertinenti in AWS CloudTrail visualizzando quale ARN Amazon S3 è stato utilizzato con una specifica chiave di crittografia.
Nel campo requestParameters di un file di log CloudTrail, 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 crittografati mediante AWS KMS
Importante
Tutte le richieste GET e PUT per gli oggetti crittografati mediante AWS KMS devono essere creati utilizzando Secure Sockets Layer (SSL) o Transport Layer Security (TLS). Le richieste devono inoltre essere firmate utilizzando credenziali valide, ad esempio AWS Signature Version 4 (o AWS Signature Version 2).
AWS Signature Version 4 rappresenta il processo per aggiungere le informazioni di autenticazione alle richieste AWS inviate da HTTP. Per motivi di sicurezza, la maggior parte delle richieste ad AWS deve essere firmata con una chiave di accesso, composta da un ID 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) e Processo di firma Signature Version 4.
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).