Configurar uma chave de bucket do S3 no nível de objeto - Amazon Simple Storage Service

Configurar uma chave de bucket do S3 no nível de objeto

Ao executar uma operação PUT ou COPY usando a API REST, os AWS SDKs ou a AWS CLI, você pode habilitar ou desabilitar uma chave de bucket do S3 para o objeto adicionando o cabeçalho de solicitação x-amz-server-side-encryption-bucket-key-enabled com um valor true ou false. As chaves de bucket do S3 reduzem o custo da criptografia do lado do servidor usando o AWS Key Management Service (AWS KMS) (SSE-KMS), diminuindo assim o tráfego de solicitações do Amazon S3 para o AWS KMS. Para obter mais informações, consulte Redução do custo do SSE-KMS com chaves de bucket do Amazon S3.

Quando você configura uma chave de bucket do S3 para um objeto usando uma operação PUT ou COPY, o Amazon S3 atualiza somente as configurações desse objeto. As configurações da chave de bucket S3 para o bucket de destino não são alteradas. Se você enviar uma solicitação PUT ou COPY para um objeto criptografado pelo KMS em um bucket com as chaves de bucket do S3 habilitadas, suas operações no objeto vão usar automaticamente as chaves de bucket do S3, a menos que você desabilite as chaves no cabeçalho da solicitação. Se você não especificar uma chave de bucket do S3 para seu objeto, o Amazon S3 aplicará as configurações da chave de bucket do S3 para o bucket de destino ao objeto.

Pré-requisito:

Antes de configurar seu objeto para usar uma chave de bucket do S3, revise Alterações na observação antes de habilitar uma chave de bucket do S3.

Amazon S3 Batch Operations

Para criptografar objetos existentes do Amazon S3 com uma única solicitação, você pode usar o Amazon S3 Batch Operations. Você fornece uma lista de objetos às operações em lote do S3 que, por sua vez, chamam a respectiva API para realizar a operação especificada.

É possível usar a operação Copy do S3 Batch Operations para copiar objetos não criptografados existentes e gravá-los de volta no mesmo bucket que os objetos criptografados. Um único trabalho do Batch Operations pode realizar a operação especificada em bilhões de objetos. Para obter mais informações, consulte Executar operações em lote de grande escala em objetos do Amazon S3 e Criptografia de objetos existentes com o Amazon S3 Batch Operations.

Uso da API REST

Ao usar a SSE-KMS, você pode habilitar uma chave de bucket do S3 para um objeto usando as seguintes operações de API:

  • PutObject — Ao fazer upload de um objeto, você pode especificar o cabeçalho da x-amz-server-side-encryption-bucket-key-enabled solicitação para ativar ou desativar uma chave de bucket do S3 no nível do objeto.

  • CopyObject (Copiar objeto) — Quando você copia um objeto e configura o SSE-KMS, você pode especificar o cabeçalho da solicitação x-amz-server-side-encryption-bucket-key-enabled para ativar ou desativar uma chave de bucket do S3 para seu objeto.

  • POST Object: quando você usa uma operação POST para fazer upload de um objeto e configurar a SSE-KMS, você pode usar o campo do formulário x-amz-server-side-encryption-bucket-key-enabled para ativar ou desativar uma chave de bucket S3 para o objeto.

  • CreateMultipartUpload: ao fazer upload de objetos grandes usando a operação de API de CreateMultipartUpload e configurar a SSE-KMS, você pode usar o cabeçalho de solicitação x-amz-server-side-encryption-bucket-key-enabled para habilitar ou desabilitar uma chave de bucket do S3 para o objeto.

Para habilitar uma chave de bucket do S3 no nível do objeto, inclua o cabeçalho da solicitação x-amz-server-side-encryption-bucket-key-enabled. Para obter mais informações sobre o SSE-KMS e a API REST, consulte Uso da API REST.

Usar o AWSSDK Java (PutObject)

Você pode usar o exemplo a seguir para configurar uma chave de bucket do S3 no nível de objeto usando o AWS SDK for Java.

Java
AmazonS3 s3client = AmazonS3ClientBuilder.standard()     .withRegion(Regions.DEFAULT_REGION)     .build(); String bucketName = "DOC-EXAMPLE-BUCKET1"; String keyName = "key name for object"; String contents = "file contents"; PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, keyName, contents)     .withBucketKeyEnabled(true);      s3client.putObject(putObjectRequest);

Como usar a AWS CLI (PutObject)

Você pode usar o seguinte exemplo da AWS CLI para configurar uma chave de bucket do S3 no nível de objeto como parte de uma solicitação PutObject.

aws s3api put-object --bucket DOC-EXAMPLE-BUCKET --key object key name --server-side-encryption aws:kms --bucket-key-enabled --body filepath