Especificando criptografia no lado do servidor com o AWS KMS (SSE-KMS)
Todos os buckets do Amazon S3 têm criptografia configurada por padrão e todos os novos objetos que são carregados em um bucket do S3 são automaticamente criptografados em repouso. A criptografia do lado do servidor com chaves gerenciadas pelo Amazon S3 (SSE-S3) é a configuração de criptografia padrão para todos os buckets no Amazon S3. Para usar um tipo diferente de criptografia, você pode especificar a criptografia do lado do servidor a ser usada nas solicitações PUT
do S3 ou definir a configuração de criptografia padrão no bucket de destino.
Se quiser especificar um tipo de criptografia diferente nas solicitações PUT
, você pode usar a criptografia do lado do servidor com chaves do AWS Key Management Service (AWS KMS) (SSE-KMS), criptografia de camada dupla do lado do servidor com chaves do AWS KMS (DSSE-KMS) ou criptografia do lado do servidor com chaves fornecidas pelo cliente (SSE-C). Se quiser definir uma configuração de criptografia padrão diferente no bucket de destino, você pode usar SSE-KMS ou DSSE-KMS.
É possível aplicar criptografia durante o upload de um novo objeto ou ao copiar um objeto existente.
Você pode especificar a SSE-KMS usando o console do Amazon S3, operações da API REST, AWS SDKs 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.
Este tópico descreve como definir ou alterar o tipo de criptografia de um objeto para usar criptografia do lado do servidor com chaves do AWS Key Management Service (AWS KMS) (SSE-KMS) usando o 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
Faça login no AWS Management Console e abra o console do Amazon S3 em https://console.aws.amazon.com/s3/
. -
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.
-
Marque a caixa de seleção referente aos objetos que você quer alterar.
-
No menu Ações, escolha Editar criptografia no lado do servidor na lista de opções exibida.
Role até a seção Criptografia do lado do servidor.
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.
Importante
Se você usar a opção SSE-KMS em sua configuração de criptografia padrão, estará sujeito às cotas de solicitações por segundo (RPS) do AWS KMS. Para obter mais informações sobre as cotas do AWS KMS e como solicitar um aumento de cota, consulte Cotas no Guia do desenvolvedor do AWS Key Management Service.
-
Se você escolher Substituir configurações do bucket para criptografia padrão, defina as configurações de criptografia a seguir.
-
Em Tipo de criptografia, escolha Criptografia do lado do servidor com chaves do AWS Key Management Service (SSE-KMS).
-
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 simétricas e assimétricas no Guia do desenvolvedor do AWS Key Management Service.
-
-
-
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.
-
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ê faz upload de um novo objeto ou copia um objeto existente, é possível especificar a utilização de criptografia do lado do servidor com AWS KMS keys (SSE-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
. O Amazon S3 confirma que o objeto foi armazenado usando SSE-KMS 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
, também poderá usar os seguintes cabeçalhos de solicitação:
-
x-amz-server-side-encryption-aws-kms-key-id
-
x-amz-server-side-encryption-context
-
x-amz-server-side-encryption-bucket-key-enabled
Tópicos
Operações da API REST do Amazon S3 compatíveis com SSE-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 API
PUT
, é 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 SSE-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. -
POST Object: 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 fazer upload de objetos grandes usando a operação de API de upload multiparte, você pode especificar esses cabeçalhos. Esses cabeçalhos são especificados na solicitação
CreateMultipartUpload
.
Os cabeçalhos de resposta das operações de API REST a seguir retornam o cabeçalho x-amz-server-side-encryption
quando um objeto é armazenado usando criptografia de servidor.
Importante
-
Todas as solicitações
GET
ePUT
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 Version 4. -
Se o objeto usar SSE-KMS, os cabeçalhos de solicitação de criptografia não deverão ser enviados para solicitações
GET
e solicitaçõesHEAD
,ou um erroHTTP 400 BadRequest
será exibido.
Contexto de criptografia (x-amz-server-side-encryption-context
)
Se você especificar x-amz-server-side-encryption:aws:kms
, 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 ou bucket como o par de contexto de criptografia. Se você usar o SSE-KMS sem habilitar uma chave de bucket do S3, você usará o ARN de objeto como seu contexto de criptografia, por exemplo, arn:aws:s3:::
. No entanto, se você usar o SSE-KMS e habilitar uma chave de bucket do S3, use o ARN do bucket para o contexto de criptografia, por exemplo, object_ARN
arn:aws:s3:::
. bucket_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
, 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.
Chaves de bucket do S3 (x-amz-server-side-encryption-aws-bucket-key-enabled
)
Você pode usar o cabeçalho da solicitação x-amz-server-side-encryption-aws-bucket-key-enabled
para habilitar ou desabilitar uma chave de bucket do S3 ao nível do objeto. As chaves de bucket do S3 podem reduzir os custos de solicitação do AWS KMS diminuindo o tráfego de solicitação do Amazon S3 para o AWS KMS. Para ter mais informações, consulte Redução do custo do SSE-KMS com chaves de bucket do Amazon S3.
Se você especificar o cabeçalho x-amz-server-side-encryption:aws:kms
, mas não fornecer o cabeçalho x-amz-server-side-encryption-aws-bucket-key-enabled
, o objeto usará as configurações da chave de bucket do S3 para o bucket de destino para criptografar seu objeto. Para ter mais informações, consulte Configurar uma chave de bucket do S3 no nível de objeto .
Para usar os exemplos de comandos da AWS CLI a seguir, substitua os
por suas próprias informações.user input
placeholders
Ao fazer upload de um novo objeto ou copiar um objeto existente, ou seja, você pode especificar a utilização de criptografia do lado do servidor com chaves do AWS KMS para criptografar seus dados. Para fazer isso, adicione o cabeçalho --server-side-encryption aws:kms
à solicitação. Use --ssekms-key-id
para adicionar a chave do AWS KMS gerenciada pelo cliente que você criou. Se você especificar example-key-id
--server-side-encryption
aws:kms
, mas não fornecer um ID de chave do AWS KMS, o Amazon S3 usará uma chave gerenciada pela AWS.
aws s3api put-object --bucket
amzn-s3-demo-bucket
--keyexample-object-key
--server-side-encryption aws:kms --ssekms-key-idexample-key-id
--bodyfilepath
Além disso, você pode ativar ou desativar as chaves de bucket do Amazon S3 nas operações PUT ou COPY adicionando --bucket-key-enabled
ou --no-bucket-key-enabled
. As chaves de bucket do Amazon S3 podem reduzir os custos de solicitação do AWS KMS diminuindo o tráfego de solicitação do Amazon S3 para o AWS KMS. Para obter mais informações, consulte Reduzir o custo da SSE-KMS usando chaves de bucket do Amazon S3.
aws s3api put-object --bucket
amzn-s3-demo-bucket
--keyexample-object-key
--server-side-encryption aws:kms --bucket-key-enabled --bodyfilepath
Você pode criptografar um objeto não criptografado para usar a SSE-KMS copiando o objeto de volta no lugar.
aws s3api copy-object --bucket
amzn-s3-demo-bucket
--keyexample-object-key
--bodyfilepath
--bucketamzn-s3-demo-bucket
--keyexample-object-key
--sse aws:kms --sse-kms-key-idexample-key-id
--bodyfilepath
Ao usar AWS SDKs, é possível solicitar que o Amazon S3 use AWS KMS keys para criptografia do lado do servidor. Os exemplos a seguir mostram como usar a SSE-KMS com os AWS SDKs para Java e .NET. Para obter informações sobre outros SDKs, consulte Código de exemplo e bibliotecas
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.
Operação do CopyObject
Ao copiar objetos, você adiciona as mesmas propriedades de solicitação (ServerSideEncryptionMethod
e ServerSideEncryptionKeyManagementServiceKeyId
) para solicitar ao Amazon S3 que utilize uma AWS KMS key. Para obter mais informações sobre cópia de objetos, consulte Copiar, mover e renomear objetos.