Utilizzo della crittografia lato server con chiavi (SSE-KMS) AWS KMS - Amazon Simple Storage Service

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

Utilizzo della crittografia lato server con chiavi (SSE-KMS) AWS 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 di crittografia automatico per la configurazione di crittografia predefinita del bucket S3 e per il caricamento di nuovi oggetti è disponibile nei AWS CloudTrail log, in S3 Inventory, S3 Storage Lens, nella console Amazon S3 e come intestazione di risposta dell'API Amazon S3 aggiuntiva negli SDK and. AWS Command Line Interface 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, 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 Specifica della crittografia lato server con AWS KMS (SSE-KMS).

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 viene richiesto SSE-KMS per l'oggetto, il checksum S3 (come parte dei metadati dell'oggetto) viene archiviato in forma crittografata. Per ulteriori informazioni sui checksum, consulta Verifica dell'integrità degli oggetti.

Se utilizzi le chiavi KMS, puoi utilizzarle AWS KMS tramite l'AWS Management Consoleo l'API per effettuare le seguenti operazioni:AWS KMS

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

  • Verificare il loro utilizzo per dimostrare che sono state utilizzate correttamente. Il controllo è supportato dall'API AWS KMS, ma non dalla AWS Management ConsoleAWS 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 nella Guida per gli sviluppatori di AWS Key Management Service e i Prezzi di AWS KMS.

Autorizzazioni

Per caricare un oggetto crittografato con un AWS KMS key su Amazon S3, sono necessarie kms:GenerateDataKey le autorizzazioni sulla chiave. Per scaricare un oggetto crittografato con un AWS KMS key, sono necessarie kms:Decrypt le autorizzazioni. Per informazioni sulle AWS KMS autorizzazioni necessarie per i caricamenti in più parti, consulta. Autorizzazioni e API per il caricamento in più parti

Importante

Esamina attentamente le autorizzazioni concesse nelle politiche chiave del tuo 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

AWS KMS keys

Quando utilizzi la crittografia lato server con AWS KMS (SSE-KMS), puoi utilizzare la chiave AWS gestita predefinita oppure puoi specificare una chiave gestita dal cliente che hai già creato. 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 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 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. 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 e AWS gestite dal cliente, consulta Customer keys and AWS keys 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 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 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. Puoi configurare la policy di una chiave gestita dal cliente per consentire l'accesso da un altro account.

  • Se stai specificando una chiave KMS gestita dal cliente, ti consigliamo di utilizzare una chiave KMS ARN completamente qualificata. 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 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?

Flusso di lavoro di crittografia SSE-KMS

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 in testo non formattato e una copia della chiave crittografata con la chiave KMS specificata.

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

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

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

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

  3. 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 chiave KMS 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. Puoi anche utilizzare il numero di bucket abilitati per SSE-KMS e i bucket abilitati per% SSE-KMS per comprendere il numero di bucket abilitati (SSE-KMS) per la crittografia dei bucket predefinita. 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 per i dati crittografati SSE-KMS, è possibile utilizzare i log. AWS KMS AWS CloudTrail Puoi ottenere informazioni dettagliate sulle tue operazioni crittografiche, ad esempio e. GenerateDataKeyDecrypt CloudTrail supporta numerosi valori di attributo per filtrare la ricerca, tra cui il nome dell'evento, il nome utente e l'origine dell'evento.

Chiavi bucket Amazon S3

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

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.

{ "Version":"2012-10-17", "Id":"PutObjectPolicy", "Statement":[{ "Sid":"DenyObjectsThatAreNotSSEKMS", "Effect":"Deny", "Principal":"*", "Action":"s3:PutObject", "Resource":"arn:aws:s3:::example-s3-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 carichi un oggetto, puoi specificare la chiave KMS con l'intestazione x-amz-server-side-encryption-aws-kms-key-id. Se l'intestazione non è presente nella richiesta, Amazon S3 presuppone che voglia utilizzare la 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 di Amazon S3, consulta Condition keys for Amazon S3 nel Service Authorization Reference.

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 non riesce. 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, puoi fornire una coppia di contesti di crittografia aggiuntiva utilizzando l'x-amz-server-side-encryption-contextintestazione 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. 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:::example-s3-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:::example-s3-bucket1" }

Invio di richieste per oggetti AWS KMS crittografati

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