Specificare la crittografia lato server con AWS KMS (-) SSE 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à.

Specificare la crittografia lato server con AWS KMS (-) SSE KMS

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 chiavi gestite di Amazon S3 SSE (-S3) è la configurazione di crittografia predefinita per ogni bucket in Amazon S3. Per utilizzare un diverso tipo di crittografia, puoi specificare il tipo di crittografia lato server da utilizzare nelle richieste PUT S3 oppure impostare 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 (AWS KMS) chiavi (-), la crittografia lato server a doppio livello con chiavi (SSE-KMS) o la crittografia lato server con AWS KMS chiavi fornite dal cliente (DSSE-C). KMS SSE Se desideri impostare una configurazione di crittografia predefinita diversa nel bucket di destinazione, puoi usare - o -. SSE KMS DSSE KMS

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

Puoi specificareSSE: KMS utilizzando la console Amazon S3 AWS SDKs, REST API le operazioni e il 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 multi-regione come se fossero chiavi a regione singola e non utilizza le caratteristiche multi-regione della chiave. Per ulteriori informazioni, consulta Utilizzo delle chiavi multiregionali nella Guida per gli AWS Key Management Service sviluppatori.

Nota

Se desideri utilizzare una KMS chiave di proprietà di un altro account, devi disporre dell'autorizzazione per utilizzare la chiave. Per ulteriori informazioni sulle autorizzazioni per le KMS chiavi su più account, consulta Creazione di KMS chiavi utilizzabili da altri account nella Guida per gli AWS Key Management Service sviluppatori.

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
  • Puoi modificare la crittografia di un oggetto se l'oggetto è inferiore a 5 GB. Se l'oggetto è superiore a 5 GB, è necessario utilizzare AWS CLIo AWS SDKsper modificare la crittografia di un oggetto.

  • Per un elenco delle autorizzazioni aggiuntive necessarie per modificare la crittografia di un oggetto, vedereAutorizzazioni richieste per le operazioni di Amazon API S3. Ad esempio, le politiche che concedono questa autorizzazione, vedereEsempi di policy basate sull'identità per Amazon S3.

  • 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 a AWS Management Console e apri la console Amazon S3 all'indirizzo. https://console.aws.amazon.com/s3/

  2. Nel pannello di navigazione, scegli Bucket, quindi scegli la scheda Bucket per uso generico. Accedi al bucket o alla cartella Amazon S3 che contiene gli oggetti che desideri modificare.

  3. Seleziona la casella di controllo relativa agli oggetti che desideri modificare.

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

  5. Scorri fino alla sezione Crittografia lato server.

  6. 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 utilizzi l'KMSopzione SSE - per la configurazione di crittografia predefinita, sei soggetto alle quote 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 nella Guida per gli sviluppatori di AWS Key Management Service .

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

    2. In AWS KMS Chiave, esegui una delle seguenti operazioni per scegliere la tua KMS chiave:

      • Per scegliere da un elenco di KMS chiavi disponibili, scegliete Scegli dalla vostra AWS KMS keys, quindi scegliete la KMSchiave 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 dal cliente, consulta Chiavi gestite dal cliente e chiavi AWS nella Guida per gli sviluppatori di AWS Key Management Service .

      • Per inserire la KMS chiaveARN, scegli Invio AWS KMS key ARN, quindi inserisci la KMS chiave ARN nel campo visualizzato.

      • Per creare una nuova chiave gestita dal cliente nella AWS KMS console, scegli Crea una KMS chiave.

        Per ulteriori informazioni sulla creazione di una AWS KMS key, consulta Creating keys nella AWS Key Management Service Developer Guide.

      Importante

      È possibile utilizzare solo KMS le chiavi disponibili nello Regione AWS stesso bucket. La console Amazon S3 elenca solo le prime 100 KMS chiavi nella stessa regione del bucket. Per utilizzare una KMS chiave non presente nell'elenco, è necessario immettere la KMS chiave. ARN Se desideri utilizzare una KMS chiave di proprietà di un altro account, devi prima avere il permesso di usare la chiave e poi devi inserire la KMS chiaveARN.

      Amazon S3 supporta solo chiavi di crittografia simmetriche e non KMS chiavi asimmetriche. KMS Per ulteriori informazioni, consulta Identificazione delle chiavi simmetriche e asimmetriche nella Guida per gli sviluppatori. KMS AWS Key Management Service

  8. In Impostazioni di copia aggiuntive, scegli se desideri copiare le impostazioni di origine, Non specificare le impostazioni o Specificare le impostazioni. Copia le impostazioni di origine è l'opzione predefinita. Se desiderate copiare solo l'oggetto senza gli attributi delle impostazioni di origine, scegliete Non specificare le impostazioni. Scegliete Specificate impostazioni per specificare le impostazioni per la classe di archiviazioneACLs, i tag degli oggetti, i metadati, la crittografia lato server e i checksum aggiuntivi.

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

Quando create un oggetto, ovvero quando caricate un nuovo oggetto o copiate un oggetto esistente, potete specificare l'uso della crittografia lato server con 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 di 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

RESTAPIOperazioni Amazon S3 che supportano - SSE KMS

Le seguenti REST API operazioni accettano le intestazioni x-amz-server-side-encryptionx-amz-server-side-encryption-aws-kms-key-id, e x-amz-server-side-encryption-context request.

  • PutObject— Quando si caricano dati utilizzando l'PUTAPIoperazione, è possibile specificare queste intestazioni di richiesta.

  • CopyObject: quando copi un oggetto, disponi di un oggetto di origine e un oggetto di destinazione. Quando si passano SSE le KMS intestazioni con l'CopyObjectoperazione, queste vengono applicate solo all'oggetto di destinazione. Quando copiate un oggetto esistente, indipendentemente dal fatto che l'oggetto di origine sia crittografato o meno, l'oggetto di destinazione non viene crittografato a meno che non richiediate esplicitamente la crittografia lato server.

  • POST Object— Quando si utilizza un'POSToperazione per caricare un oggetto, anziché le intestazioni della richiesta, si forniscono le stesse informazioni nei campi del modulo.

  • CreateMultipartUpload— Quando si caricano oggetti di grandi dimensioni utilizzando l'APIoperazione di caricamento in più parti, è possibile specificare queste intestazioni. Queste intestazioni vengono specificate nella richiesta. CreateMultipartUpload

Le intestazioni di risposta delle seguenti REST API operazioni restituiscono l'x-amz-server-side-encryptionintestazione quando un oggetto viene archiviato utilizzando la crittografia lato server.

Importante
  • Tutte GET le PUT richieste relative a un oggetto protetto da hanno AWS KMS esito negativo se non vengono effettuate tali 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 HTTP400 BadRequest.

Contesto di crittografia (x-amz-server-side-encryption-context)

Se lo specifichix-amz-server-side-encryption:aws:kms, Amazon S3 API supporta un contesto di crittografia con l'x-amz-server-side-encryption-contextintestazione. 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 contesti di crittografia. Se utilizzi SSE - KMS senza abilitare una S3 Bucket Key, usi l'oggetto ARN come contesto di crittografia; ad esempio,. arn:aws:s3:::object_ARN Tuttavia, se utilizzi SSE KMS e abiliti una S3 Bucket Key, utilizzi il bucket ARN per il tuo 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 è 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. Per informazioni generali sul contesto di crittografia, consulta Concetti di AWS Key Management Service : Contesto di crittografia nella Guida per gli sviluppatori di AWS Key Management Service .

AWS KMS ID chiave (x-amz-server-side-encryption-aws-kms-key-id)

Puoi utilizzare l'intestazione x-amz-server-side-encryption-aws-kms-key-id per specificare l'ID della chiave gestita dal cliente utilizzata per proteggere i dati. 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 di crittografia simmetrica. KMS Amazon S3 supporta solo chiavi di crittografia simmetriche. KMS Per ulteriori informazioni su queste chiavi, consulta Chiavi di crittografia KMS simmetriche nella Guida per gli sviluppatori.AWS Key Management Service

Chiavi bucket S3 (x-amz-server-side-encryption-aws-bucket-key-enabled)

Puoi utilizzare l'intestazione della x-amz-server-side-encryption-aws-bucket-key-enabled richiesta per abilitare o disabilitare una S3 Bucket 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 Amazon S3 Bucket Keys.

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 .

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 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 Amazon S3 Bucket Keys sulle tue COPY operazioni PUT OO aggiungendo o. --bucket-key-enabled --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 Ridurre il costo di SSE - KMS con Amazon S3 Bucket Keys.

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

Puoi crittografare un oggetto non crittografato da utilizzareSSE, KMS copiando nuovamente l'oggetto al suo posto.

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

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 with the AWS SDKs for Java e. NET. Per informazioni su altriSDKs, consulta Codice di esempio e librerie nel AWS Developer Center.

Importante

Quando utilizzi una AWS KMS key crittografia lato server in Amazon S3, devi scegliere una chiave di crittografia simmetrica. KMS Amazon S3 supporta solo chiavi di crittografia simmetriche. KMS Per ulteriori informazioni su queste chiavi, consulta Chiavi di crittografia KMS simmetriche nella Guida per gli sviluppatori.AWS Key Management Service

Operazione CopyObject

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 Copiare, spostare e rinominare oggetti.

Operazione PUT

Java

Quando carichi un oggetto utilizzando il AWS SDK for 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 (-) AWS KMS SSE KMS. Facoltativamente, puoi creare una KMS chiave 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 APIAWS Key Management Service nella 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.

.NET

Quando carichi un oggetto utilizzando il AWS SDK for .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 (-) AWS KMS SSE KMS. Facoltativamente, puoi creare la tua 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 APIAWS Key Management Service nella 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.

Predefinito URLs

Java

Quando si crea un prefirmato URL per un oggetto crittografato con un AWS KMS key, è necessario specificare in modo esplicito la versione 4 della firma, come illustrato 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 predefiniti URLs.

.NET

Quando si crea un prefirmato URL per un oggetto crittografato con un AWS KMS key, è necessario specificare in modo esplicito la versione 4 della firma, come illustrato nell'esempio seguente:

AWSConfigs.S3Config.UseSignatureVersion4 = true;

Per un esempio di codice, consulta Condivisione di oggetti con predefiniti URLs.