Especificando criptografia no lado do servidor com o AWS KMS (SSE-KMS)
Importante
O Amazon S3 agora aplica criptografia do lado do servidor com chaves gerenciadas do Amazon S3 (SSE-S3) como nível básico de criptografia para cada bucket no Amazon S3. Desde 5 de janeiro de 2023, todos os novos uploads de objetos para o Amazon S3 são automaticamente criptografados sem custo adicional e sem impacto na performance. O status de criptografia automática para a configuração de criptografia padrão do bucket do S3 e para novos uploads de objetos está disponível em logs do AWS CloudTrail, no Inventário do S3, na Lente de Armazenamento do S3, no console do Amazon S3 e como cabeçalho adicional de resposta da API do Amazon S3 na AWS Command Line Interface e em AWS SDKs. Para obter mais informações, consulte Perguntas frequentes sobre criptografia padrão.
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. Para obter mais informações, consulte Usar chaves de várias regiões no Guia do desenvolvedor doAWS 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
-
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).
-
Para alterar o tipo de criptografia de um objeto que tem etiquetas definidas pelo usuário, você precisa ter a permissão
s3:GetObjectTagging
. Para alterar o tipo de criptografia de um objeto que não tem etiquetas definidas pelo usuário, mas que tem mais de 16 MB, você também precisa ter a permissãos3:GetObjectTagging
.Se a política do bucket de destino negar a ação
s3:GetObjectTagging
, o tipo de criptografia do objeto será atualizado, mas as etiquetas definidas pelo usuário serão removidas do objeto e você receberá um erro.
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 à esquerda, escolha Buckets.
-
Na lista Buckets, escolha o nome do bucket que contém o objeto.
-
Na lista Name (Nome), escolha o nome do objeto ao qual você deseja adicionar ou no qual deseja alterar a criptografia.
A página de detalhes do objeto é exibida com várias seções que exibem as propriedades do objeto.
-
Escolha a guia Properties (Propriedades).
-
Role para baixo até a seção Configurações da criptografia do lado do servidor e escolha Editar.
A página Edit server-side encryption (Editar criptografia do lado do servidor) é aberta.
-
Em Criptografia do lado do servidor, em Configurações de criptografia, escolha Substituir configurações padrão do bucket de criptografia.
-
Em Tipo de criptografia, escolha Criptografia do lado do servidor com chaves do AWS Key Management Service (SSE-KMS).
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.
-
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.
-
-
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 obter 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 obter 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
--key
amzn-s3-demo-bucket
example-object-key
--server-side-encryption aws:kms --ssekms-key-idexample-key-id
--ssekms-encryption-contextexample-encryption-context
--bodyfilepath
Você pode habilitar ou desabilitar as chaves de bucket do S3 nas operações put-object
ou copy-object
adicionando --bucket-key-enabled
ou --no-bucket-key-enabled
. 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 obter mais informações, consulte Redução do custo do SSE-KMS com chaves de bucket do Amazon S3.
aws s3api put-object --bucket
--key
amzn-s3-demo-bucket
example-object-key
--server-side-encryption aws:kms --bucket-key-enabled --bodyfilepath
Você pode copiar um objeto de um bucket de origem para um novo bucket e especificar a criptografia SSE-KMS.
aws s3api copy-object --copy-source
/
amzn-s3-demo-bucket
example-object-key
--bucket--key
amzn-s3-demo-bucket2
example-object-key
--server-side-encryption aws:kms --sse-kms-key-idexample-key-id
--ssekms-encryption-contextexample-encryption-context
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.