Definir e monitorar a criptografia padrão para buckets de diretório - Amazon Simple Storage Service

Definir e monitorar a criptografia padrão para buckets de diretório

Os buckets do Amazon S3 têm a criptografia configurada por padrão, e os novos objetos são automaticamente criptografados usando criptografia do lado do servidor, com chaves gerenciadas do Amazon S3 (SSE-S3). Essa criptografia se aplica a todos os novos objetos em seus buckets do Amazon S3 e não tem nenhum custo para você.

Se você precisar de maior controle sobre suas chaves de criptografia, como gerenciar a alternância de chaves e as concessões de política de acesso, poderá optar por usar a criptografia do lado do servidor com chaves do AWS Key Management Service (AWS KMS) (SSE-KMS).

nota
  • Recomendamos que a criptografia padrão do bucket use a configuração desejada e que você não a substitua em suas solicitações CreateSession ou de objetos PUT. Desse modo, os novos objetos são criptografados automaticamente com as configurações de criptografia desejadas. Para ter mais informações sobre os comportamentos de substituição de criptografia em buckets de diretório, consulte Specifying server-side encryption with AWS KMS for new object uploads.

  • Para criptografar novos objetos em um bucket de diretório com SSE-KMS, é necessário especificar SSE-KMS como a configuração de criptografia padrão do bucket de diretório com uma chave do KMS (especificamente, uma chave gerenciada pelo cliente). Dessa forma, quando uma sessão é criada para operações de API de endpoint de zona, novos objetos são automaticamente criptografados e descriptografados com chaves de SSE-KMS e de bucket do S3 durante a sessão.

  • Quando você define a criptografia de bucket padrão como SSE-KMS, as chaves de bucket do S3 permanecem habilitadas para operações GET e PUT em um bucket de diretório e não podem ser desabilitadas. Não são aceitas chaves de bucket do S3 quando você copia objetos criptografados por SSE-KMS de buckets de uso geral para buckets de diretório, de buckets de diretório para buckets de uso geral ou entre buckets de diretório, por meio de CopyObject, de UploadPartCopy, da operação Copy em Operações em Lote ou de trabalhos de import. Nesse caso, o Amazon S3 faz uma chamada para o AWS KMS sempre que uma solicitação de cópia é feita para um objeto criptografado pelo KMS. Para ter mais informações sobre como as chaves de bucket do S3 reduzem os custos de solicitação do AWS KMS, consulte Redução do custo do SSE-KMS com chaves de bucket do Amazon S3.

  • Ao especificar uma chave do AWS KMS gerenciada pelo cliente para criptografia no bucket de diretório, use somente o ID ou o ARN da chave. O formato de alias da chave do KMS não é aceito.

  • A criptografia de camada dupla do lado do servidor com chaves do AWS KMS (DSSE-KMS) e a criptografia do lado do servidor com chaves fornecidas pelo cliente (SSE-C) não são compatíveis com a criptografia padrão em buckets de diretório.

Para ter mais informações sobre como configurar a criptografia padrão, consulte Configurar a criptografia padrão.

Para ter mais informações sobre permissões necessárias para criptografia padrão, consulte PutBucketEncryption na Referência da API do Amazon Simple Storage Service.

Você pode configurar a criptografia padrão do Amazon S3 para um bucket do S3 usando o console do Amazon S3, os AWS SDKs, a API REST do Amazon S3 e a AWS Command Line Interface (AWS CLI).

Como configurar a criptografia padrão em um bucket do Amazon S3
  1. Faça login no AWS Management Console e abra o console do Amazon S3 em https://console.aws.amazon.com/s3/.

  2. No painel de navegação à esquerda, escolha Buckets.

  3. Na lista de Buckets, escolha o nome do bucket desejado.

  4. Escolha a guia Properties (Propriedades).

  5. Em Configurações de criptografia no lado do servidor, os buckets de diretório usam a criptografia do lado do servidor com chaves gerenciadas pelo Amazon S3 (SSE-S3).

  6. Selecione Save changes.

Esses exemplos mostram como configurar a criptografia padrão usando SSE-S3 ou usando a SSE-KMS com uma chave de bucket do S3.

Para obter mais informações sobre criptografia padrão, consulte Definir o comportamento padrão da criptografia para os buckets do Amazon S3. Para obter mais informações sobre o uso da AWS CLI para configurar a criptografia padrão, consulte put-bucket-encryption.

exemplo – Criptografia padrão com SSE-S3

Esse exemplo configura a criptografia de bucket padrão com chaves gerenciadas pelo Amazon S3. Para usar o comando, substitua os espaços reservados para entrada do usuário por suas próprias informações.

aws s3api put-bucket-encryption --bucket bucket-base-name--azid--x-s3 --server-side-encryption-configuration '{ "Rules": [ { "ApplyServerSideEncryptionByDefault": { "SSEAlgorithm": "AES256" } } ] }'
exemplo – Criptografia padrão com SSE-KMS usando uma chave de bucket do S3

Esse exemplo configura a criptografia de bucket padrão com o SSE-KMS usando uma chave de bucket do S3. Para usar o comando, substitua os espaços reservados para entrada do usuário por suas próprias informações.

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

Use a operação PutBucketEncryption da API REST para definir a criptografia padrão com o tipo de criptografia do lado do servidor a ser utilizado, ou seja, SSE-S3 ou SSE-KMS.

Para obter mais informações, consulte PutBucketEncryption na Referência da API do Amazon Simple Storage Service.

Ao usar AWS SDKs, é possível solicitar que o Amazon S3 use AWS KMS keys para criptografia do lado do servidor. Os exemplos de SDKs da AWS para Java e .NET a seguir definem a configuração de criptografia padrão para um bucket de diretório com SSE-KMS e uma chave de bucket do S3. Para obter informações sobre outros SDKs, consulte Código de exemplo e bibliotecas no Centro do desenvolvedor da AWS.

Importante

Ao usar uma AWS KMS key para criptografia no lado do servidor no Amazon S3, você deve escolher uma chave de criptografia do KMS simétrica. O Amazon S3 só é compatível com chaves do KMS de criptografia simétrica. Para obter mais informações sobre essas chaves, consulte Chaves do KMS de criptografia simétrica no Guia do desenvolvedor do AWS Key Management Service.

Java

Com o AWS SDK for Java 2.x, é possível solicitar que o Amazon S3 use uma AWS KMS key utilizando o método applyServerSideEncryptionByDefault para especificar a configuração de criptografia padrão do bucket de diretório para criptografia de dados com a SSE-KMS. É possível criar uma chave de criptografia simétrica do KMS e especificar isso na solicitação.

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--azid--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); } }

Para obter mais informações sobre como criar chaves gerenciadas pelo cliente, consulte Programação da API do AWS KMS no Guia do desenvolvedor do AWS Key Management Service.

Para ver exemplos de código funcionais de upload de um objeto, consulte os seguintes tópicos. Para usar esses exemplos, é necessário atualizar os exemplos de código e fornecer informações de criptografia, conforme exibido no fragmento de código anterior.

.NET

Com o AWS SDK for .NET, é possível solicitar que o Amazon S3 use uma AWS KMS key utilizando o método ServerSideEncryptionByDefault para especificar a configuração de criptografia padrão do bucket de diretório para criptografia de dados com a SSE-KMS. Você deve criar uma chave de criptografia simétrica gerenciada pelo cliente e especificar isso na solicitação.

// Set the bucket server side encryption to use AWSKMS with a customer-managed key id. // bucketName: Name of the directory bucket. "bucket-base-name--azid--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; }

Para obter mais informações sobre como criar chaves gerenciadas pelo cliente, consulte Programação da API do AWS KMS no Guia do desenvolvedor do AWS Key Management Service.

Para ver exemplos de código funcionais de upload de um objeto, consulte os seguintes tópicos. Para usar esses exemplos, é necessário atualizar os exemplos de código e fornecer informações de criptografia, conforme exibido no fragmento de código anterior.

Monitorar a criptografia padrão para buckets de diretório com o AWS CloudTrail

É possível acompanhar solicitações de configuração de criptografia padrão para buckets de diretório do Amazon S3 usando eventos do AWS CloudTrail. Os seguintes nomes de eventos de API são usados nos logs do CloudTrail:

  • PutBucketEncryption

  • GetBucketEncryption

  • DeleteBucketEncryption

nota
  • Não é possível usar o EventBridge em buckets de diretório.

  • A criptografia de camada dupla do lado do servidor com chaves do AWS Key Management Service (AWS KMS) (DSSE-KMS) ou a criptografia do lado do servidor com chaves fornecidas pelo cliente (SSE-C) não são aceitas em buckets de diretório.

Para ter mais informações sobre como monitorar a criptografia padrão com o AWS CloudTrail, consulte Monitorar a criptografia padrão com o AWS CloudTrail e o Amazon EventBridge.