

# Usar a criptografia do lado do servidor com chaves do AWS KMS (SSE-KMS) em buckets de diretório
<a name="s3-express-UsingKMSEncryption"></a>

 Os controles de segurança do AWS KMS podem ajudá-lo a satisfazer os requisitos de conformidade relacionados à criptografia. É possível optar por configurar buckets de diretório para usar a criptografia do lado do servidor com chaves do AWS Key Management Service (AWS KMS) (SSE-KMS) e usar essas chaves do KMS para proteger os dados em buckets de diretório do Amazon S3. Para obter mais informações sobre SSE-KMS, consulte [Usar criptografia do lado do servidor com o AWS KMS (SSE-KMS)](UsingKMSEncryption.md).

**Permissões**  
Para fazer upload ou baixar um objeto criptografado com uma AWS KMS key de ou para o Amazon S3, você precisa das permissões `kms:GenerateDataKey` e `kms:Decrypt` na chave. Para ter mais informações, consulte [Permitir que os usuários da chave usem uma chave do KMS para operações criptográficas](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-users-crypto) no *Guia do desenvolvedor do AWS Key Management Service*. Para obter informações sobre permissões do AWS KMS necessárias para uploads de várias partes, consulte [API de multipart upload e permissões](mpuoverview.md#mpuAndPermissions).

Para ter mais informações sobre chaves do KMS, consulte [Especificação de criptografia no lado do servidor com o AWS KMS (SSE-KMS)](specifying-kms-encryption.md).

**Topics**
+ [AWS KMS keys](#s3-express-aws-managed-customer-managed-keys)
+ [Usar SSE-KMS para operações entre contas](#s3-express-bucket-encryption-update-bucket-policy)
+ [Amazon S3 Bucket Keys](#s3-express-sse-kms-bucket-keys)
+ [Como exigir SSE-KMS](#s3-express-require-sse-kms)
+ [Contexto de criptografia](#s3-express-encryption-context)
+ [Enviar solicitações para objetos criptografados do AWS KMS](#s3-express-aws-signature-version-4-sse-kms)
+ [Realizar auditoria da criptografia SSE-KMS em buckets de diretório](#s3-express-bucket-encryption-sse-auditing)
+ [Especificar a criptografia do lado do servidor com o AWS KMS (SSE-KMS) para novos uploads de objetos em buckets de diretório](s3-express-specifying-kms-encryption.md)

## AWS KMS keys
<a name="s3-express-aws-managed-customer-managed-keys"></a>

A configuração de SSE-KMS só comporta uma [chave gerenciada pelo cliente](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) por bucket de diretório durante a vida útil do bucket. Não há suporte para [https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) (`aws/s3`). Além disso, depois que você especifica uma chave gerenciada pelo cliente para SSE-KMS, não é possível substituí-la pela configuração de SSE-KMS do bucket.

É possível identificar a chave gerenciada pelo cliente que você especificou para a configuração SSE-KMS do bucket, da seguinte forma:
+ Faça uma solicitação de operação de API `HeadObject` para encontrar o valor de `x-amz-server-side-encryption-aws-kms-key-id` em sua resposta.

Para usar uma nova chave gerenciada pelo cliente em seus dados, recomendamos copiar os objetos existentes em um novo bucket de diretório com uma nova chave gerenciada pelo cliente.

Ao especificar uma [chave do AWS KMS gerenciada pelo cliente](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) 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.

Para ter mais informações sobre chaves do KMS, consulte [AWS KMS keys](UsingKMSEncryption.md#aws-managed-customer-managed-keys).

## Usar SSE-KMS para operações entre contas
<a name="s3-express-bucket-encryption-update-bucket-policy"></a>

Ao utilizar a criptografia para operações entre contas em buckets de diretório, lembre-se do seguinte:
+ Se você quiser conceder acesso entre contas aos objetos do S3, configure uma política de chave gerenciada pelo cliente para permitir o acesso de outra conta.
+ Para especificar uma chave gerenciada pelo cliente, é necessário usar um ARN de chave do KMS totalmente qualificado.

## Amazon S3 Bucket Keys
<a name="s3-express-sse-kms-bucket-keys"></a>

As chaves de bucket do S3 estão sempre 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 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html), de [https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html), [da operação Copy em Operações em Lote](directory-buckets-objects-Batch-Ops.md) ou [de trabalhos de import](create-import-job.md). 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.

Em [Operações de API de endpoint zonal (nível de objeto)](s3-express-differences.md#s3-express-differences-api-operations), com exceção de [CopyObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html) e [UploadPartCopy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html), autentique e autorize solicitações por meio de [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html) para ter baixa latência. 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 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](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)). 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. 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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-specifying-kms-encryption.html).

As chaves de bucket do S3 são usadas por um período limitado no Amazon S3, o que reduz ainda mais a necessidade de o Amazon S3 fazer solicitações ao AWS KMS para concluir operações de criptografia. Para ter mais informações sobre como usar chaves de bucket do S3, consulte [Amazon S3 Bucket Keys](UsingKMSEncryption.md#sse-kms-bucket-keys) e [Redução do custo do SSE-KMS com chaves de bucket do Amazon S3](bucket-key.md).

## Como exigir SSE-KMS
<a name="s3-express-require-sse-kms"></a>

Para exigir SSE-KMS de todos os objetos em um bucket de diretório específico, use uma política de bucket. Por exemplo, ao usar a operação de API `CreateSession` para conceder permissão para fazer upload de um novo objeto (`PutObject`, `CopyObject` e `CreateMultipartUpload`), a política de bucket a seguir negará a permissão de upload de objeto (`s3express:CreateSession`) a todos se a solicitação `CreateSession` não incluir um cabeçalho `x-amz-server-side-encryption-aws-kms-key-id` que solicite SSE-KMS.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Id":"UploadObjectPolicy",
   "Statement":[{
         "Sid":"DenyObjectsThatAreNotSSEKMS",
         "Effect":"Deny",
         "Principal":"*",
         "Action":"s3express:CreateSession",
         "Resource":"arn:aws:s3express:us-east-1:111122223333:bucket/amzn-s3-demo-bucket--usw2-az1--x-s3",
         "Condition":{
            "Null":{
               "s3express:x-amz-server-side-encryption-aws-kms-key-id":"true"
            }
         }
      }
   ]
}
```

------

Para exigir que uma AWS KMS key específica seja usada para criptografar os objetos em um bucket, use a chave de condição `s3express:x-amz-server-side-encryption-aws-kms-key-id`. Para especificar a chave do KMS, é necessário usar um nome do recurso da Amazon (ARN) da chave no formato `arn:aws:kms:region:acct-id:key/key-id`. O AWS Identity and Access Management não validará se a string para `s3express:x-amz-server-side-encryption-aws-kms-key-id` existe. o ID de chave do AWS KMS que o Amazon S3 usa para a criptografia de objetos deve corresponder ao ID de chave do AWS KMS na política. Caso contrário, o Amazon S3 negará a solicitação.

Para ter mais informações sobre como usar a SSE-KMS para uploads de novos objetos, consulte [Especificar a criptografia do lado do servidor com o AWS KMS (SSE-KMS) para novos uploads de objetos em buckets de diretório](s3-express-specifying-kms-encryption.md).

Para ter uma lista completa de chaves de condição específicas de buckets de diretório, consulte [Autorizar operações de API de endpoint regional com o IAM](s3-express-security-iam.md).

## Contexto de criptografia
<a name="s3-express-encryption-context"></a>

No caso de buckets de diretório, *contexto de criptografia* é um conjunto de pares de chave-valor que contêm informações contextuais sobre os dados. Não é possível fornecer um valor de contexto de criptografia adicional. Para obter mais informações sobre o contexto de criptografia, consulte [Contexto de criptografia](UsingKMSEncryption.md#encryption-context). 



Por padrão, se você usar a SSE-KMS em um bucket de diretório, o Amazon S3 usará o nome do recurso da Amazon (ARN) do bucket como o par de contexto de criptografia:

```
arn:aws:s3express:region:account-id:bucket/bucket-base-name--zone-id--x-s3
```

As políticas do IAM ou as políticas de chave do AWS KMS devem usar o ARN do bucket como contexto de criptografia.

Também é possível fornecer um par de contexto de criptografia explícito usando o cabeçalho `x-amz-server-side-encryption-context` em uma solicitação de API de endpoint de zona, como [CreateSession](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html#API_CreateSession_RequestSyntax). O valor desse cabeçalho é uma string codificada em base64 de um JSON codificado em UTF-8, que apresenta o contexto de criptografia como pares de chave-valor. Para buckets de diretório, o contexto de criptografia deve corresponder ao contexto de criptografia padrão: o nome do recurso da Amazon (ARN) do bucket. Além disso, como o contexto de criptografia não é criptografado, ele não deve incluir informações sigilosas.

É possível usar o contexto de criptografia para identificar e categorizar suas operações de criptografia. Também é possível usar o valor do ARN do contexto de criptografia padrão para monitorar solicitações relevantes no AWS CloudTrail visualizando qual ARN do bucket de diretório foi usado com qual chave de criptografia.

No campo `requestParameters` de um arquivo de log do CloudTrail, se você usar a SSE-KMS em um bucket de diretório, o valor do contexto de criptografia será o ARN do bucket. 

```
"encryptionContext": {
    "aws:s3express:arn": "arn:aws:s3:::arn:aws:s3express:region:account-id:bucket/bucket-base-name--zone-id--x-s3"
}
```

Além disso, para criptografia de objetos com SSE-KMS em um bucket de diretório, seus eventos do AWS KMS CloudTrail registram o ARN do bucket em vez do ARN do objeto. 

## Enviar solicitações para objetos criptografados do AWS KMS
<a name="s3-express-aws-signature-version-4-sse-kms"></a>

Os buckets de diretório só podem ser acessados por meio de HTTPS (TLS). Além disso, os buckets de diretório assinam solicitações usando o AWS Signature Version 4 (SigV4). Para ter mais informações sobre o envio de solicitações de objetos criptografados do AWS KMS, consulte [Enviar solicitações para objetos criptografados do AWS KMS](UsingKMSEncryption.md#aws-signature-version-4-sse-kms).

Se o objeto usar SSE-KMS, não envie cabeçalhos de solicitação de criptografia para solicitações `GET` e solicitações `HEAD`. Caso contrário, você receberá um erro HTTP 400 Solicitação Inválida.

## Realizar auditoria da criptografia SSE-KMS em buckets de diretório
<a name="s3-express-bucket-encryption-sse-auditing"></a>

Para auditar o uso das chaves do AWS KMS para seus dados criptografados por SSE-KMS, você pode usar logs do AWS CloudTrail. Você pode obter informações sobre suas [operações criptográficas](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#cryptographic-operations), como [https://docs.aws.amazon.com/kms/latest/developerguide/ct-generatedatakey.html](https://docs.aws.amazon.com/kms/latest/developerguide/ct-generatedatakey.html) e [https://docs.aws.amazon.com/kms/latest/developerguide/ct-decrypt.html](https://docs.aws.amazon.com/kms/latest/developerguide/ct-decrypt.html). O CloudTrail oferece suporte a vários [valores de atributos](https://docs.aws.amazon.com/awscloudtrail/latest/APIReference/API_LookupEvents.html) para filtrar a pesquisa, como nome do evento, nome de usuário e origem do evento. 

**Topics**
+ [AWS KMS keys](#s3-express-aws-managed-customer-managed-keys)
+ [Usar SSE-KMS para operações entre contas](#s3-express-bucket-encryption-update-bucket-policy)
+ [Amazon S3 Bucket Keys](#s3-express-sse-kms-bucket-keys)
+ [Como exigir SSE-KMS](#s3-express-require-sse-kms)
+ [Contexto de criptografia](#s3-express-encryption-context)
+ [Enviar solicitações para objetos criptografados do AWS KMS](#s3-express-aws-signature-version-4-sse-kms)
+ [Realizar auditoria da criptografia SSE-KMS em buckets de diretório](#s3-express-bucket-encryption-sse-auditing)
+ [Especificar a criptografia do lado do servidor com o AWS KMS (SSE-KMS) para novos uploads de objetos em buckets de diretório](s3-express-specifying-kms-encryption.md)

# Especificar a criptografia do lado do servidor com o AWS KMS (SSE-KMS) para novos uploads de objetos em buckets de diretório
<a name="s3-express-specifying-kms-encryption"></a>

Em buckets de diretório, para criptografar dados, é possível usar a criptografia do lado do servidor com chaves gerenciadas pelo Amazon S3 (SSE-S3) (padrão) ou com chaves do AWS Key Management Service (AWS KMS) (SSE-KMS). 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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-specifying-kms-encryption.html).

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. Se você quiser especificar um tipo de criptografia diferente para um bucket de diretório, é possível usar a criptografia do lado do servidor com chaves do AWS Key Management Service (AWS KMS) (SSE-KMS). 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](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)). Não há suporte para [Chave gerenciada pela AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) (`aws/s3`). A configuração de SSE-KMS só comporta uma [chave gerenciada pelo cliente](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) por bucket de diretório durante a vida útil do bucket. Depois que você especifica uma chave gerenciada pelo cliente para SSE-KMS, não é possível substituí-la pela configuração de SSE-KMS do bucket. Depois, ao especificar as configurações de criptografia do lado do servidor para novos objetos com SSE-KMS, é necessário garantir que a chave de criptografia seja a mesma chave gerenciada pelo cliente que você especificou para a configuração de criptografia padrão do bucket de diretório. Para usar uma nova chave gerenciada pelo cliente em seus dados, recomendamos copiar os objetos existentes em um novo bucket de diretório com uma nova chave gerenciada pelo cliente.

É possível aplicar criptografia durante o upload de um novo objeto ou ao copiar um objeto existente. Se você alterar a criptografia de um objeto, um novo objeto será criado para substituir o antigo.

É possível especificar a SSE-KMS utilizando as operações da API REST, SDKs da AWS e a AWS Command Line Interface (AWS CLI). 

**nota**  
 Para buckets de diretório, os comportamentos de substituição de criptografia são os seguintes:   
Ao usar [CreateSession](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html) com a API REST para autenticar e autorizar solicitações de API de endpoint de zona, exceto [CopyObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html) e [UploadPartCopy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html), será possível substituir as configurações de criptografia para SSE-S3 ou SSE-KMS somente se você tiver especificado a criptografia padrão do bucket com SSE-KMS anteriormente.
Ao usar [CreateSession](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html) com a AWS CLI ou com os SDKs da AWS para autenticar e autorizar solicitações de API de endpoint zonal, exceto [CopyObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html) e [UploadPartCopy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html), não é possível substituir as configurações de criptografia de forma alguma.
Ao fazer solicitações [CopyObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html), será possível substituir as configurações de criptografia como SSE-S3 ou SSE-KMS somente se você tiver especificado a criptografia padrão do bucket com SSE-KMS anteriormente. Ao fazer solicitações [UploadPartCopy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html), não é possível substituir as configurações de criptografia.
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](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html) no *Guia do desenvolvedor doAWS Key Management Service*.
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](https://docs.aws.amazon.com//kms/latest/developerguide/key-policy-modifying-external-accounts.html#cross-account-console) no *Guia do desenvolvedor do AWS Key Management Service*. 

## Uso da API REST
<a name="s3-express-KMSUsingRESTAPI"></a>

**nota**  
 Somente uma [chave gerenciada pelo cliente](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) é aceita por bucket de diretório durante o ciclo de vida do bucket. Não há suporte para [https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) (`aws/s3`). Depois que você especificar a SSE-KMS como a configuração de criptografia padrão do bucket com uma chave gerenciada pelo cliente, não será possível alterar a chave gerenciada pelo cliente para a configuração SSE-KMS do bucket. 

Em [Operações de API de endpoint zonal (nível de objeto)](s3-express-differences.md#s3-express-differences-api-operations), com exceção de [CopyObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html) e [UploadPartCopy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html), autentique e autorize solicitações por meio de [CreateSession](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html) para ter baixa latência. Recomendamos que a criptografia padrão do bucket use as configurações desejadas 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 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](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)). 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. 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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-specifying-kms-encryption.html).

Nas chamadas de API de endpoint zonal (exceto [CopyObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html) e [UploadPartCopy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html)) utilizando a API REST, não é possível substituir os valores das configurações de criptografia (`x-amz-server-side-encryption`, `x-amz-server-side-encryption-aws-kms-key-id`, `x-amz-server-side-encryption-context` e `x-amz-server-side-encryption-bucket-key-enabled`) da solicitação `CreateSession`. Não é necessário especificar explicitamente esses valores de configuração de criptografia em chamadas de API de endpoint de zona. O Amazon S3 usará os valores das configurações de criptografia da solicitação `CreateSession` para proteger novos objetos no bucket de diretório. 

**nota**  
Quando você usa a AWS CLI ou os SDKs da AWS, para `CreateSession`, o token da sessão é atualizado automaticamente para evitar interrupções no serviço quando uma sessão expira. A AWS CLI ou os SDKs da AWS usam a configuração de criptografia padrão do bucket para a solicitação `CreateSession`. A substituição dos valores de configuração de criptografia não é aceita na solicitação `CreateSession`. Além disso, nas chamadas de API de endpoint de zona (exceto [CopyObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html) e [UploadPartCopy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html)), não é possível substituir os valores de configuração de criptografia da solicitação `CreateSession`. 

Com relação a [CopyObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html), para criptografar novas cópias de 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](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)). Depois, ao especificar as configurações de criptografia do lado do servidor para novas cópias de objetos com SSE-KMS, é necessário garantir que a chave de criptografia seja a mesma chave gerenciada pelo cliente que você especificou para a configuração de criptografia padrão do bucket de diretório. Quanto a [UploadPartCopy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html), para criptografar novas cópias de partes de 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](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)). Não é possível especificar as configurações de criptografia do lado do servidor para novas cópias de partes do objeto com SSE-KMS nos cabeçalhos da solicitação [UploadPartCopy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html). Além disso, as configurações de criptografia fornecidas na solicitação [CreateMultipartUpload](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html) devem corresponder à configuração de criptografia padrão do bucket de destino. 



**Topics**
+ [Operações da API REST do Amazon S3 compatíveis com SSE-KMS](#s3-express-sse-request-headers-kms)
+ [Contexto de criptografia (`x-amz-server-side-encryption-context`)](#s3-express-s3-kms-encryption-context)
+ [ID da chave do AWS KMS (`x-amz-server-side-encryption-aws-kms-key-id`)](#s3-express-s3-kms-key-id-api)
+ [Chaves de bucket do S3 (`x-amz-server-side-encryption-aws-bucket-key-enabled`)](#s3-express-bucket-key-api)

### Operações da API REST do Amazon S3 compatíveis com SSE-KMS
<a name="s3-express-sse-request-headers-kms"></a>

As operações da API REST em nível de objeto nos buckets de diretório a seguir 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`.
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html) – ao usar operações de API de endpoint de zona (em nível de objeto) (exceto CopyObject e UploadPartCopy), é possível especificar esses cabeçalhos de solicitação. 
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html): ao carregar dados usando a operação de API`PUT`, é possível especificar esses cabeçalhos de solicitação. 
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html) – 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.
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html) – 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.
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html)

**Importante**  
Todas as solicitações `GET` e `PUT` para um objeto protegido pelo AWS KMS falharão se elas não forem feitas usando 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ções `HEAD`,ou um erro HTTP 400 BadRequest será exibido.

### Contexto de criptografia (`x-amz-server-side-encryption-context`)
<a name="s3-express-s3-kms-encryption-context"></a>

Caso você especifique `x-amz-server-side-encryption:aws:kms`, a API do Amazon S3 permite que você forneça, opcionalmente, um contexto de criptografia explícito com o cabeçalho `x-amz-server-side-encryption-context`. Para buckets de diretório, contexto de criptografia é um conjunto de pares de chave-valor que contêm informações contextuais sobre os dados. O valor deve corresponder ao contexto de criptografia padrão: o nome do recurso da Amazon (ARN) do bucket. Não é possível fornecer um valor de contexto de criptografia adicional. 

Para ter informações sobre o contexto de criptografia nos buckets de diretório, consulte [Contexto de criptografia](s3-express-UsingKMSEncryption.md#s3-express-encryption-context). Para obter informações gerais sobre o contexto de criptografia, consulte [Conceitos do AWS Key Management Service: contexto de criptografia](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context) no *Guia do desenvolvedor do AWS Key Management Service*. 

### ID da chave do AWS KMS (`x-amz-server-side-encryption-aws-kms-key-id`)
<a name="s3-express-s3-kms-key-id-api"></a>

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.

A configuração de SSE-KMS só comporta uma [chave gerenciada pelo cliente](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) por bucket de diretório durante a vida útil do bucket. Não há suporte para [https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) (`aws/s3`). Além disso, depois que você especifica uma chave gerenciada pelo cliente para SSE-KMS, não é possível substituí-la pela configuração de SSE-KMS do bucket.

É possível identificar a chave gerenciada pelo cliente que você especificou para a configuração SSE-KMS do bucket, da seguinte forma:
+ Faça uma solicitação de operação de API `HeadObject` para encontrar o valor de `x-amz-server-side-encryption-aws-kms-key-id` em sua resposta.

Para usar uma nova chave gerenciada pelo cliente em seus dados, recomendamos copiar os objetos existentes em um novo bucket de diretório com uma nova chave gerenciada pelo cliente.

Para ter informações sobre o contexto de criptografia nos buckets de diretório, consulte [AWS KMS keys](s3-express-UsingKMSEncryption.md#s3-express-aws-managed-customer-managed-keys). 

### Chaves de bucket do S3 (`x-amz-server-side-encryption-aws-bucket-key-enabled`)
<a name="s3-express-bucket-key-api"></a>

As chaves de bucket do S3 estão sempre 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 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html), de [https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html), [da operação Copy em Operações em Lote](directory-buckets-objects-Batch-Ops.md) ou [de trabalhos de import](create-import-job.md). 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 informações sobre as chaves de bucket do S3 em buckets de diretório, consulte [Contexto de criptografia](s3-express-UsingKMSEncryption.md#s3-express-encryption-context). 

## Como usar o AWS CLI
<a name="s3-express-KMSUsingCLI"></a>

**nota**  
Ao usar a AWS CLI, para `CreateSession`, o token da sessão é atualizado automaticamente para evitar interrupções no serviço quando uma sessão expira. A substituição dos valores de configuração de criptografia não é aceita para a solicitação `CreateSession`. Além disso, nas chamadas de API de endpoint de zona (exceto [CopyObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html) e [UploadPartCopy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html)), não é possível substituir os valores de configuração de criptografia da solicitação `CreateSession`.   
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.

Para usar os exemplos de comandos da AWS CLI a seguir, substitua os `user input placeholders` por suas próprias informações.

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, use o comando `put-bucket-encryption` para definir a configuração de criptografia padrão do bucket de diretório como SSE-KMS (`aws:kms`). Especificamente, adicione o cabeçalho `--server-side-encryption aws:kms` à solicitação. Use `--ssekms-key-id example-key-id` para adicionar a [chave do AWS KMS gerenciada pelo cliente](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#customer-cmk) que você criou. Se você especificar `--server-side-encryption aws:kms`, deverá fornecer um ID da chave do AWS KMS gerenciada pelo cliente. Os buckets de diretório não usam uma chave gerenciada pela AWS. Para obter um exemplo de comando, consulte [Como usar o AWS CLI](s3-express-bucket-encryption.md#s3-express-default-bucket-encryption-cli). 

Desse modo, quando você faz upload de um novo objeto com o comando a seguir, o Amazon S3 usa as configurações do bucket para criptografia padrão para criptografar o objeto por padrão.

```
aws s3api put-object --bucket bucket-base-name--zone-id--x-s3 --key example-object-key --body filepath
```

Não é necessário adicionar `-\-bucket-key-enabled` explicitamente em comandos de operações de API de endpoint de zona. As chaves de bucket do S3 estão sempre 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 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html), de [https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html), [da operação Copy em Operações em Lote](directory-buckets-objects-Batch-Ops.md) ou [de trabalhos de import](create-import-job.md). 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.

É possível copiar um objeto de um bucket de origem (por exemplo, um bucket de uso geral) em um novo bucket (por exemplo, um bucket de diretório) e usar a criptografia SSE-KMS para os objetos de destino. Para isso, use o comando `put-bucket-encryption` para definir a configuração de criptografia padrão do bucket de destino (por exemplo, um bucket de diretório) como SSE-KMS (`aws:kms`). Para obter um exemplo de comando, consulte [Como usar o AWS CLI](s3-express-bucket-encryption.md#s3-express-default-bucket-encryption-cli). Desse modo, quando você copia um objeto com o comando a seguir, o Amazon S3 usa as configurações do bucket para criptografia padrão para criptografar o objeto por padrão.

```
aws s3api copy-object --copy-source amzn-s3-demo-bucket/example-object-key --bucket bucket-base-name--zone-id--x-s3 --key example-object-key  
```

## Usar SDKs da AWS
<a name="s3-express-kms-using-sdks"></a>

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](https://aws.amazon.com/code) no Centro do desenvolvedor da AWS.

**nota**  
Ao usar os SDKs da AWS para `CreateSession`, o token da sessão é atualizado automaticamente para evitar interrupções no serviço quando uma sessão expira. A substituição dos valores de configuração de criptografia não é aceita para a solicitação `CreateSession`. Além disso, nas chamadas de API de endpoint de zona (exceto [CopyObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html) e [UploadPartCopy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html)), não é possível substituir os valores de configuração de criptografia da solicitação `CreateSession`.   
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.  
Para ter mais informações sobre o uso de SDKs da AWS para definir a configuração de criptografia padrão de um bucket de diretório como SSE-KMS, consulte [Usar SDKs da AWS](s3-express-bucket-encryption.md#s3-express-kms-put-bucket-encryption-using-sdks).

**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](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#symmetric-cmks) no *Guia do desenvolvedor do AWS Key Management Service*.

Para obter mais informações sobre como criar chaves gerenciadas pelo cliente, consulte [Programação da API do AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/programming-top.html) no *Guia do desenvolvedor do AWS Key Management Service*.