

# 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*.