Impostazione e monitoraggio della crittografia predefinita per i bucket di directory - Amazon Simple Storage Service

Impostazione e monitoraggio della crittografia predefinita per i bucket di directory

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 è necessario un maggiore controllo sulle chiavi di crittografia, ad esempio per gestire la rotazione delle chiavi e le concessioni delle policy di accesso, è possibile scegliere di utilizzare la crittografia lato server con chiavi AWS Key Management Service (AWS KMS) (SSE-KMS).

Nota
  • Si consiglia di utilizzare la configurazione di crittografia predefinita del bucket e di non sovrascrivere la crittografia predefinita del bucket nelle richieste CreateSession o nelle richieste di oggetti PUT. I nuovi oggetti vengono quindi crittografati automaticamente con le impostazioni di crittografia desiderate. Per ulteriori informazioni sui comportamenti di sovrascrittura della crittografia nei bucket di directory, consulta Specifica della crittografia lato server con AWS KMS per il caricamento di nuovi oggetti.

  • Per crittografare i nuovi oggetti in un bucket di directory con SSE-KMS, è necessario specificare SSE-KMS come configurazione di crittografia predefinita del bucket di directory con una chiave KMS (in particolare, una chiave gestita dal cliente). Quindi, quando viene creata una sessione per le operazioni API dell'endpoint di zona, i nuovi oggetti vengono automaticamente crittografati e decrittografati con SSE-KMS e S3 Bucket Keys durante la sessione.

  • Quando si imposta la crittografia predefinita del bucket su SSE-KMS, le S3 Bucket Keys sono sempre abilitate per le operazioni GET e PUT in un bucket della directory e non possono essere disabilitate. Le chiavi dei bucket S3 non sono supportate quando si copiano oggetti con crittografia SSE-KMS da bucket per uso generico a bucket di directory, da bucket di directory a bucket per uso generico o tra bucket di directory, tramite CopyObject, UploadPartCopy, l'operazione Copy in Operazioni in batch o i processi import. In questo caso, Amazon S3 effettua una chiamata a AWS KMS ogni volta che viene effettuata una richiesta di copia per un oggetto crittografato da KMS. Per ulteriori informazioni su come le chiavi S3 Bucket riducono i costi di richiesta di AWS KMS, consulta Riduzione del costo di SSE-KMS con le chiavi bucket Amazon S3.

  • Quando si specifica una chiave gestita dal cliente AWS KMS per la crittografia nel bucket della directory, utilizzare solo l'ID chiave o l'ARN chiave. Il formato alias della chiave KMS non è supportato.

  • La crittografia lato server dual-layer con chiavi AWS KMS (DSSE-KMS) e la crittografia lato server con chiavi fornite dal cliente (SSE-C) non sono supportate per la crittografia predefinita nei bucket di directory.

Per ulteriori informazioni sulla configurazione della crittografia predefinita, consulta Configurazione della crittografia predefinita.

Per ulteriori informazioni sulle autorizzazioni richieste per la crittografia predefinita, consulta PutBucketEncryption nella Documentazione di riferimento delle API di Amazon Simple Storage Service.

È possibile configurare la crittografia predefinita di Amazon S3 per un bucket S3 utilizzando la console Amazon S3, gli SDK AWS, la REST API di Amazon S3 e AWS Command Line Interface (AWS CLI).

Per configurare la crittografia predefinita per un bucket Amazon S3
  1. Accedi alla Console di gestione AWS e apri la console Amazon S3 all’indirizzo https://console.aws.amazon.com/s3/.

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

  3. Nell'elenco Bucket scegli il nome del bucket desiderato.

  4. Scegliere la scheda Properties (Proprietà).

  5. In Impostazioni di crittografia lato server, i bucket della directory utilizzano la crittografia lato server con Chiavi gestite da Amazon S3 (SSE-S3).

  6. Scegli Save changes (Salva modifiche).

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. Per ulteriori informazioni sull'utilizzo della AWS CLI per configurare la crittografia predefinita, consulta put-bucket-encryption.

Esempio - Crittografia predefinita con SSE-S3

In questo esempio viene configurata la crittografia predefinita dei bucket con le chiavi gestite da Amazon S3. Per utilizzare il comando, sostituisci i segnaposto inseriti dall'utente con le tue informazioni.

aws s3api put-bucket-encryption --bucket bucket-base-name--zone-id--x-s3 --server-side-encryption-configuration '{ "Rules": [ { "ApplyServerSideEncryptionByDefault": { "SSEAlgorithm": "AES256" } } ] }'
Esempio - 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. Per utilizzare il comando, sostituisci i segnaposto inseriti dall'utente con le tue informazioni.

aws s3api put-bucket-encryption --bucket bucket-base-name--zone-id--x-s3 --server-side-encryption-configuration '{ "Rules": [ { "ApplyServerSideEncryptionByDefault": { "SSEAlgorithm": "aws:kms", "KMSMasterKeyID": "KMS-Key-ARN" }, "BucketKeyEnabled": true } ] }'

Utilizza l'operazione REST API PutBucketEncryption per impostare la crittografia predefinita con un tipo di crittografia lato server da utilizzare: SSE-S3 o SSE-KMS.

Per ulteriori informazioni, consulta PutBucketEncryption in Amazon Simple Storage Service API Reference (Guida di riferimento per l'API di Amazon Simple Storage Service).

Quando utilizzi gli SDK AWS puoi richiedere ad Amazon S3 di usare AWS KMS keys per la crittografia lato server. I seguenti esempi di SDK AWS per Java e .NET configurano la configurazione di crittografia predefinita per un bucket di directory con SSE-KMS e una S3 Bucket Key. Per informazioni sugli altri SDK, consulta Codice di esempio e librerie nel AWS Developer Center.

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.

Java

Con AWS SDK for Java 2.x, è possibile richiedere ad Amazon S3 di utilizzare un AWS KMS key utilizzando il metodo applyServerSideEncryptionByDefault per specificare la configurazione di crittografia predefinita del bucket della directory per la crittografia dei dati con SSE-KMS. Si crea una chiave KMS di crittografia simmetrica e la si specifica nella richiesta.

import software.amazon.awssdk.services.s3.S3Client; import software.amazon.awssdk.services.s3.model.PutBucketEncryptionRequest; import software.amazon.awssdk.services.s3.model.ServerSideEncryption; import software.amazon.awssdk.services.s3.model.ServerSideEncryptionByDefault; import software.amazon.awssdk.services.s3.model.ServerSideEncryptionConfiguration; import software.amazon.awssdk.services.s3.model.ServerSideEncryptionRule; public class Main { public static void main(String[] args) { S3Client s3 = S3Client.create(); String bucketName = "bucket-base-name--zoneid--x-s3"; String kmsKeyId = "your-kms-customer-managed-key-id"; // AWS managed KMS keys aren't supported. Only customer-managed keys are supported. ServerSideEncryptionByDefault serverSideEncryptionByDefault = ServerSideEncryptionByDefault.builder() .sseAlgorithm(ServerSideEncryption.AWS_KMS) .kmsMasterKeyID(kmsKeyId) .build(); // The bucketKeyEnabled field is enforced to be true. ServerSideEncryptionRule rule = ServerSideEncryptionRule.builder() .bucketKeyEnabled(true) .applyServerSideEncryptionByDefault(serverSideEncryptionByDefault) .build(); ServerSideEncryptionConfiguration serverSideEncryptionConfiguration = ServerSideEncryptionConfiguration.builder() .rules(rule) .build(); PutBucketEncryptionRequest putRequest = PutBucketEncryptionRequest.builder() .bucket(bucketName) .serverSideEncryptionConfiguration(serverSideEncryptionConfiguration) .build(); s3.putBucketEncryption(putRequest); } }

Per ulteriori informazioni sulla creazione di chiavi gestite dal cliente, consulta Programmazione dell'API (API)AWS KMS nella Guida per Developer di AWS Key Management Service.

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

Con AWS SDK per .NET, è possibile richiedere ad Amazon S3 di utilizzare un AWS KMS key utilizzando la proprietà ServerSideEncryptionByDefault per specificare la configurazione di crittografia predefinita del bucket della directory per la crittografia dei dati con SSE-KMS. Si crea una chiave di crittografia simmetrica gestita dal cliente e la si specifica nella richiesta.

// Set the bucket server side encryption to use AWSKMS with a customer-managed key id. // bucketName: Name of the directory bucket. "bucket-base-name--zonsid--x-s3" // kmsKeyId: The Id of the customer managed KMS Key. "your-kms-customer-managed-key-id" // Returns True if successful. public static async Task<bool> SetBucketServerSideEncryption(string bucketName, string kmsKeyId) { var serverSideEncryptionByDefault = new ServerSideEncryptionConfiguration { ServerSideEncryptionRules = new List<ServerSideEncryptionRule> { new ServerSideEncryptionRule { ServerSideEncryptionByDefault = new ServerSideEncryptionByDefault { ServerSideEncryptionAlgorithm = ServerSideEncryptionMethod.AWSKMS, ServerSideEncryptionKeyManagementServiceKeyId = kmsKeyId } } } }; try { var encryptionResponse =await _s3Client.PutBucketEncryptionAsync(new PutBucketEncryptionRequest { BucketName = bucketName, ServerSideEncryptionConfiguration = serverSideEncryptionByDefault, }); return encryptionResponse.HttpStatusCode == HttpStatusCode.OK; } catch (AmazonS3Exception ex) { Console.WriteLine(ex.ErrorCode == "AccessDenied" ? $"This account does not have permission to set encryption on {bucketName}, please try again." : $"Unable to set bucket encryption for bucket {bucketName}, {ex.Message}"); } return false; }

Per ulteriori informazioni sulla creazione di chiavi gestite dal cliente, consulta Programmazione dell'API (API)AWS KMS nella Guida per Developer di AWS Key Management Service.

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.

Monitoraggio della crittografia predefinita per i bucket di directory con AWS CloudTrail

È possibile tenere traccia delle richieste di configurazione della crittografia predefinita per i bucket di directory Amazon S3 utilizzando gli eventi AWS CloudTrail. I seguenti nomi di eventi API vengono utilizzati nei registri di CloudTrail:

  • PutBucketEncryption

  • GetBucketEncryption

  • DeleteBucketEncryption

Nota
  • EventBridge non è supportato nei bucket di directory.

  • La crittografia lato server dual-layer con chiavi AWS Key Management Service (AWS KMS) (DSSE-KMS) o la crittografia lato server con chiavi di crittografia fornite dal cliente (SSE-C) non sono supportate nei bucket di directory.

Per ulteriori informazioni sul monitoraggio della crittografia predefinita con AWS CloudTrail, consulta Monitoraggio della crittografia predefinita con AWS CloudTrail e Amazon EventBridge.