Especificar criptografia de camada dupla do lado do servidor com chaves do AWS KMS (DSSE-KMS) - Amazon Simple Storage Service

Especificar criptografia de camada dupla do lado do servidor com chaves do AWS KMS (DSSE-KMS)

É possível aplicar criptografia durante o upload de um novo objeto ou ao copiar um objeto existente.

Você pode especificar a DSSE-KMS usando o console do Amazon S3, a API REST do Amazon S3 e a AWS Command Line Interface (AWS CLI). Para obter mais informações, consulte os tópicos a seguir.

nota

Você pode usar uma AWS KMS keys de várias regiões no Amazon S3. No entanto, o Amazon S3 trata no momento as chaves de várias regiões como se fossem chaves de região única e não usa os recursos de várias regiões da chave. Consulte mais informações em Using multi-Region keys no Guia do desenvolvedor do AWS Key Management Service.

nota

Se quiser usar uma chave do KMS que seja de propriedade de outra conta, você deverá ter permissão para usar a chave. Para obter mais informações sobre permissões entre contas para chaves do KMS, consulte Criar chaves do KMS que outras contas podem usar no Guia do desenvolvedor do AWS Key Management Service.

Esta seção descreve como definir ou alterar o tipo de criptografia de um objeto para usar criptografia de camada dupla do lado do servidor com chaves do AWS Key Management Service (AWS KMS) (DSSE-KMS) por meio do console do Amazon S3.

nota
  • Você pode alterar a criptografia de um objeto se ele tiver menos de 5 GB. Se o objeto tiver mais de 5 GB, você deve usar a AWS CLI ou SDKs da AWS para alterar a criptografia de um objeto.

  • Para obter uma lista das permissões adicionais necessárias para alterar a criptografia de um objeto, consulte Permissões obrigatórias para operações de API do Amazon S3. Para ver exemplos das políticas que concedem essas permissões, consulte Exemplos de políticas baseadas em identidade para o Amazon S3.

  • Se você alterar a criptografia de um objeto, um novo objeto será criado para substituir o antigo. Se o versionamento do S3 estiver habilitado, uma nova versão do objeto será criada e o objeto existente se tornará uma versão mais antiga. O perfil que altera a propriedade também se torna o proprietário do novo objeto (ou versão do objeto).

Como adicionar ou alterar a criptografia de um objeto
  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, escolha Buckets e selecione a guia Buckets de uso geral. Acesse o bucket ou pasta do Amazon S3 que contém os objetos que você quer alterar.

  3. Marque a caixa de seleção referente aos objetos que você quer alterar.

  4. No menu Ações, escolha Editar criptografia no lado do servidor na lista de opções exibida.

  5. Role até a seção Criptografia do lado do servidor.

  6. Em Configurações de criptografia, escolha Usar configurações de bucket para criptografia padrão ou Substituir configurações de bucket para criptografia padrão.

  7. Se você escolher Substituir configurações do bucket para criptografia padrão, defina as configurações de criptografia a seguir.

    1. Em Tipo de criptografia, escolha Criptografia de camada dupla do lado do servidor com chaves do AWS Key Management Service (DSSE-KMS).

    2. Em Chave do AWS KMS, realize um dos seguintes procedimentos para escolher sua chave do KMS:

      • Para escolher entre uma lista de chaves do KMS disponíveis, selecione Escolher de sua AWS KMS keys e escolha a chave do KMS na lista de chaves disponíveis.

        As chaves Chave gerenciada pela AWS (aws/s3) e as chaves gerenciadas pelo cliente são exibidas nessa lista. Para ter mais informações sobre chaves gerenciadas pelo cliente, consulte Chaves de clientes e chaves da AWS no Guia do desenvolvedor do AWS Key Management Service.

      • Para inserir o ARN da chave do KMS, selecione Inserir ARN da AWS KMS key e insira o ARN da chave do KMS no campo exibido.

      • Para criar uma chave gerenciada pelo cliente no console do AWS KMS, selecione Criar uma chave do KMS.

        Para ter mais informações sobre como criar uma AWS KMS key, consulte Criação de chaves no Guia do desenvolvedor do AWS Key Management Service.

      Importante

      Você só pode usar chaves do KMS disponíveis na mesma Região da AWS que o bucket. O console do Amazon S3 lista somente as primeiras 100 chaves do KMS na mesma região que o bucket. Para usar uma chave do KMS que não esteja listada, você deve inserir o ARN da chave do KMS. Se quiser usar uma chave do KMS que seja de propriedade de outra conta, primeiro você deverá ter permissão para usar a chave e, depois, inserir o ARN da chave do KMS.

      O Amazon S3 só é compatível com chaves do KMS de criptografia simétrica, e não com chaves assimétricas do KMS. Para ter mais informações, consulte Identificar chaves do KMS assimétricas no Guia do desenvolvedor do AWS Key Management Service.

  8. Para Chave do bucket, escolha Desabilitar. As chaves de bucket do S3 não comportam DSSE-KMS.

  9. Em Configurações adicionais de cópia, escolha se você quer Copiar configurações de origem, Não especificar configurações ou Especificar configurações. Copiar configurações de origem é a opção padrão. Se você quiser copiar o objeto somente sem os atributos das configurações de origem, escolha Não especificar configurações. Escolha Especificar configurações para especificar configurações referentes a classes de armazenamento, ACLs, tags de objeto, metadados, criptografia do lado do servidor e somas de verificação adicionais.

  10. Selecione Save changes.

nota

Essa ação aplica criptografia a todos os objetos especificados. Ao criptografar pastas, aguarde a conclusão da operação de salvamento antes de adicionar novos objetos à pasta.

Quando você cria um objeto, ou seja, quando você carrega um novo objeto ou copia um objeto, é possível especificar a utilização de criptografia de camada dupla do lado do servidor com AWS KMS keys (DSSE-KMS) para criptografar os dados. Para fazer isso, adicione o cabeçalho x-amz-server-side-encryption à solicitação. Defina o valor do cabeçalho como o algoritmo de criptografia aws:kms:dsse. O Amazon S3 confirma que o objeto foi armazenado com a criptografia DSSE-S3 retornando o cabeçalho de resposta x-amz-server-side-encryption.

Se você especificar o cabeçalho x-amz-server-side-encryption com um valor de aws:kms:dsse, também poderá usar os seguintes cabeçalhos de solicitação:

  • x-amz-server-side-encryption-aws-kms-key-id: SSEKMSKeyId

  • x-amz-server-side-encryption-context: SSEKMSEncryptionContext

Operações da API REST do Amazon S3 compatíveis com DSSE-KMS

As seguintes operações da API REST aceitam os cabeçalhos de solicitação x-amz-server-side-encryption, x-amz-server-side-encryption-aws-kms-key-id, e x-amz-server-side-encryption-context.

  • PutObject: ao carregar dados usando a operação de APIPUT, é possível especificar esses cabeçalhos de solicitação.

  • CopyObject: quando você copia um objeto, há um objeto de origem e um objeto de destino. Ao transmitir cabeçalhos de DSSE-KMS com a operação CopyObject, eles são aplicados somente ao objeto de destino. Ao copiar um objeto existente, independentemente de o objeto de origem ser criptografado ou não, o objeto de destino não é criptografado, a menos que você solicite explicitamente a criptografia do lado do servidor.

  • Objeto POST: ao usar uma operação POST para fazer upload de um objeto, em vez dos cabeçalhos de solicitação, você fornece as mesmas informações nos campos de formulário.

  • CreateMultipartUpload: ao carregar objetos grandes usando a operação de API de carregamento fracionado, você pode especificar esses cabeçalhos na solicitação CreateMultipartUpload.

Os cabeçalhos de resposta das operações da API REST a seguir retornam o cabeçalho x-amz-server-side-encryption quando um objeto é armazenado com criptografia do lado do servidor.

Importante
  • Todas as solicitações GET e PUT para um objeto protegido por AWS KMS falharão se elas não forem feitas usando Secure Sockets Layer (SSL), Transport Layer Security (TLS) ou Signature versão 4.

  • Se o objeto usar DSSE-KMS, os cabeçalhos de solicitação de criptografia não deverão ser enviados para solicitações GET e HEAD; do contrário, será exibido um erro HTTP 400 (BadRequest).

Contexto de criptografia (x-amz-server-side-encryption-context)

Se você especificar x-amz-server-side-encryption:aws:kms:dsse, a API do Amazon S3 oferece suporte a um contexto de criptografia com o cabeçalho x-amz-server-side-encryption-context. Um contexto de criptografia é um conjunto de pares chave-valor que contém informações contextuais adicionais sobre os dados.

O Amazon S3 usa automaticamente o nome do recurso da Amazon (ARN) do objeto como o par de contexto de criptografia, por exemplo arn:aws:s3:::object_ARN.

Você também pode fornecer um par adicional de contexto de criptografia usando o cabeçalho x-amz-server-side-encryption-context. No entanto, como o contexto de criptografia não é criptografado, ele não deve incluir informações sigilosas. O Amazon S3 armazena esse par de chaves adicional junto com o contexto de criptografia padrão.

Para obter informações sobre o contexto de criptografia no Amazon S3, consulte Contexto de criptografia. Para obter informações gerais sobre o contexto de criptografia, consulte Conceitos do AWS Key Management Service: contexto de criptografia no Guia do desenvolvedor do AWS Key Management Service.

ID da chave do AWS KMS (x-amz-server-side-encryption-aws-kms-key-id)

Você pode usar o cabeçalho x-amz-server-side-encryption-aws-kms-key-id para especificar o ID da chave gerenciada pelo cliente usada para proteger os dados. Se você especificar o cabeçalho x-amz-server-side-encryption:aws:kms:dsse, mas não fornecer o cabeçalho x-amz-server-side-encryption-aws-kms-key-id, o Amazon S3 usará a Chave gerenciada pela AWS (aws/s3) para proteger os dados. Se desejar usar uma chave gerenciada pelo cliente, você deve fornecer o cabeçalho x-amz-server-side-encryption-aws-kms-key-id da chave gerenciada pelo cliente.

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.

Ao carregar um novo objeto ou copiar um objeto, é possível especificar a utilização de criptografia de DSSE-KMS para criptografar os dados. Para isso, adicione o parâmetro --server-side-encryption aws:kms:dsse à solicitação. Use o parâmetro --ssekms-key-id example-key-id para adicionar a chave do AWS KMS gerenciada pelo cliente que você criou. Se você especificar --server-side-encryption aws:kms:dsse, mas não fornecer um ID de chave do AWS KMS, o Amazon S3 usará a chave gerenciada pela AWS (aws/s3).

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

Você pode criptografar um objeto não criptografado para usar a DSSE-KMS copiando o objeto de volta no lugar.

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:dsse --sse-kms-key-id example-key-id --body filepath