

# Segurança no Amazon S3
<a name="security"></a>

**Importante**  
A partir de abril de 2026, a AWS desabilitará a criptografia do lado do servidor com chaves fornecidas pelo cliente (SSE-C) para todos os buckets novos. Além disso, a criptografia SSE-C será desabilitada para todos os buckets existentes em Contas da AWS que não tenham dados criptografados por SSE-C. Com essas mudanças, as poucas aplicações que precisam da criptografia SSE-C deverão habilitar deliberadamente o uso do SSE-C por meio da API [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html) após a criação do bucket. Nesses casos, talvez seja necessário atualizar scripts de automação, modelos do CloudFormation ou outras ferramentas de configuração de infraestrutura para definir essas configurações. Para ter mais informações, consulte a publicação do [Blog do AWS Storage](https://aws.amazon.com/blogs/storage/advanced-notice-amazon-s3-to-disable-the-use-of-sse-c-encryption-by-default-for-all-new-buckets-and-select-existing-buckets-in-april-2026/).

A segurança na nuvem na AWS é a nossa maior prioridade. Como cliente da AWS, você se beneficiará de um data center e de uma arquitetura de rede criados para atender aos requisitos das empresas com as maiores exigências de segurança.

A segurança é uma responsabilidade compartilhada entre a AWS e você. O [modelo de responsabilidade compartilhada](https://aws.amazon.com/compliance/shared-responsibility-model/) descreve isto como segurança *da* nuvem e segurança *na* nuvem:

**Segurança da nuvem**  
A AWS é responsável pela proteção da infraestrutura que executa serviços da AWS na Nuvem AWS. A AWS também fornece a você serviços que podem ser usados com segurança. A eficácia de nossa segurança é regularmente testada e verificada por auditores terceirizados como parte dos [programas de conformidade da AWS](https://aws.amazon.com/compliance/programs/). Para conhecer os programas de conformidade que se aplicam ao Amazon S3, consulte [AWS Services in Scope by Compliance Program](https://aws.amazon.com/compliance/services-in-scope/).

**Segurança na nuvem**  
Sua responsabilidade é determinada pelo serviço da AWS que você usa. Também existe a responsabilidade por outros fatores, incluindo a confidencialidade de dados, os requisitos da organização e as leis e regulamentos aplicáveis. Para o Amazon S3, sua responsabilidade inclui as seguintes áreas:
+ Gerenciar seus dados, incluindo [propriedade de objetos](https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html) e [criptografia](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingEncryption.html).
+ Classificar seus ativos.
+ [Gerenciar o acesso](https://docs.aws.amazon.com/AmazonS3/latest/userguide/security-iam.html) a seus dados usando as [funções do IAM](https://docs.aws.amazon.com/AmazonS3/latest/userguide/security-best-practices.html#roles) e outras configurações de serviço para aplicar as permissões apropriadas.
+ Habilitar controles de detecção, como [AWS CloudTrail](https://docs.aws.amazon.com/AmazonS3/latest/userguide/cloudtrail-logging.html) ou [Amazon GuardDuty](https://docs.aws.amazon.com/guardduty/latest/ug/s3_detection.html)para o Amazon S3.

Esta documentação ajudará você a entender como aplicar o modelo de responsabilidade compartilhada ao usar o Amazon S3. Os tópicos a seguir mostram como configurar o Amazon S3 para atender aos seus objetivos de segurança e de conformidade. Você também aprenderá como usar outros serviços da AWS que podem ajudar a monitorar e proteger seus recursos do Amazon S3. 

**nota**  
Para obter mais informações sobre o uso da classe de armazenamento Amazon S3 Express One Zone com buckets de diretório, consulte [S3 Express One Zone](directory-bucket-high-performance.md#s3-express-one-zone) e [Trabalhar com buckets de diretório](directory-buckets-overview.md).

**Topics**
+ [Práticas recomendadas de segurança para o Amazon S3](security-best-practices.md)
+ [Proteção de dados no Amazon S3](DataDurability.md)
+ [Proteger dados com criptografia](UsingEncryption.md)
+ [Privacidade do tráfego entre redes](inter-network-traffic-privacy.md)
+ [Validação de conformidade para o Amazon S3](s3-compliance.md)
+ [Resiliência no Amazon S3](disaster-recovery-resiliency.md)
+ [Segurança da infraestrutura no Amazon S3](network-isolation.md)
+ [Análise de configuração e vulnerabilidade no Amazon S3](vulnerability-analysis-and-management.md)
+ [Gerenciamento de acesso](security-access-management.md)
+ [Inventário de dados do Amazon Simple Storage Service](s3-data-inventory.md)

# Práticas recomendadas de segurança para o Amazon S3
<a name="security-best-practices"></a>

**Importante**  
A partir de abril de 2026, a AWS desabilitará a criptografia do lado do servidor com chaves fornecidas pelo cliente (SSE-C) para todos os buckets novos. Além disso, a criptografia SSE-C será desabilitada para todos os buckets existentes em Contas da AWS que não tenham dados criptografados por SSE-C. Com essas mudanças, as poucas aplicações que precisam da criptografia SSE-C deverão habilitar deliberadamente o uso do SSE-C por meio da API [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html) após a criação do bucket. Nesses casos, talvez seja necessário atualizar scripts de automação, modelos do CloudFormation ou outras ferramentas de configuração de infraestrutura para definir essas configurações. Para ter mais informações, consulte a publicação do [Blog do AWS Storage](https://aws.amazon.com/blogs/storage/advanced-notice-amazon-s3-to-disable-the-use-of-sse-c-encryption-by-default-for-all-new-buckets-and-select-existing-buckets-in-april-2026/).

O Amazon S3 fornece uma série de recursos de segurança a serem considerados no desenvolvimento e na implementação das suas próprias políticas de segurança. As melhores práticas a seguir são diretrizes gerais e não representam uma solução completa de segurança. Como essas práticas recomendadas podem não ser adequadas ou suficientes para o seu ambiente, trate-as como recomendações úteis em vez de requisitos. 

**Topics**
+ [Práticas recomendadas de segurança para o Amazon S3](#security-best-practices-prevent)
+ [Práticas recomendadas de auditoria e monitoramento do Amazon S3](#security-best-practices-detect)
+ [Monitorar a segurança dos dados com serviços de segurança gerenciados da AWS](#monitoring-data-security)

## Práticas recomendadas de segurança para o Amazon S3
<a name="security-best-practices-prevent"></a>

As seguintes práticas recomendadas do Amazon S3 podem ajudar a evitar incidentes de segurança.

**Desativar listas de controle de acesso (ACLs)**  
A Propriedade de objeto do S3 é uma configuração no nível do bucket do Amazon S3 que você pode usar para controlar a propriedade de objetos carregados no bucket e para desabilitar ou habilitar as ACLs. Por padrão, “Propriedade do objeto” está definida com a configuração “Imposto pelo proprietário do bucket” e todas as ACLs estão desabilitadas. Quando as ACLs são desabilitadas, o proprietário do bucket possui todos os objetos do bucket e gerencia o acesso aos dados usando políticas de gerenciamento de acesso.   
A maioria dos casos de uso no Amazon S3 não exige mais o uso de [listas de controle de acesso (ACLs)](acl-overview.md). Recomendamos desabilitar as ACLs, exceto em circunstâncias em que seja necessário controlar o acesso para cada objeto individualmente. Para desativar as ACLs e assumir a propriedade de cada objeto de seu bucket, aplique a configuração Imposto pelo proprietário do bucket para a Propriedade de objeto do S3. Ao desabilitar ACLs, você pode facilmente manter um bucket com objetos carregados por diferentes Contas da AWS.   
Quando as ACLs são desabilitadas, o controle de acesso para os dados é baseado em políticas, como as seguintes:   
+ Políticas de usuário do AWS Identity and Access Management (IAM)
+ Políticas de bucket do S3
+ Políticas de endpoint de nuvem privada virtual (VPC)
+ Políticas de controle de serviço (SCPs) do AWS Organizations
+ Políticas de controle de recursos (RCPs) do AWS Organizations
  
A desativação das ACLs simplifica o gerenciamento e a auditoria de permissões. Por padrão, as ACLs estão desabilitadas para novos buckets. Também é possível desabilitar ACLs para buckets existentes. Se você tiver um bucket existente que já contenha objetos, depois de desabilitar ACLs, as ACLs de objeto e bucket não farão mais parte do processo de avaliação de acesso. Em vez disso, o acesso é concedido ou negado com base nas políticas.   
Antes de desabilitar as ACLs, faça o seguinte:   
+ Revise sua política de bucket para garantir que ela abranja todas as maneiras pelas quais você pretende conceder acesso ao bucket fora da conta.
+ Redefina a ACL do bucket para o padrão (controle total para o proprietário do bucket).
  
Ao desabilitar as ACLs, os seguintes comportamentos ocorrem:   
+ O bucket aceita somente solicitações `PUT` que não especificam uma ACL ou solicitações `PUT` com ACLs de controle total do proprietário do bucket. Essas ACLs incluem a ACL predefinida `bucket-owner-full-control` ou formas equivalentes dessa ACL que são expressas em XML.
+ Aplicações existentes compatíveis com ACLs de controle total do proprietário do bucket não são afetadas. 
+ Solicitações `PUT` que contêm outras ACLs (por exemplo, concessões personalizadas para determinadas Contas da AWS) falham e retornam um código de status de HTTP de `400 (Bad Request)` com o código de erro `AccessControlListNotSupported`.
   
Para obter mais informações, consulte [Controlar a propriedade de objetos e desabilitar ACLs para seu bucket](about-object-ownership.md).

**Garantir que seus buckets do Amazon S3 utilizem as políticas corretas e não sejam acessados publicamente**  
A não ser que seja absolutamente necessário que alguém na internet possa ler ou gravar no seu bucket do S3, ele não deve ser público. Veja abaixo algumas etapas que você pode seguir para bloquear o acesso público:  
+ Use o Bloqueio de Acesso Público do S3. Com o Bloqueio de Acesso Público do S3, é possível configurar facilmente os controles centralizados impostos para limitar o acesso público aos recursos do Amazon S3. Esses controles centralizados são aplicados independentemente de como os recursos são criados. Agora as organizações que gerenciam várias contas da AWS podem usar a imposição em nível organizacional por meio do AWS Organizations para gerenciar centralmente as configurações do Bloqueio de Acesso Público do S3 em toda a organização com uma única configuração de política.

  Para obter mais informações, consulte [Bloquear o acesso público ao armazenamento do Amazon S3](access-control-block-public-access.md).
+ Identifique as políticas de bucket do Amazon S3 que permitam uma identidade curinga, como `"Principal": "*"` (que efetivamente significa “qualquer pessoa”). Procure também políticas que permitem uma ação curinga `"*"` (que efetivamente permite que o usuário realize qualquer ação no bucket do Amazon S3).
+ Da mesma forma, procure as listas de controle de acesso (ACLs) do bucket do Amazon S3 que fornecem acesso de leitura, gravação, ou total a “Todos” ou a “Qualquer usuário autenticado da AWS”. 
+ Use a operação de API `ListBuckets` para verificar todos os buckets do Amazon S3. Depois, use `GetBucketAcl`, `GetBucketWebsite` e `GetBucketPolicy` para determinar se cada bucket tem controles de acesso de conformidade e uma configuração de conformidade.
+ Use o [AWS Trusted Advisor](https://docs.aws.amazon.com/awssupport/latest/user/getting-started.html#trusted-advisor) para inspecionar sua implementação do Amazon S3.
+ Considere a implementação de controles contínuos de detecção usando o Regras do AWS Config gerenciado [https://docs.aws.amazon.com/config/latest/developerguide/s3-bucket-public-read-prohibited.html](https://docs.aws.amazon.com/config/latest/developerguide/s3-bucket-public-read-prohibited.html) e [https://docs.aws.amazon.com/config/latest/developerguide/s3-bucket-public-write-prohibited.html](https://docs.aws.amazon.com/config/latest/developerguide/s3-bucket-public-write-prohibited.html).
**Para organizações que gerenciam várias contas da AWS, existe a possibilidade de usar políticas de bloqueio de acesso público em nível organizacional para ter um controle centralizado:**  
+ Gerenciamento centralizado de políticas: use o AWS Organizations para criar uma única política para o Bloqueio de Acesso Público do S3 que se aplique automaticamente a todas as contas de membros ou unidades organizacionais (UOs) selecionadas.
+ Herança automática: quando uma política e anexada no nível raiz ou de UO, as novas contas de membros herdam automaticamente as configurações de bloqueio de acesso público sem a configuração de conta individual.
+ Conformidade simplificada: as políticas em nível organizacional eliminam a necessidade de manter políticas de controle de serviços (SCPs) complexas para impor o bloqueio de acesso público e reduzem os custos operacionais indiretos do gerenciamento de configurações de contas individuais.
+ Recursos de auditoria: use o AWS CloudTrail para monitorar a anexação e a aplicação de políticas em todas as contas de membros para monitorar a conformidade.
Para obter mais informações, consulte [Gerenciamento de identidade e acesso para o Amazon S3](security-iam.md). 

**Desabilitar a criptografia do lado do servidor com chaves fornecidas pelo cliente (SSE-C) dos seus buckets**  
A maioria dos casos de uso modernos no Amazon S3 não usa mais o SSE-C porque esse tipo de criptografia não tem a flexibilidade da criptografia do lado do servidor com chaves gerenciadas pelo Amazon S3 (SSE-S3) ou da criptografia do lado do servidor com chaves do AWS KMS (SSE-KMS). Como o SSE-C exige que você forneça a chave de criptografia toda vez que interage com seus dados criptografados por SSE-C, é impossível compartilhar a chave SSE-C com outros usuários, perfis ou serviços da AWS que leem dados dos seus buckets do S3 para operar com seus dados.  
Para limitar os tipos de criptografia do lado do servidor que é possível usar em buckets de uso geral, você pode optar por bloquear as solicitações de gravação SSE-C atualizando a configuração de criptografia padrão para os buckets. Essa configuração em nível de bucket bloqueia solicitações de upload de objetos que especificam SSE-C. Quando o SSE-C é bloqueado para um bucket, qualquer solicitação `PutObject`, `CopyObject`, `PostObject` ou de multipart upload ou replicação que especifique a criptografia SSE-C será rejeitada com um erro `HTTP 403 AccessDenied`.   
Para saber mais sobre como bloquear o SSE-C, consulte [Bloquear ou desbloquear o SSE-C para um bucket de uso geral](blocking-unblocking-s3-c-encryption-gpb.md).

**Criar buckets no namespace regional da conta**  
Por padrão, os buckets de uso geral globais são criados no namespace global compartilhado. Depois que um bucket de uso geral é criado no namespace global compartilhado, o nome desse bucket torna-se indisponível para qualquer outra pessoa dentro da partição. Ao excluir um bucket de uso geral global, o respectivo nome é novamente disponibilizado no namespace global para qualquer pessoa reutilizá-lo.  
Embora existam buckets de uso geral do Amazon S3 em um namespace global compartilhado, é possível, opcionalmente, criar buckets no namespace regional de uma conta. O namespace regional da conta é uma subdivisão reservada do namespace de bucket global em que somente a conta pode criar buckets de uso geral. Recomendamos que você crie buckets no namespace regional da sua conta, pois esses buckets são exclusivos da sua conta e nunca podem ser recriados por outra conta. Para obter mais informações, consulte [Namespaces para buckets de uso geral](gpbucketnamespaces.md).  
Recomendamos que você não exclua seus buckets de uso geral globais no namespace global compartilhado. Todas as contas da AWS agora têm uma cota padrão de 10 mil buckets, o que diminui a necessidade de excluir buckets vazios da conta. Se você excluir um bucket no namespace global compartilhado, esteja ciente de que outra conta da AWS na mesma partição poderá usar o mesmo nome de bucket para um novo bucket e, portanto, possivelmente receber solicitações destinadas ao bucket excluído. Para evitar que isso aconteça, ou se quiser continuar a usar o mesmo nome do bucket, não exclua o bucket. Recomendamos que você esvazie o bucket e mantenha-o. Em vez de excluir o bucket, bloqueie quaisquer solicitações de bucket conforme necessário. Com relação a buckets não usados ativamente, recomendamos esvaziar todos o bucket de todos os objetos para minimizar os custos e, ao mesmo tempo, reter o bucket em si. Para obter mais informações, consulte [Excluir um bucket de uso geral](delete-bucket.md).

**Implementar o acesso de privilégio mínimo**  
Ao conceder permissões, você decide quem receberá quais permissões para quais recursos do Amazon S3. Você habilita ações específicas que quer permitir nesses recursos. Portanto, recomendamos conceder apenas as permissões necessárias para executar uma tarefa. A implementação do acesso de privilégio mínimo é fundamental para reduzir o risco de segurança e o impacto que pode resultar de erros ou usuários mal-intencionados.   
As ferramentas a seguir estão disponíveis para implementar o privilégio de acesso mínimo:  
+ [Ações de políticas para o Amazon S3](security_iam_service-with-iam.md#security_iam_service-with-iam-id-based-policies-actions) e [Limites de permissões para entidades do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html)
+ [Como o Amazon S3 funciona com o IAM](security_iam_service-with-iam.md)
+ [Visão geral da lista de controle de acesso (ACL)](acl-overview.md)
Para obter orientação sobre o que considerar ao escolher um ou mais mecanismos precedentes, consulte [Gerenciamento de identidade e acesso para o Amazon S3](security-iam.md).

**Usar perfis do IAM para aplicações e Serviços da AWS que exigem acesso ao Amazon S3**  
Para que aplicações em execução no Amazon EC2 ou outros Serviços da AWS acessem recursos do Amazon S3, eles devem incluir credenciais válidas da AWS em suas solicitações de API da AWS. Recomendamos não armazenar credenciais da AWS diretamente na aplicação ou na instância do Amazon EC2. Essas são credenciais de longo prazo que não são automaticamente alternadas e podem ter um impacto comercial significativo se forem comprometidas.  
Em vez disso, use um perfil do IAM para gerenciar credenciais temporárias para aplicações ou serviços que precisam de acesso ao Amazon S3. Quando você usa um perfil, não é necessário distribuir credenciais de longo prazo (como um nome de usuário e uma senha ou chaves de acesso) para uma instância do Amazon EC2 ou um AWS service (Serviço da AWS) como o AWS Lambda. Em vez disso, a função fornece permissões temporárias que os aplicativos podem usar ao fazer chamadas para outros recursos da AWS.  
Para obter mais informações, consulte os seguintes tópicos no *Guia do usuário do IAM*:  
+ [Funções do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)
+ [Cenários comuns para perfis: usuários, aplicações e serviços](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios.html)

  

**Considerar a criptografia de dados em repouso**  
Você tem as seguintes opções de proteção de dados em repouso no Amazon S3:  
+ **Criptografia do lado do servidor**: 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. 

  O Amazon S3 também fornece as seguintes opções de criptografia do lado do servidor:
  + Criptografia no 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 Key Management Service (AWS KMS) (DSSE-KMS)
  + Criptografia do lado do servidor com chaves fornecidas pelo cliente (SSE-C)

  Para obter mais informações, consulte [Proteger os dados usando criptografia do lado do servidor](serv-side-encryption.md).
+ **Criptografia do lado do cliente**: criptografe dados do lado do cliente e carregue os dados criptografados no Amazon S3. Nesse caso, você gerencia o processo de criptografia, as chaves de criptografia e as ferramentas relacionadas. Assim como na criptografia no lado do servidor, a criptografia no lado do cliente pode ajudar a reduzir o risco criptografando os dados com uma chave armazenada em um mecanismo diferente do mecanismo que armazena os próprios dados. 

  O Amazon S3 fornece muitas opções de criptografia no lado do cliente. Para obter mais informações, consulte [Proteger dados usando a criptografia do lado do cliente](UsingClientSideEncryption.md).

**Aplicar a criptografia de dados em trânsito**  
É possível usar HTTPS (TLS) para ajudar a evitar que invasores espionem ou manipulem tráfego de rede usando ataques person-in-the-middle (intermediários) ou similares. Recomendamos permitir apenas conexões criptografadas por HTTPS (TLS) usando a condição [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_Boolean](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_Boolean) nas políticas de bucket do Amazon S3. Para ter mais informações, consulte o exemplo de política de bucket do S3 em [Gerenciar o acesso com base em solicitações HTTP ou HTTPS](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies.html#example-bucket-policies-HTTP-HTTPS). Além de negar solicitações HTTP, recomendamos que configure alarmes do Amazon CloudWatch em `tlsDetails.tlsVersion NOT EXISTS` que alertem você em caso de tentativa de acesso HTTP ao seu conteúdo. Para ter mais informações sobre como configurar os alarmes do Amazon CloudWatch, consulte [Creating CloudWatch alarms for CloudTrail events: examples](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudwatch-alarms-for-cloudtrail.html) e [CloudTrail record contents](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-event-reference-record-contents.html) no *Guia do usuário do AWS CloudTrail*.  
Recomendamos que sua aplicação não fixe certificados TLS do Amazon S3, pois a AWS não permite a fixação de certificados publicamente confiáveis. O S3 renova automaticamente os certificados, o que pode ocorrer a qualquer momento antes da expiração do certificado. Renovar um certificado gera um novo par de chaves pública-privada. Se você fixou um certificado do S3 que foi renovado recentemente com uma nova chave pública, não poderá se conectar ao S3 enquanto a aplicação não usar o novo certificado. 
Considere também implementar controles de detecção contínuos usando a regra gerenciada [https://docs.aws.amazon.com/config/latest/developerguide/s3-bucket-ssl-requests-only.html](https://docs.aws.amazon.com/config/latest/developerguide/s3-bucket-ssl-requests-only.html) de AWS Config. 

**Considerar o uso do Bloqueio de objetos do S3**  
Com o Bloqueio de objetos do S3, é possível armazenar objetos usando um modelo “gravação única e várias leituras” (WORM). O bloqueio de objetos do S3 pode ajudar a evitar a exclusão acidental ou inadequada de dados. Por exemplo, você pode usar o Bloqueio de objetos do S3 para ajudar a proteger os logs do AWS CloudTrail.  
Para obter mais informações, consulte [Bloquear objetos com o Bloqueio de Objetos](object-lock.md).

**Habilitar o versionamento do S3**  
O versionamento do S3 é um meio de manter diversas variantes de um objeto no mesmo bucket. O versionamento pode ser usado para preservar, recuperar e restaurar todas as versões de cada objeto armazenado no bucket do . Com o versionamento, você pode se recuperar, facilmente, de ações não intencionais do usuário e de falhas de aplicativo.   
Considere também implementar controles de detecção contínuos usando a regra gerenciada [https://docs.aws.amazon.com/config/latest/developerguide/s3-bucket-versioning-enabled.html](https://docs.aws.amazon.com/config/latest/developerguide/s3-bucket-versioning-enabled.html) de AWS Config.  
Para obter mais informações, consulte [Reter várias versões de objetos com o Versionamento do S3](Versioning.md). 

**Considerar o uso da Replicação do S3 Entre Regiões Diferentes**  
Embora o Amazon S3 armazene seus dados em diversas zonas de disponibilidade geograficamente distantes por padrão, requisitos de conformidade podem ditar que você armazene os dados em distâncias ainda maiores. Com a Replicação do S3 Entre Regiões Diferentes (CRR), é possível replicar dados entre Regiões da AWS distantes para ajudar a cumprir esses requisitos. A CRR permite a cópia assíncrona automática de objetos em buckets, em diferentes Regiões da AWS. Para obter mais informações, consulte [Replicar objetos dentro de uma região e entre regiões](replication.md).  
A CRR requer que tanto o bucket de origem quanto o de destino do S3 tenham o versionamento habilitado.
Considere também implementar controles de detecção contínuos usando a regra gerenciada [https://docs.aws.amazon.com/config/latest/developerguide/s3-bucket-replication-enabled.html](https://docs.aws.amazon.com/config/latest/developerguide/s3-bucket-replication-enabled.html) de AWS Config.

**Considerar o uso dos endpoints da VPC para acesso ao Amazon S3**  
Um endpoint da Virtual Private Cloud (VPC) para Amazon S3 é uma entidade lógica dentro de uma VPC que permite conectividade apenas com o Amazon S3. Os endpoints da VPC podem ajudar a impedir que o tráfego atravesse a internet aberta.  
Os VPC endpoints para Amazon S3 fornecem várias maneiras de controlar o acesso aos dados do Amazon S3:  
+ É possível controlar as solicitações, os usuários ou os grupos permitidos por um endpoint da VPC específico usando políticas de bucket do S3.
+ Você pode controlar quais VPCs ou VPC endpoints têm acesso a seus buckets do S3 usando as políticas de bucket do S3.
+ Você pode ajudar a evitar a exfiltração de dados usando uma VPC que não tenha um internet gateway.
Para obter mais informações, consulte [Controlar o acesso a partir de VPC endpoints com políticas de bucket](example-bucket-policies-vpc-endpoint.md). 

** Use serviços de segurança gerenciados da AWS para monitorar a segurança dos dados**  
Vários serviços gerenciados de segurança da AWS podem ajudar a identificar, avaliar e monitorar os riscos de segurança e conformidade dos dados do Amazon S3. Esses serviços também podem ajudar você a proteger seus dados contra esses riscos. Esses serviços incluem recursos automatizados de detecção, monitoramento e proteção que são projetados para escalar desde recursos do Amazon S3 para uma única Conta da AWS até recursos para organizações que abrangem milhares de contas.  
Para obter mais informações, consulte [Monitorar a segurança dos dados com serviços de segurança gerenciados da AWS](#monitoring-data-security).

## Práticas recomendadas de auditoria e monitoramento do Amazon S3
<a name="security-best-practices-detect"></a>

As práticas recomendadas a seguir para o Amazon S3 podem ajudar a detectar pontos fracos e incidentes potenciais de segurança.

**Identificar e auditar todos os buckets do Amazon S3**  
A identificação de seus ativos de TI é um aspecto essencial de governança e segurança. É necessário ter visibilidade de seus recursos do Amazon S3 para avaliar sua postura de segurança e agir em possíveis áreas de fraqueza. Para auditar seus recursos, recomendamos fazer o seguinte:  
+ Use o Editor de tags para identificar e marcar recursos sensíveis quanto a segurança ou auditoria; depois, use essas tags quando precisar procurar esses recursos. Para obter mais informações, consulte [Pesquisa de recursos para marcar](https://docs.aws.amazon.com/ARG/latest/userguide/tag-editor.html) no *Guia do usuário de recursos da AWS*. 
+ Use o S3 Inventory para auditar e gerar relatórios sobre o status da replicação e criptografia de seus objetos para necessidades empresariais, regulatórias e de conformidade. Para obter mais informações, consulte [Catalogar e analisar seus dados com o Inventário S3](storage-inventory.md).
+ Crie grupos de recursos para seus recursos do Amazon S3. Para obter mais informações, consulte [O que são grupos de atributos?](https://docs.aws.amazon.com/ARG/latest/userguide/welcome.html) no *Guia do usuário do AWS Resource Groups*.

**Implementar o monitoramento usando ferramentas de monitoramento da AWS**  
O monitoramento é uma parte importante para manter a confiabilidade, segurança, disponibilidade e performance do Amazon S3 e suas soluções da AWS. A AWS fornece várias ferramentas e serviços para ajudar a monitorar o Amazon S3 e outros Serviços da AWS. Por exemplo, é possível monitorar métricas do Amazon CloudWatch para o Amazon S3, particularmente as métricas `PutRequests`, `GetRequests`, `4xxErrors` e `DeleteRequests`. Para obter mais informações, consulte [Monitoramento de métricas com o Amazon CloudWatch](cloudwatch-monitoring.md) e [Registrar em log e monitorar no Amazon S3](monitoring-overview.md).  
Para obter um segundo exemplo, consulte, [Exemplo: atividade do bucket do Amazon S3](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudwatch-alarms-for-cloudtrail.html#cloudwatch-alarms-for-cloudtrail-s3-bucket-activity). Este exemplo descreve como criar um alarme do CloudWatch que é ativado quando uma chamada de API do Amazon S3 é feita para `PUT` ou `DELETE` uma política do bucket, um ciclo de vida do bucket ou uma configuração de replicação do bucket ou para `PUT` uma ACL do bucket.

**Habilitar o registro em log de acesso ao servidor do Amazon S3**  
O registro em log de acesso ao servidor fornece detalhes sobre as solicitações que são feitas a um bucket. Os logs de acesso ao servidor podem ajudar na auditoria de segurança e acesso, a saber mais sobre a base de clientes e entender sua fatura do Amazon S3. Para obter informações sobre como habilitar o registro em log de acesso ao servidor, consulte [Registrar em log as solicitações com registro em log de acesso ao servidor](ServerLogs.md).  
Considere também a possibilidade de implementar controles de detecção contínuos usando a regra [https://docs.aws.amazon.com/config/latest/developerguide/s3-bucket-logging-enabled.html](https://docs.aws.amazon.com/config/latest/developerguide/s3-bucket-logging-enabled.html) gerenciada pelo AWS Config. 

**Use AWS CloudTrail**  
O AWS CloudTrail fornece um registro das ações executadas por um usuário, uma função ou um AWS service (Serviço da AWS) no Amazon S3. É possível usar as informações coletadas pelo CloudTrail para determinar o seguinte:   
+ A solicitação feita ao Amazon S3
+ O endereço IP do qual a solicitação foi feita.
+ Quem fez a solicitação.
+ Quando a solicitação foi feita
+ Detalhes adicionais sobre a solicitação
  
Por exemplo, é possível identificar entradas do CloudTrail para ações `PUT` que afetam o acesso a dados, em particular `PutBucketAcl`, `PutObjectAcl`, `PutBucketPolicy` e `PutBucketWebsite`.   
Quando você configura sua Conta da AWS, o CloudTrail é habilitado por padrão. Você pode visualizar eventos recentes no console do CloudTrail. Para criar um registro contínuo de atividades e eventos para os buckets do Amazon S3, você pode criar uma trilha no console do CloudTrail. Para obter mais informações, consulte [Registrar eventos de dados](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-data-events-with-cloudtrail.html), no *Guia do usuário do AWS CloudTrail*.  
Ao criar uma trilha, você pode configurar o CloudTrail para registrar em log eventos de dados. Eventos de dados são registros de operações de recurso executadas no recurso ou dentro de um recurso. No Amazon S3, os eventos de dados registram a atividade da API no nível do objeto para buckets individuais. O CloudTrail é compatível com um subconjunto de operações de API no nível do objeto do Amazon S3 como `GetObject`, `DeleteObject` e `PutObject`. Para obter mais informações sobre como o CloudTrail funciona com o Amazon S3, consulte [Registrar chamadas de API do Amazon S3 em log usando AWS CloudTrail](cloudtrail-logging.md). No console do Amazon S3, você também pode configurar seus buckets do S3 para [Habilitar o log de eventos do CloudTrail para buckets e objetos do S3](enable-cloudtrail-logging-for-s3.md).  
O AWS Config fornece uma regra gerenciada (`cloudtrail-s3-dataevents-enabled`) que você pode usar para confirmar que pelo menos uma trilha do CloudTrail está registrando eventos de dados para seus buckets do S3. Para obter mais informações, consulte [https://docs.aws.amazon.com//config/latest/developerguide/cloudtrail-s3-dataevents-enabled.html](https://docs.aws.amazon.com//config/latest/developerguide/cloudtrail-s3-dataevents-enabled.html) no *Guia do desenvolvedor do AWS Config*.

**Habilitar o AWS Config**  
Muitas das práticas recomendadas listadas neste tópico sugerem criar regras do AWS Config. O AWS Config ajuda a avaliar, fazer auditoria e analisar as configurações de seus recursos da AWS. O AWS Config monitora as configurações de recurso, para que seja possível avaliar as configurações gravadas com relação às configurações seguras desejadas. Com o AWS Config, você pode fazer o seguinte:   
+ Revisar as alterações nas configurações e nas relações entre recursos da AWS
+ Investigar históricos detalhados de configurações de recursos
+ Determinar sua conformidade geral com relação às configurações especificadas nas diretrizes internas.
  
O uso do AWS Config pode ajudar a simplificar a auditoria de conformidade, a análise de segurança, o gerenciamento de alterações e a solução de problemas operacionais. Para obter mais informações, consulte [Configuração do AWS Config com o console](https://docs.aws.amazon.com/config/latest/developerguide/gs-console.html) no *Guia do desenvolvedor do AWS Config*. Ao especificar os tipos de recurso que devem ser registrados, inclua os recursos do Amazon S3.  
As regras gerenciadas do AWS Config só oferecem suporte a buckets de uso geral ao avaliar os recursos do Amazon S3. O AWS Config não registra alterações de configuração em buckets de diretório. Para obter mais informações, consulte [AWS Config Managed Rules](https://docs.aws.amazon.com//config/latest/developerguide/evaluate-config_use-managed-rules.html) e [List of AWS Config Managed Rules](https://docs.aws.amazon.com//config/latest/developerguide/managed-rules-by-aws-config.html) no *Guia do desenvolvedor do AWS Config*.
Para obter um exemplo de como usar o AWS Config, consulte [Como usar o AWS Config para monitorar e responder a buckets do Amazon S3 que permitem acesso público](https://aws.amazon.com/blogs/security/how-to-use-aws-config-to-monitor-for-and-respond-to-amazon-s3-buckets-allowing-public-access/) no *Blog de segurança da AWS*. 

**Uso da Lente de Armazenamento do S3**  
A Lente de Armazenamento do S3 é um recurso de análise de armazenamento em nuvem que você pode usar para obter visibilidade em toda a organização sobre o uso e a atividade do armazenamento de objetos. A Lente de Armazenamento do S3 também analisa as métricas para fornecer recomendações contextuais que você pode usar para otimizar os custos de armazenamento e aplicar as práticas recomendadas de proteção de dados.   
Com a Lente de Armazenamento do S3, é possível usar métricas para gerar insights resumidos, como descobrir quanto armazenamento você tem em toda a organização ou quais são os buckets e prefixos que mais crescem. Você também pode usar as métricas da Lente de Armazenamento do S3 para identificar oportunidades de otimização de custos, implementar práticas recomendadas de proteção de dados e gerenciamento de acesso, e melhorar a performance das workloads de aplicações.   
Por exemplo, você pode identificar buckets que não têm regras de ciclo de vida do S3 para interromper carregamentos fracionados que estão incompletos há mais de sete dias. Você também pode identificar buckets que não estão seguindo as práticas recomendadas de proteção de dados, como usar a Replicação do S3 ou o Versionamento do S3. Para obter mais informações, consulte [ Noções básicas do Amazon S3 Storage Lens](https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage_lens_basics_metrics_recommendations.html).

**Monitorar as recomendações de segurança da AWS**  
Recomendamos verificar regularmente as recomendações de segurança publicadas no Trusted Advisor para sua Conta da AWS. Especificamente, procure avisos sobre buckets do Amazon S3 com “permissões de acesso em aberto”. É possível fazer isso de maneira programática usando [https://docs.aws.amazon.com/cli/latest/reference/support/describe-trusted-advisor-checks.html](https://docs.aws.amazon.com/cli/latest/reference/support/describe-trusted-advisor-checks.html).  
Além disso, monitore ativamente o endereço de e-mail registrado como principal para cada uma de suas Contas da AWS. A AWS usa esse endereço de e-mail para entrar em contato sobre problemas de segurança emergentes que poderiam afetar você.  
Problemas operacionais da AWS com grande impacto são publicados no [AWS Health Dashboard Service Health](https://status.aws.amazon.com/). Eles também são publicados em contas individuais por meio do AWS Health Dashboard. Para obter mais informações, consulte a [a documentação do AWS Health](https://docs.aws.amazon.com/health/).

## Monitorar a segurança dos dados com serviços de segurança gerenciados da AWS
<a name="monitoring-data-security"></a>

Vários serviços gerenciados de segurança da AWS podem ajudar a identificar, avaliar e monitorar os riscos de segurança e conformidade dos dados do Amazon S3. Esses serviços também podem ajudar você a proteger seus dados contra esses riscos. Esses serviços incluem recursos automatizados de detecção, monitoramento e proteção que são projetados para escalar desde recursos do Amazon S3 para uma única Conta da AWS até recursos para organizações que abrangem milhares de Contas da AWS.

Os serviços de detecção e resposta da AWS podem ajudar a identificar possíveis configurações incorretas de segurança, ameaças ou comportamentos inesperados, para que você possa responder rapidamente a atividades possivelmente não autorizadas ou mal-intencionadas em seu ambiente. Os serviços de proteção de dados da AWS podem ajudar a monitorar e proteger seus dados, contas e workloads contra o acesso não autorizado. Eles também podem ajudar a descobrir dados sigilosos, como informações de identificação pessoal (PII), em seu conjunto de dados do Amazon S3.

Para ajudar a identificar e avaliar riscos de segurança e conformidade de dados, os serviços de segurança gerenciados da AWS geram descobertas para notificar você sobre possíveis eventos ou problemas de segurança com os dados do Amazon S3. As descobertas fornecem detalhes relevantes que você pode usar para investigar, avaliar e tomar medidas com relação a esses riscos de acordo com seus fluxos de trabalho e políticas de resposta a incidentes. É possível acessar os dados das descobertas diretamente usando cada serviço. Também é possível enviar os dados para outras aplicações, serviços e sistemas, como o sistema de gerenciamento de incidentes e eventos de segurança (SIEM).

Para monitorar a segurança dos dados do Amazon S3, considere usar estes serviços de segurança gerenciados da AWS.

**Amazon GuardDuty**  
O Amazon GuardDuty é um serviço de detecção de ameaças que monitora continuamente suas Contas da AWS e workloads em busca de atividades mal-intencionadas e fornece descobertas de segurança detalhadas para visibilidade e correção.  
Com o recurso de proteção do S3 no GuardDuty, é possível configurar o GuardDuty para analisar eventos de gerenciamento e de dados do AWS CloudTrail para os recursos do Amazon S3. Depois, o GuardDuty monitora esses eventos em busca de atividades mal-intencionadas e suspeitas. Para fundamentar a análise e identificar possíveis riscos de segurança, o GuardDuty usa feeds de inteligência de ameaças e machine learning.  
O GuardDuty pode monitorar diferentes tipos de atividade para os recursos do Amazon S3. Por exemplo, os eventos de gerenciamento do CloudTrail para o Amazon S3 incluem operações em nível de bucket, como `ListBuckets`, `DeleteBucket` e `PutBucketReplication`. Os eventos de dados do CloudTrail para o Amazon S3 incluem operações em nível de objeto, como `GetObject`, `ListObjects` e `PutObject`. Se o GuardDuty detectar atividades anômalas ou possivelmente mal-intencionadas, ele gerará uma descoberta para notificar você.  
Para obter mais informações, consulte [Proteção do Amazon S3 no Amazon GuardDuty](https://docs.aws.amazon.com/guardduty/latest/ug/s3-protection.html) no *Guia do usuário do Amazon GuardDuty*.

**Amazon Detective**  
O Amazon Detective simplifica o processo investigativo e ajuda você a conduzir investigações de segurança mais rápidas e eficazes. O Detective fornece agregações de dados, resumos e contexto predefinidos que podem ajudar a analisar e avaliar a natureza e a extensão dos possíveis problemas de segurança.  
O Detective extrai automaticamente eventos baseados em tempo, como chamadas de API do AWS CloudTrail e logs de fluxo da Amazon VPC para os recursos da AWS. Ele também ingere descobertas geradas pelo Amazon GuardDuty. Depois, o Detective usa machine learning, análise estatística e teoria de grafos para gerar visualizações que ajudam você a conduzir investigações de segurança eficazes com maior rapidez.  
Essas visualizações fornecem uma visão unificada e interativa dos comportamentos dos recursos e das interações entre eles ao longo do tempo. É possível explorar esse grafo de comportamento para examinar ações possivelmente mal-intencionadas, como tentativas malsucedidas de login ou chamadas de API suspeitas. Também é possível ver como essas ações afetam recursos, como buckets e objetos do S3.  
Para obter mais informações, consulte o [Guia de administração do Amazon Detective](https://docs.aws.amazon.com/detective/latest/adminguide/what-is-detective.html).

**IAM Access Analyzer**  
O AWS Identity and Access Management Access Analyzer (IAM Access Analyzer) pode ajudar a identificar os recursos compartilhados com uma entidade externa. Também é possível usar o IAM Access Analyzer para validar as políticas do IAM em relação à gramática de políticas e às práticas recomendadas, além de gerar políticas do IAM com base na atividade de acesso nos logs do AWS CloudTrail.  
O IAM Access Analyzer usa raciocínio baseado em lógica para analisar políticas de recursos em seu ambiente da AWS, como políticas de bucket. Com o IAM Access Analyzer para S3, você recebe alertas quando um bucket do S3 é configurado para permitir o acesso a qualquer pessoa na internet ou a outras Contas da AWS, incluindo contas fora da organização. Por exemplo, o IAM Access Analyzer para S3 pode relatar que um bucket tem acesso de leitura ou gravação fornecido por meio de uma lista de controle de acesso (ACL) de bucket, uma política de bucket, uma política de ponto de acesso multirregional ou uma política de ponto de acesso. Para cada bucket público ou compartilhado, você recebe descobertas que indicam a origem e o nível de acesso público ou compartilhado. Com essas descobertas, você pode tomar medidas corretivas imediatas e precisas para restaurar o acesso ao bucket da forma desejada.  
Para obter mais informações, consulte [Revisar o acesso de bucket usando o IAM Access Analyzer para S3](access-analyzer.md).

**Amazon Macie**  
O Amazon Macie é um serviço de segurança que descobre dados sigilosos usando machine learning e correspondência entre padrões. O Macie fornece visibilidade sobre os riscos de segurança de dados e permite a proteção automatizada contra esses riscos. Com o Macie, é possível automatizar a descoberta e a emissão de relatórios de dados sigilosos em seu patrimônio de dados do Amazon S3 para compreender melhor os dados armazenados pela organização no S3.  
Para detectar dados sigilosos com o Macie, é possível usar técnicas e critérios incorporados projetados para detectar uma lista grande e crescente de tipos de dados sigilosos para muitos países e regiões. Esses tipos de dados sigilosos incluem vários tipos de informações de identificação pessoal (PII), dados financeiros e dados de credenciais. Também é possível usar critérios personalizados definidos por você: expressões regulares que definem padrões de texto com os quais deve haver correspondência e, opcionalmente, sequências de caracteres e regras de proximidade que refinam os resultados.  
Se o Macie detectar dados sigilosos em um objeto do S3, ele gerará uma descoberta de segurança para notificar você. Essa descoberta fornece informações sobre o objeto afetado, os tipos e o número de ocorrências dos dados sigilosos encontrados pelo Macie e detalhes adicionais para ajudar você a investigar o bucket e o objeto do S3 afetados. Para obter mais informações, consulte o [Guia do usuário da Amazon Macie](https://docs.aws.amazon.com/macie/latest/user/what-is-macie.html).

**AWS Security Hub CSPM**  
O AWS Security Hub CSPM é um serviço de gerenciamento de procedimento de segurança que realiza verificações de práticas recomendadas de segurança, agrega alertas e descobertas de várias fontes em um único formato e permite a correção automatizada.  
O CSPM do Security Hub coleta e fornece dados de descobertas de segurança de Serviços da AWS e soluções de segurança do AWS Partner Network integradas, como Amazon Detective, Amazon GuardDuty, analisador de acesso do IAM e Amazon Macie. Ele também gera suas próprias descobertas executando verificações de segurança automatizadas e contínuas com base nas práticas recomendadas da AWS e em padrões compatíveis do setor.  
Depois, o CSPM do Security Hub correlaciona e consolida as descobertas nos provedores para ajudar a priorizar e processar as descobertas mais significativas. Ele também aceita ações personalizadas, que você pode usar para invocar respostas ou ações de correção para classes específicas de descobertas.  
Com o CSPM do Security Hub, é possível avaliar o status de segurança e conformidade dos recursos do Amazon S3 e fazer isso como parte de uma análise mais ampla do procedimento de segurança da organização em Regiões da AWS individuais e em várias regiões. Isso inclui analisar as tendências de segurança e identificar os problemas de segurança de maior prioridade. Também é possível agregar descobertas de várias Regiões da AWS e monitorar e processar dados de descobertas agregadas de uma única região.  
Para obter mais informações, acesse [Controles do Amazon Simple Storage Service](https://docs.aws.amazon.com/securityhub/latest/userguide/s3-controls.html) no *Guia do usuário do AWS Security Hub CSPM*.

# Proteção de dados no Amazon S3
<a name="DataDurability"></a>

O Amazon S3 fornece uma infraestrutura de armazenamento resiliente projetada para armazenamento de dados de missão crítica e primários. S3 Standard, S3 Intelligent-Tiering, S3 Standard – IA, S3 Glacier Instant Retrieval, S3 Glacier Flexieval Retrieval e S3 Glacier Deep Archive armazenam objetos redundantemente em vários dispositivos em um mínimo de três zonas de disponibilidade de uma Região da AWS. Uma zona de disponibilidade é um ou mais datacenters discretos com energia, redes e conectividade redundantes em uma Região da AWS. As zonas de disponibilidade são fisicamente separadas por uma distância considerável, de muitos quilômetros, de qualquer outra zona de disponibilidade, embora todas estejam a até 100 quilômetros de distância uma da outra. A classe de armazenamento S3 One Zone – IA armazena dados de forma redundante em vários dispositivos dentro de uma única zona de disponibilidade. Esses serviços são projetados para lidar com falhas simultâneas de dispositivos, detectando e reparando rapidamente qualquer redundância perdida, além de verificar regularmente a integridade dos dados usando somas de verificação.

O armazenamento Amazon S3 Standard oferece os seguintes recursos: 
+ Respaldado pelo [Acordo de Nível de Serviço do Amazon S3.](https://aws.amazon.com/s3/sla/)
+ Projetado para fornecer 99,999999999% de durabilidade e 99,99% de disponibilidade dos objetos em determinado ano.
+ S3 Standard, S3 Intelligent-Tiering, S3 Standard – IA, S3 Glacier Instant Retrieval, S3 Glacier Flexible Retrieval e S3 Glacier Deep Archive foram projetados para sustentar dados em caso de perda de uma zona de disponibilidade do Amazon S3 inteira.

O Amazon S3 protege ainda mais seus dados usando o versionamento. O versionamento pode ser usado para preservar, recuperar e restaurar todas as versões de cada objeto armazenado no bucket do Amazon S3. Com o versionamento, você pode se recuperar, facilmente, de ações não intencionais do usuário e de falhas de aplicativo. Por padrão, as solicitações recuperam a versão gravada mais recente. Você pode recuperar as versões mais antigas de um objeto, especificando uma versão do objeto em uma solicitação. 

Além do Versionamento do S3, você também pode usar o Bloqueio de Objeto do Amazon S3 e a Replicação do S3 para proteger seus dados. Para obter mais informações, consulte [Proteção de dados no Amazon S3](data-protection.md).

Para fins de proteção de dados, recomendamos que você proteja as credenciais da sua Conta da AWS e configure contas de usuário individuais com o AWS Identity and Access Management de modo que cada usuário receba somente as permissões necessárias para cumprir suas funções.

Se você precisar de módulos criptográficos validados pelo FIPS 140-2 ao acessar a AWS por meio de uma interface de linha de comando ou uma API, use um endpoint do FIPS. Para obter mais informações sobre endpoints do FIPS, consulte [Federal Information Processing Standard (FIPS) 140-2](https://aws.amazon.com/compliance/fips/).

As melhores práticas de segurança a seguir também abordam a proteção de dados no Amazon S3:
+ [Implement server-side encryption](security-best-practices.md#server-side)
+ [Enforce encryption of data in transit](security-best-practices.md#transit)
+ [Consider using Macie with Amazon S3](security-best-practices.md#macie)
+ [Identify and audit all your Amazon S3 buckets](security-best-practices.md#audit)
+ [Monitor Amazon Web Services security advisories](security-best-practices.md#advisories)

# Proteger dados com criptografia
<a name="UsingEncryption"></a>

**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 CloudTrail, no Inventário 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 CLI e em SDKs da AWS. Para obter mais informações, consulte [Perguntas frequentes sobre criptografia padrão](https://docs.aws.amazon.com/AmazonS3/latest/userguide/default-encryption-faq.html).

A proteção de dados refere-se à proteção enquanto eles estão em trânsito (à medida que são transferidos para e do Amazon S3) e em repouso (enquanto estão armazenados em discos em datacenters do Amazon S3). É possível proteger dados em trânsito usando Secure Socket Layer/Transport Layer Security (SSL/TLS), inclusive a troca de chaves híbrida pós-quântica ou a criptografia do lado do cliente. Para proteger dados em repouso no Amazon S3, você tem as seguintes opções:
+ **Criptografia do lado do servidor**: o Amazon S3 criptografa os objetos antes de salvá-los em discos em seus datacenters da AWS e descriptografa-os quando você os baixa.

  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 atualizar 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.

  Para ter mais informações sobre a alteração da configuração padrão de criptografia para buckets de uso geral, consulte [Configurar a criptografia padrão](default-bucket-encryption.md). 

  Quando você altera a configuração de criptografia padrão do bucket para SSE-KMS, o tipo de criptografia dos objetos do Amazon S3 existentes no bucket não é alterado. Para alterar o tipo de criptografia de objetos preexistentes depois de atualizar a configuração padrão de criptografia para SSE-KMS, use o recurso Operações em Lote do Amazon S3. Basta fornecer uma lista de objetos ao recurso Operações em Lote do S3 para que ele chame a respectiva operação de API. É possível usar a ação [Copiar objetos](batch-ops-copy-object.md) para copiar objetos existentes, gravando-os de volta no mesmo bucket que os objetos criptografados por SSE-KMS. Um único trabalho do Batch Operations pode realizar a operação especificada em bilhões de objetos. Para ter mais informações, consulte [Executar operações de objetos em massa com o Operações em Lote](batch-ops.md) e a publicação [How to retroactively encrypt existing objects in Amazon S3 using S3 Inventory, Amazon Athena, and S3 Batch Operations](https://aws.amazon.com/blogs/security/how-to-retroactively-encrypt-existing-objects-in-amazon-s3-using-s3-inventory-amazon-athena-and-s3-batch-operations/) do *Blog do AWS Storage*. 

  Para obter mais informações sobre cada opção de criptografia do lado do servidor, consulte [Proteger os dados usando criptografia do lado do servidor](serv-side-encryption.md).

  Para configurar a criptografia do lado do servidor, consulte:
  + [Especificar a criptografia do lado do servidor com chaves gerenciadas pelo Amazon S3 (SSE-S3)](specifying-s3-encryption.md)
  + [Especificação de criptografia no lado do servidor com o AWS KMS (SSE-KMS)](specifying-kms-encryption.md)
  + [Especificar criptografia de camada dupla do lado do servidor com chaves do AWS KMS (DSSE-KMS)](specifying-dsse-encryption.md)
  + [Especificação de criptografia no lado do servidor com chaves fornecidas pelo cliente (SSE-C).](specifying-s3-c-encryption.md)

  
+ **Criptografia do lado do cliente**: você criptografa dados do lado do cliente e faz upload dos dados criptografados no Amazon S3. Nesse caso, você gerencia o processo de criptografia, as chaves de criptografia e as ferramentas relacionadas.

  Para configurar a criptografia do lado do cliente, consulte [Proteger dados usando a criptografia do lado do cliente](UsingClientSideEncryption.md).

Para ver qual porcentagem dos seus bytes de armazenamento estão criptografados, você pode usar as métricas da Lente de Armazenamento do Amazon S3. A Lente de Armazenamento do S3 é um recurso de análise de armazenamento em nuvem que você pode usar para obter visibilidade em toda a organização sobre o uso e a atividade do armazenamento de objetos. Para obter mais informações, consulte [ Avaliar a atividade e o uso do armazenamento com o S3 Storage Lens](https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage_lens?icmpid=docs_s3_user_guide_UsingEncryption.html). Para obter uma lista completa de métricas, consulte o [Glossário de métricas da Lente de Armazenamento do S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage_lens_metrics_glossary.html?icmpid=docs_s3_user_guide_UsingEncryption).

Para ter mais informações sobre criptografia do lado do servidor, criptografia do lado do cliente e criptografia em trânsito, analise os tópicos a seguir.

**Topics**
+ [Proteger os dados usando criptografia do lado do servidor](serv-side-encryption.md)
+ [Proteger dados usando a criptografia do lado do cliente](UsingClientSideEncryption.md)
+ [Proteger dados em trânsito com criptografia](UsingEncryptionInTransit.md)

# Proteger os dados usando criptografia do lado do servidor
<a name="serv-side-encryption"></a>

**Importante**  
A partir de abril de 2026, a AWS desabilitará a criptografia do lado do servidor com chaves fornecidas pelo cliente (SSE-C) para todos os buckets novos. Além disso, a criptografia SSE-C será desabilitada para todos os buckets existentes em Contas da AWS que não tenham dados criptografados por SSE-C. Com essas mudanças, as poucas aplicações que precisam da criptografia SSE-C deverão habilitar deliberadamente o uso do SSE-C por meio da API [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html) após a criação do bucket. Nesses casos, talvez seja necessário atualizar scripts de automação, modelos do CloudFormation ou outras ferramentas de configuração de infraestrutura para definir essas configurações. Para ter mais informações, consulte a publicação do [Blog do AWS Storage](https://aws.amazon.com/blogs/storage/advanced-notice-amazon-s3-to-disable-the-use-of-sse-c-encryption-by-default-for-all-new-buckets-and-select-existing-buckets-in-april-2026/).

**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 CloudTrail, no Inventário 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 CLI e em SDKs da AWS. Para obter mais informações, consulte [Perguntas frequentes sobre criptografia padrão](https://docs.aws.amazon.com/AmazonS3/latest/userguide/default-encryption-faq.html).

A criptografia do lado do servidor é a criptografia de dados em seu destino pela aplicação ou serviço que os recebe. O Amazon S3 criptografa os dados no nível do objeto no momento em que os grava em discos nos datacenters da AWS e descriptografa-os quando você os acessa. Contanto que você autentique sua solicitação e tenha permissões de acesso, não há diferença na forma de acesso aos objetos criptografados ou não criptografados. Por exemplo, se você compartilhar seus objetos usando um URL pré-assinado, esse URL funcionará da mesma forma para objetos criptografados e não criptografados. Além disso, quando você lista objetos no bucket, as operações de API de lista retornam uma lista de todos os objetos, independentemente de estarem ou não criptografados.

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 atualizar 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.

Para ter mais informações sobre a alteração da configuração padrão de criptografia para buckets de uso geral, consulte [Configurar a criptografia padrão](default-bucket-encryption.md). 

Quando você altera a configuração de criptografia padrão do bucket para SSE-KMS, o tipo de criptografia dos objetos do Amazon S3 existentes no bucket não é alterado. Para alterar o tipo de criptografia de objetos preexistentes depois de atualizar a configuração padrão de criptografia para SSE-KMS, use o recurso Operações em Lote do Amazon S3. Basta fornecer uma lista de objetos ao recurso Operações em Lote do S3 para que ele chame a respectiva operação de API. É possível usar a ação [Copiar objetos](batch-ops-copy-object.md) para copiar objetos existentes, gravando-os de volta no mesmo bucket que os objetos criptografados por SSE-KMS. Um único trabalho do Batch Operations pode realizar a operação especificada em bilhões de objetos. Para ter mais informações, consulte [Executar operações de objetos em massa com o Operações em Lote](batch-ops.md) e a publicação [How to retroactively encrypt existing objects in Amazon S3 using S3 Inventory, Amazon Athena, and S3 Batch Operations](https://aws.amazon.com/blogs/security/how-to-retroactively-encrypt-existing-objects-in-amazon-s3-using-s3-inventory-amazon-athena-and-s3-batch-operations/) do *Blog do AWS Storage*. 

**nota**  
Não é possível aplicar diferentes tipos de criptografia de servidor ao mesmo objeto simultaneamente.

Se você precisar criptografar os objetos existentes, use as operações em lote do S3 e o inventário do S3. Para obter mais informações, consulte [Criptografar objetos com as operações em lote do Amazon S3](https://aws.amazon.com/blogs/storage/encrypting-objects-with-amazon-s3-batch-operations/) e [Executar operações de objetos em massa com o Operações em Lote](batch-ops.md).

Ao armazenar dados no Amazon S3, há quatro opções mutuamente excludentes de criptografia do lado do servidor, dependendo de como você opta por gerenciar as chaves de criptografia e do número de camadas de criptografia que deseja aplicar.

**Criptografia do lado do servidor com chaves gerenciadas pelo Amazon S3 (SSE-S3)**  
Todos os buckets do Amazon S3 têm criptografia configurada por padrão. A opção padrão para a criptografia do lado do servidor é com as chaves gerenciadas pelo Amazon S3 (SSE-S3). Cada objeto é criptografado com uma chave exclusiva. Como uma proteção adicional, a SSE-S3 criptografa a própria chave com uma chave-raiz que alterna regularmente. A SSE-S3 usa uma das cifras de bloco mais fortes disponíveis, o padrão de criptografia avançada de 256 bits (AES-256), para criptografar os dados. Para obter mais informações, consulte [Usar a criptografia do lado do servidor com chaves gerenciadas pelo Amazon S3 (SSE-S3)](UsingServerSideEncryption.md).

**Criptografia no lado do servidor com chaves do AWS Key Management Service (AWS KMS) (SSE-KMS)**  
A criptografia do lado do servidor com o AWS KMS keys (SSE-KMS) é fornecida por meio de uma integração do serviço AWS KMS com o Amazon S3. Com o AWS KMS, você tem mais controle sobre suas chaves. Por exemplo, você pode visualizar chaves separadas, editar políticas de controle e seguir as chaves no AWS CloudTrail. Além disso, é possível criar e gerenciar chaves gerenciadas pelo cliente ou usar Chaves gerenciadas pela AWS que são exclusivas para você, para o seu serviço e para a sua região. Para obter mais informações, consulte [Usar criptografia do lado do servidor com o AWS KMS (SSE-KMS)](UsingKMSEncryption.md).

**Criptografia de camada dupla do lado do servidor com chaves do AWS Key Management Service (AWS KMS) (DSSE-KMS)**  
A criptografia de camada dupla do lado do servidor com AWS KMS keys (DSSE-KMS) é semelhante ao SSE-KMS, mas o DSSE-KMS aplica duas camadas independentes de criptografia AES-256 em vez de apenas uma: primeiro usando uma chave de criptografia de dados do AWS KMS e, depois, usando uma chave de criptografia separada gerenciada pelo Amazon S3. Como as duas camadas de criptografia são aplicadas a um objeto do lado do servidor, você pode usar uma grande variedade de ferramentas e Serviços da AWS para analisar dados no S3 enquanto usa um método de criptografia capaz de atender aos seus requisitos de conformidade. Para obter mais informações, consulte [Usar criptografia de camada dupla do lado do servidor com chaves do AWS KMS (DSSE-KMS)](UsingDSSEncryption.md).

**Criptografia do lado do servidor com chaves fornecidas pelo cliente (SSE-C)**  
Com a criptografia do lado do servidor com chaves fornecidas pelo cliente (SSE-C), você gerencia as chaves de criptografia e o Amazon S3 gerencia a criptografia, ao gravar em discos, e a descriptografia, quando você acessa os objetos. Para obter mais informações, consulte [Como usar criptografia do lado do servidor com chaves fornecidas pelo cliente (SSE-C)](ServerSideEncryptionCustomerKeys.md).

**nota**  
Ao usar pontos de acesso para sistemas de arquivos do Amazon FSx utilizando o recurso Pontos de Acesso S3, você tem uma opção para criptografia do lado do servidor.  
Todos os sistemas de arquivos do Amazon FSx têm criptografia configurada por padrão e são criptografados em repouso com chaves gerenciadas por meio do AWS Key Management Service. Os dados são automaticamente criptografados e descriptografados pelo sistema de arquivos à medida que são gravados e lidos no sistema de arquivos. Esses processos são tratados de maneira transparente pelo Amazon FSx.

# Definir o comportamento padrão da criptografia para os buckets do Amazon S3
<a name="bucket-encryption"></a>

**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 CloudTrail, no Inventário 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 CLI e em SDKs da AWS. Para obter mais informações, consulte [Perguntas frequentes sobre criptografia padrão](https://docs.aws.amazon.com/AmazonS3/latest/userguide/default-encryption-faq.html).

Todos os buckets do Amazon S3 têm a criptografia configurada por padrão, e os objetos são automaticamente criptografados usando criptografia do lado do servidor, com chaves gerenciadas do Amazon S3 (SSE-S3). Essa configuração de criptografia se aplica a todos os objetos em seus buckets do Amazon S3.

Se você precisar de maior controle sobre suas chaves, como gerenciar a alternância de chaves e as concessões de políticas de acesso, poderá optar por usar a criptografia do lado do servidor chaves do AWS Key Management Service (AWS KMS) (SSE-KMS) ou a criptografia de camada dupla do lado do servidor com chaves do AWS KMS (DSSE-KMS). Para ter mais informações sobre edição de chaves do KMS, consulte [Editar chaves](https://docs.aws.amazon.com/kms/latest/developerguide/editing-keys.html) no *Guia do desenvolvedor do AWS Key Management Service*. 

**nota**  
Alteramos os buckets para criptografar automaticamente uploads de novos objetos. Se você criou anteriormente um bucket sem criptografia padrão, o Amazon S3 ativará a criptografia por padrão para o bucket usando SSE-S3. Não haverá nenhuma alteração na configuração de criptografia padrão para um bucket existente que já tenha a criptografia SSE-S3 ou SSE-KMS configurada. Se quiser criptografar seus objetos com a SSE-KMS, deverá alterar o tipo de criptografia nas configurações do bucket. Para obter mais informações, consulte [Usar criptografia do lado do servidor com o AWS KMS (SSE-KMS)](UsingKMSEncryption.md). 

Ao configurar seu bucket para usar criptografia padrão com a SSE-KMS, você também pode ativar o recurso de chaves de bucket do S3 para diminuir o tráfego de solicitações do Amazon S3 para o AWS KMS e reduzir o custo de criptografia. Para obter mais informações, consulte [Redução do custo do SSE-KMS com chaves de bucket do Amazon S3](bucket-key.md).

Para identificar buckets que têm SSE-KMS habilitada como criptografia padrão, você pode usar as métricas da Lente de Armazenamento do Amazon S3. A Lente de Armazenamento do S3 é um recurso de análise de armazenamento em nuvem que você pode usar para obter visibilidade em toda a organização sobre o uso e a atividade do armazenamento de objetos. Para obter mais informações, consulte [Como usar a Lente de Armazenamento do S3 para proteger seus dados](https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-lens-data-protection.html?icmpid=docs_s3_user_guide_bucket-encryption.html).

Quando você usa a criptografia no lado do servidor, o Amazon S3 criptografa um objeto antes de salvá-lo no disco e o descriptografa quando você o baixa. Para ter mais informações sobre como proteger dados usando a criptografia no lado do servidor e o gerenciamento de chaves de criptografia, consulte [Proteger os dados usando criptografia do lado do servidor](serv-side-encryption.md).

Para ter mais informações sobre permissões necessárias para criptografia padrão, consulte [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html) na *Referência da API do Amazon Simple Storage Service*.

Você pode configurar o comportamento da criptografia padrão do Amazon S3 para um bucket do S3 usando o console do Amazon S3, os AWS SDKs, a API REST do Amazon S3 e a AWS Command Line Interface (AWS CLI).

**Criptografar objetos existentes**  
Para criptografar objetos existentes não criptografados do Amazon S3, você pode usar Operações em Lote do Amazon S3. Você fornece uma lista de objetos às operações em lote do S3 que, por sua vez, chamam a respectiva API para realizar a operação especificada. É possível usar a [operação Copy do Batch Operations](https://docs.aws.amazon.com/AmazonS3/latest/userguide/batch-ops-copy-object.html) para copiar objetos não criptografados existentes e gravá-los de volta no mesmo bucket que os objetos criptografados. Um único trabalho do Batch Operations pode realizar a operação especificada em bilhões de objetos. Para obter mais informações, consulte [Executar operações de objetos em massa com o Operações em Lote](batch-ops.md) e a publicação do *Blog de armazenamento da AWS* [Criptografia de objetos existentes com o Amazon S3 Batch Operations](https://aws.amazon.com/blogs/storage/encrypting-objects-with-amazon-s3-batch-operations/).

Você também pode criptografar objetos existentes usando a operação de API `CopyObject` ou o comando `copy-object` da AWS CLI. Para obter mais informações, consulte a publicação do *Blog de armazenamento da AWS* [Criptografia de objetos existentes do Amazon S3 com a AWS CLI](https://aws.amazon.com/blogs/storage/encrypting-existing-amazon-s3-objects-with-the-aws-cli/).

**nota**  
Os buckets do Amazon S3 com criptografia definida como SSE-KMS não podem ser usados como buckets de destino para [Registrar em log as solicitações com registro em log de acesso ao servidor](ServerLogs.md). Somente a criptografia padrão SSE-S3 é suportada para buckets de destino do log de acesso do servidor.

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

Ao utilizar a criptografia para operações entre contas, esteja ciente do seguinte:
+ Se o nome do recurso da Amazon (ARN) da AWS KMS key ou alias não for fornecido no momento da solicitação nem por meio da configuração de criptografia padrão do bucket, a Chave gerenciada pela AWS (`aws/s3`) será utilizada.
+ Se você estiver fazendo upload ou acessando objetos do S3 usando entidades principais do AWS Identity and Access Management (IAM) que estão na mesma Conta da AWS que a sua chave do KMS, poderá usar a Chave gerenciada pela AWS (`aws/s3`). 
+ Se quiser conceder acesso entre contas aos seus objetos do S3, use uma chave gerenciada pelo cliente. Você pode configurar a política de uma chave gerenciada pelo cliente para permitir o acesso de outra conta.
+ Se estiver especificando uma chave do KMS gerenciada pelo cliente, recomendamos usar um ARN de chave do KMS totalmente qualificado. Se você usar um alias da chave do KMS, o AWS KMS resolverá a chave na conta do solicitante. Isso pode resultar em dados criptografados com uma chave do KMS pertencente ao solicitante, e não ao proprietário do bucket.
+ É necessário especificar uma chave para a qual você (o solicitante) recebeu a permissão `Encrypt`. 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 ter mais informações sobre quando usar as chaves gerenciadas pelo cliente e as chaves do KMS gerenciadas pela AWS, consulte [Devo usar uma Chave gerenciada pela AWS ou uma chave pelo cliente para criptografar meus objetos no Amazon S3?](https://aws.amazon.com/premiumsupport/knowledge-center/s3-object-encryption-keys/)

## Como usar a criptografia padrão com a replicação
<a name="bucket-encryption-replication"></a>

Ao habilitar a criptografia padrão para um bucket de destino de replicação, o seguinte comportamento de criptografia será aplicado:
+ Se os objetos no bucket de origem não estiverem criptografados, os objetos de réplica no bucket de destino serão criptografados usando as configurações de criptografia padrão do bucket de destino. Como resultado, as tags de entidade (ETags) dos objetos de origem diferem dos ETags dos objetos de réplica. Se você tiver aplicações que usam ETags, será necessário atualizar essas aplicações para considerar essa diferença.
+ Se os objetos no bucket de origem forem criptografados usando a criptografia do lado do servidor com chaves gerenciadas do Amazon S3 (SSE-S3), a criptografia do lado do servidor com chaves do AWS Key Management Service (AWS KMS) (SSE-KMS) ou a criptografia de camada dupla do lado do servidor com chaves do AWS KMS (DSSE-KMS), os objetos de réplica no bucket de destino usarão o mesmo tipo de criptografia que os objetos de origem. As configurações de criptografia padrão do bucket de destino não são usadas.

Para obter mais informações sobre como usar a criptografia padrão com SSE-KMS, consulte [Replicar objetos criptografados](replication-config-for-kms-objects.md).

## Usar Chaves de bucket do Amazon S3 com criptografia padrão
<a name="bucket-key-default-encryption"></a>

Quando você configura seu bucket para usar a SSE-KMS como o comportamento de criptografia padrão para novos objetos, você também pode configurar chaves de bucket do S3. As chaves de bucket do S3 diminuem o número de transações do Amazon S3 para o AWS KMS a fim de reduzir o custo da SSE-KMS. 

Quando você configura seu bucket para usar chaves de bucket do S3 para SSE-KMS em novos objetos, o AWS KMS gera uma chave no nível de bucket usada para criar uma [chave de dados](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#data-keys) exclusiva para objetos no bucket. Essa chave de bucket do S3 é usada por um período limitado no Amazon S3, reduzindo a necessidade do Amazon S3 fazer solicitações ao AWS KMS para concluir operações de criptografia. 

Para obter mais informações sobre como usar Chaves de bucket do S3, consulte [Uso de chaves de bucket do Amazon S3](bucket-key.md).

# Configurar a criptografia padrão
<a name="default-bucket-encryption"></a>

**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 CloudTrail, no Inventário 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 CLI e em SDKs da AWS. Para obter mais informações, consulte [Perguntas frequentes sobre criptografia padrão](https://docs.aws.amazon.com/AmazonS3/latest/userguide/default-encryption-faq.html).

Os buckets do Amazon S3 têm a criptografia configurada por padrão, e os novos objetos são automaticamente criptografados usando criptografia do lado do servidor, com chaves gerenciadas do Amazon S3 (SSE-S3). Essa criptografia se aplica a todos os novos objetos em seus buckets do Amazon S3 e não tem nenhum custo para você.

Se você precisar de maior controle sobre suas chaves de criptografia, como gerenciar a alternância de chaves e as concessões de políticas de acesso, poderá optar por usar a criptografia do lado do servidor com chaves do AWS Key Management Service (AWS KMS) (SSE-KMS) ou a criptografia de camada dupla do lado do servidor com chaves do AWS KMS (DSSE-KMS). Para obter mais informações sobre SSE-KMS, consulte [Especificação de criptografia no lado do servidor com o AWS KMS (SSE-KMS)](specifying-kms-encryption.md). Para ter mais informações sobre DSSE-KMS, consulte [Usar criptografia de camada dupla do lado do servidor com chaves do AWS KMS (DSSE-KMS)](UsingDSSEncryption.md). 

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

Ao definir a criptografia do bucket padrão como SSE-KMS, você também pode configurar uma chave de bucket do S3 para reduzir os custos de solicitação do AWS KMS. Para obter mais informações, consulte [Redução do custo do SSE-KMS com chaves de bucket do Amazon S3](bucket-key.md).

**nota**  
Se você usa [PutBucketEncryption](https://docs.aws.amazon.com//AmazonS3/latest/API/API_PutBucketEncryption.html) para definir a criptografia de bucket padrão como SSE-KMS, é necessário verificar se o ID da chave do KMS está correto. O Amazon S3 não valida o ID da chave do KMS fornecido nas solicitações PutBucketEncryption.

Não há cobranças adicionais para usar a criptografia padrão para buckets do S3. As solicitações para configurar o comportamento de criptografia padrão geram cobranças padrão de solicitação do Amazon S3. Para obter mais informações sobre preços, consulte [Preços do Amazon S3](https://aws.amazon.com/s3/pricing/). Para a SSE-KMS e DSSE-KMS, tarifas do AWS KMS podem ser aplicadas. Elas estão listadas em [Preços do AWS KMS](https://aws.amazon.com/kms/pricing/). 

A criptografia no lado do servidor com chaves fornecidas pelo cliente (SSE-C) não é compatível para criptografia padrão.

Você pode configurar a criptografia padrão do Amazon S3 para um bucket do S3 usando o console do Amazon S3, os AWS SDKs, a API REST do Amazon S3 e a AWS Command Line Interface (AWS CLI).

**Alterações feitas às observações antes de habilitar a criptografia padrão**  
Depois de habilitar a criptografia padrão para um bucket, o seguinte comportamento de criptografia será aplicado:
+ Não há alteração na criptografia dos objetos que existiam no bucket antes da ativação da criptografia padrão. 
+ Quando você faz upload de objetos após a ativação da criptografia padrão:
  + Se seus cabeçalhos de solicitação `PUT` não incluírem informações de criptografia, o Amazon S3 usará as configurações de criptografia padrão do bucket para criptografar os objetos. 
  + Se seus cabeçalhos de solicitação `PUT` incluírem informações de criptografia, o Amazon S3 usará as informações de criptografia da solicitação `PUT` para criptografar objetos antes de armazená-los no Amazon S3.
+ Se você usar a opção SSE-KMS ou a DSSE-KMS em sua configuração de criptografia padrão, poderão ser cobradas cotas de solicitações por segundo (RPS) do AWS KMS. Para ter mais informações sobre as cotas do AWS KMS e como solicitar um aumento de cota, consulte [Cotas](https://docs.aws.amazon.com/kms/latest/developerguide/limits.html) no *Guia do desenvolvedor do AWS Key Management Service*. 

**nota**  
Os objetos carregados antes da ativação da criptografia padrão não serão criptografados. Para ter informações sobre criptografia de objetos existentes, consulte [Definir o comportamento padrão da criptografia para os buckets do Amazon S3](bucket-encryption.md).

## Usar o console do S3
<a name="bucket-encryption-how-to-set-up-console"></a>

**Como configurar a criptografia padrão em um bucket do Amazon S3**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon S3 em [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. No painel de navegação à esquerda, escolha **Buckets**.

1. Na lista de **Buckets**, escolha o nome do bucket desejado. 

1. Escolha a guia **Properties (Propriedades)**.

1. Em **Default encryption (Criptografia padrão)**, escolha **Edit (Editar)**.

1. Para configurar a criptografia padrão, em **Tipo de criptografia**, selecione uma das seguintes opções: 
   + **Criptografia do lado do servidor com chaves gerenciadas pelo Amazon S3 (SSE-S3)**
   + **Criptografia no lado do servidor com chaves do AWS Key Management Service (SSE-KMS)**
   + **Criptografia de camada dupla do lado do servidor com chaves do AWS Key Management Service (DSSE-KMS)**
**Importante**  
Se você usar a opção SSE-KMS ou a DSSE-KMS em sua configuração de criptografia padrão, poderão ser cobradas 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](https://docs.aws.amazon.com/kms/latest/developerguide/limits.html) no *Guia do desenvolvedor do AWS Key Management Service*. 

   Os buckets e novos objetos são criptografados por padrão com o SSE-S3, a menos que você especifique outro tipo de criptografia padrão para eles. Para obter mais informações sobre criptografia padrão, consulte [Definir o comportamento padrão da criptografia para os buckets do Amazon S3](bucket-encryption.md).

   Para obter mais informações sobre como usar a criptografia no lado do servidor do Amazon S3 para criptografar seus dados, consulte [Usar a criptografia do lado do servidor com chaves gerenciadas pelo Amazon S3 (SSE-S3)](UsingServerSideEncryption.md).

1. Se você escolheu **Criptografia do lado do servidor com chaves do AWS Key Management Service (SSE-KMS)** ou **Criptografia de camada dupla do lado do servidor com chaves do AWS Key Management Service (DSSE-KMS)**, faça o seguinte: 

   1. Em **Chave do AWS KMS**, especifique sua chave do KMS de uma das seguintes maneiras:
      + Para escolher entre uma lista de chaves do KMS disponíveis, selecione **Escolher entre suas AWS KMS keys** e escolha sua **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](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#key-mgmt) no *Guia do desenvolvedor do AWS Key Management Service*.
      + Para inserir o ARN da chave do KMS, escolha **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](https://docs.aws.amazon.com//kms/latest/developerguide/create-keys.html) no * Guia do desenvolvedor do AWS Key Management Service*.
**Importante**  
Você só pode usar chaves do KMS habilitadas na mesma Região da AWS que o bucket. Quando você seleciona **Choose from your KMS keys **, (Escolher de suas chaves do KMS), o console do S3 lista somente 100 chaves do KMS por região. Se você tiver mais de 100 chaves do KMS na mesma região, será possível ver somente as primeiras 100 chaves do KMS no console do S3. Para usar uma chave do KMS que não esteja listada no console, escolha **Inserir o ARN da AWS KMS key** e insira o ARN da chave do KMS.  
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 ter mais informações sobre como usar a SSE-KMS com o Amazon S3, consulte [Usar criptografia do lado do servidor com o AWS KMS (SSE-KMS)](UsingKMSEncryption.md). Para ter mais informações sobre como usar a DSSE-KMS, consulte [Usar criptografia de camada dupla do lado do servidor com chaves do AWS KMS (DSSE-KMS)](UsingDSSEncryption.md).

   1. Ao configurar seu bucket para usar a criptografia padrão com a SSE-KMS, você também pode ativar a chave de bucket do S3. As chaves de bucket do S3 diminuem o custo de criptografia reduzindo o tráfego de solicitações 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](bucket-key.md).

      Para usar Chaves de bucket do S3, em **Bucket Key (Chave de bucket)**, escolha **Enable (Habilitar)**.
**nota**  
As chaves de bucket do S3 não comportam DSSE-KMS.

1. Escolha **Salvar alterações**.

## Como usar o AWS CLI
<a name="default-bucket-encryption-cli"></a>

Esses exemplos mostram como configurar a criptografia padrão usando SSE-S3 ou usando a SSE-KMS com uma chave de bucket do S3.

Para obter mais informações sobre criptografia padrão, consulte [Definir o comportamento padrão da criptografia para os buckets do Amazon S3](bucket-encryption.md). Para obter mais informações sobre o uso da AWS CLI para configurar a criptografia padrão, consulte [put-bucket-encryption](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-bucket-encryption.html).

**Example – Criptografia padrão com SSE-S3**  
Esse exemplo configura a criptografia de bucket padrão com chaves gerenciadas pelo Amazon S3.  

```
aws s3api put-bucket-encryption --bucket amzn-s3-demo-bucket --server-side-encryption-configuration '{
    "Rules": [
        {
            "ApplyServerSideEncryptionByDefault": {
                "SSEAlgorithm": "AES256"
            }
        }
    ]
}'
```

**Example – Criptografia padrão com SSE-KMS usando uma chave de bucket do S3**  
Esse exemplo configura a criptografia de bucket padrão com o SSE-KMS usando uma chave de bucket do S3.   

```
aws s3api put-bucket-encryption --bucket amzn-s3-demo-bucket --server-side-encryption-configuration '{
    "Rules": [
            {
                "ApplyServerSideEncryptionByDefault": {
                    "SSEAlgorithm": "aws:kms",
                    "KMSMasterKeyID": "KMS-Key-ARN"
                },
                "BucketKeyEnabled": true
            }
        ]
    }'
```

## Uso da API REST
<a name="bucket-encryption-how-to-set-up-api"></a>

Use a operação `PutBucketEncryption` da API REST para habilitar a criptografia padrão e definir o tipo de criptografia do lado do servidor a ser utilizado, ou seja, SSE-S3, SSE-KMS ou DSSE-KMS. 

Para obter mais informações, consulte [https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTencryption.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTencryption.html) na *Referência da API do Amazon Simple Storage Service*.

# Monitorar a criptografia padrão com o AWS CloudTrail e o Amazon EventBridge
<a name="bucket-encryption-tracking"></a>

**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 CloudTrail, no Inventário 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 CLI e em SDKs da AWS. Para obter mais informações, consulte [Perguntas frequentes sobre criptografia padrão](https://docs.aws.amazon.com/AmazonS3/latest/userguide/default-encryption-faq.html).

Você pode rastrear solicitações de configuração de criptografia padrão para buckets do Amazon S3 usando eventos do AWS CloudTrail. Os seguintes nomes de eventos de API são usados nos logs do CloudTrail:
+ `PutBucketEncryption`
+ `GetBucketEncryption`
+ `DeleteBucketEncryption`

Você também pode criar regras do EventBridge que correspondam aos eventos do CloudTrail para essas chamadas de API. Para obter mais informações sobre eventos do CloudTrail, consulte [Habilitar o registro em log de objetos em um bucket usando o console](enable-cloudtrail-logging-for-s3.md#enable-cloudtrail-events). Para ter mais informações sobre eventos do EventBridge, consulte [Eventos de Serviços da AWS](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-service-event.html).

Você pode usar logs do CloudTrail para ações do Amazon S3 no nível de objeto a fim de rastrear solicitações `PUT` e `POST` para o Amazon S3. Você pode usar essas ações para verificar se a criptografia padrão está sendo usada para criptografar objetos quando as solicitações `PUT` recebidas não têm cabeçalhos de criptografia.

Quando o Amazon S3 criptografa um objeto usando as configurações de criptografia padrão, o log inclui um dos seguintes campos como o par de nome-valor: `"SSEApplied":"Default_SSE_S3"`, `"SSEApplied":"Default_SSE_KMS"` ou `"SSEApplied":"Default_DSSE_KMS"`.

Quando o Amazon S3 criptografa um objeto usando os cabeçalhos de criptografia `PUT`, o log inclui um dos seguintes campos como par de nome-valor: `"SSEApplied":"SSE_S3"`, `"SSEApplied":"SSE_KMS"`, `"SSEApplied":"DSSE_KMS"` ou `"SSEApplied":"SSE_C"`. 

Para multipart uploads, essas informações estão incluídas nas solicitações de operação de API `InitiateMultipartUpload`. Para obter mais informações sobre como usar o CloudTrail e o CloudWatch, consulte [Registrar em log e monitorar no Amazon S3](monitoring-overview.md).

# Perguntas frequentes sobre criptografia padrão
<a name="default-encryption-faq"></a>

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. A SSE-S3, que usa criptografia AES-256 (Advanced Encryption Standard de 256 bits), é aplicada automaticamente a todos os novos buckets e a todos os buckets do S3 existentes que ainda não tenham a criptografia padrão configurada. 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 (AWS CLI) e nos AWS SDKs.

As seções a seguir respondem a perguntas sobre essa atualização. 

**O Amazon S3 altera as configurações de criptografia padrão para meus buckets existentes que já têm a criptografia padrão configurada?**  
Não. Não há nenhuma alteração na configuração de criptografia padrão para um bucket existente que já tenha a criptografia SSE-S3 ou a criptografia do lado do servidor com chaves do AWS Key Management Service (AWS KMS) (SSE-KMS) configuradas. Para obter mais informações sobre como definir o comportamento de criptografia padrão para buckets, consulte [Definir o comportamento padrão da criptografia para os buckets do Amazon S3](bucket-encryption.md). Para obter mais informações sobre configurações de criptografia SSE-S3 e SSE-KMS, consulte [Proteger os dados usando criptografia do lado do servidor](serv-side-encryption.md).

**A criptografia padrão é ativada em meus buckets existentes que não têm a criptografia padrão configurada?**  
Sim. O Amazon S3 agora configura a criptografia padrão em todos os buckets não criptografados para aplicar a criptografia do lado do servidor com chaves gerenciadas do S3 (SSE-S3) como o nível básico de criptografia para novos objetos carregados nesses buckets. Objetos que já estão em um bucket não criptografado existente não serão criptografados automaticamente.

**Como posso ver o status de criptografia padrão de novos uploads de objetos?**  
Atualmente, é possível visualizar o status de criptografia padrão de novos uploads de objetos 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 (AWS CLI) e em AWS SDKs.
+ Para ver seus eventos do CloudTrail, consulte [Visualizar eventos do CloudTrail no console do CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events-console.html) no *Guia do usuário do AWS CloudTrail*. Os logs do CloudTrail fornecem monitoramento de API para solicitações `PUT` e `POST` para o Amazon S3. Quando a criptografia padrão está sendo usada para criptografar objetos nos buckets, os logs do CloudTrail para solicitações de API `PUT` e `POST` incluem o seguinte campo como o par de nome-valor: `"SSEApplied":"Default_SSE_S3"`. 
+ Para visualizar o status de criptografia automática de novos uploads de objetos no Inventário do S3, configure um relatório do Inventário do S3 para incluir o campo de metadados **Encryption** (Criptografia), depois veja o status de criptografia de cada novo objeto no relatório. Para obter mais informações, consulte [Configurar o Inventário do Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/configure-inventory.html#storage-inventory-setting-up).
+ Para ver o status de criptografia automática de novos uploads de objetos na Lente de Armazenamento do S3, configure um painel da Lente de Armazenamento do S3 e veja as métricas **Encrypted bytes** (Bytes criptografados) **Encrypted object count** (Contagem de objetos criptografados) na categoria **Data protection** (Proteção de dados) do painel. Para obter mais informações, consulte [Usar o console do S3](storage_lens_creating_dashboard.md#storage_lens_console_creating) e [Exibição das métricas da lente de armazenamento do S3 nos painéis](storage_lens_view_metrics_dashboard.md).
+ Para ver o status da criptografia automática no nível do bucket no console do Amazon S3, verifique a **criptografia padrão** dos buckets do Amazon S3 no console do Amazon S3. Para obter mais informações, consulte [Configurar a criptografia padrão](default-bucket-encryption.md).
+ Para ver o status de criptografia automática como cabeçalho adicional de resposta da API do Amazon S3 na AWS Command Line Interface (AWS CLI) e em AWS SDKs, verifique o cabeçalho de resposta `x-amz-server-side-encryption` ao usar APIs de ação do objeto, como [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html) e [GetObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html). 

**O que preciso fazer para aproveitar essa mudança?**  
Você não precisa fazer nenhuma alteração em suas aplicações existentes. Como a criptografia padrão está habilitada para todos os seus buckets, todos os novos objetos enviados para o Amazon S3 serão criptografados automaticamente.

**Posso desativar a criptografia para os novos objetos que serão gravados no meu bucket?**  
Não. A SSE-S3 é o novo nível básico de criptografia aplicado a todos os novos objetos que são enviados para o bucket. Não é mais possível desativar a criptografia para novos uploads de objetos.

**Minhas cobranças serão afetadas?**  
Não. A criptografia padrão com SSE-S3 está disponível sem nenhum custo adicional. Serão cobrados o armazenamento, as solicitações e outros recursos do S3, como de costume. Para obter informações sobre preços, consulte [Definição de preços do Amazon S3](https://aws.amazon.com/s3/pricing/).

**O Amazon S3 vai criptografar meus objetos existentes que não estão criptografados?**  
Não. A partir de 5 de janeiro de 2023, o Amazon S3 criptografa automaticamente somente novos uploads de objetos. Para criptografar objetos existentes, você pode usar o recurso Operações em Lote do S3 para criar cópias criptografadas de seus objetos. Essas cópias criptografadas reterão os dados e o nome do objeto existente e serão criptografadas usando as chaves de criptografia que você especificar. Para obter mais detalhes, consulte [Criptografia de objetos com o recurso Operações em Lote do Amazon S3](https://aws.amazon.com/blogs/storage/encrypting-objects-with-amazon-s3-batch-operations/) no *blog de armazenamento da AWS*.

**Eu não habilitei a criptografia para meus buckets antes desse lançamento. Preciso mudar a forma como acesso os objetos?**  
Não. A criptografia padrão com SSE-S3 criptografa automaticamente seus dados à medida que são gravados no Amazon S3 e os descriptografa para você quando os acessa. Não há nenhuma alteração na forma como você acessa objetos que são criptografados automaticamente.

**Preciso mudar a forma como acesso meus objetos com criptografia do lado do cliente?**  
Não. Todos os objetos criptografados do lado do cliente antes de serem carregados no Amazon S3 chegam como objetos de texto cifrado criptografados no Amazon S3. Esses objetos agora terão uma camada adicional de criptografia SSE-S3. Suas workloads que usam objetos criptografados do lado do cliente não exigirão nenhuma alteração nos serviços do cliente ou nas configurações de autorização.

**nota**  
Os usuários da Terraform da HashiCorp que não usam uma versão atualizada do AWS Provider talvez vejam uma mudança inesperada depois de criar buckets do S3 sem nenhuma configuração de criptografia definida pelo cliente. Para evitar esse desvio, atualize sua versão do AWS Provider para Terraform para uma das seguintes versões: qualquer versão 4.x, 3.76.1 ou 2.70.4.

# Atualizar a criptografia do lado do servidor para dados existentes
<a name="update-sse-encryption"></a>

Todos os buckets do Amazon S3 têm a criptografia configurada por padrão, e os objetos são automaticamente criptografados usando criptografia do lado do servidor, com chaves gerenciadas do Amazon S3 (SSE-S3). Essa configuração de criptografia padrão se aplica a todos os novos objetos em seus buckets do Amazon S3.

Usando a operação de API `UpdateObjectEncryption`, é possível atualizar atomicamente o tipo de criptografia do lado do servidor de um objeto criptografado de um bucket de uso geral da criptografia do lado do servidor com chaves de criptografia gerenciadas pelo Amazon S3 (SSE-S3) para a criptografia do lado do servidor com chaves de criptografia do AWS Key Management Service (AWS KMS) (SSE-KMS). A operação de API `UpdateObjectEncryption` usa a [criptografia envelopada](https://docs.aws.amazon.com/kms/latest/developerguide/kms-cryptography.html#enveloping) para criptografar novamente a chave de dados utilizada para criptografar e descriptografar seu objeto com o tipo de criptografia do lado do servidor recém-especificado. 

O Amazon S3 executa essa atualização do tipo de criptografia sem precisar realizar nenhuma movimentação de dados. Em outras palavras, ao usar a operação `UpdateObjectEncryption`, os dados não são copiados, os objetos arquivados no S3 Glacier Flexible Retrieval ou no S3 Glacier Deep Archive não são restaurados e os objetos na classe de armazenamento S3 Intelligent-Tiering não são movidos entre níveis. Além disso, a operação `UpdateObjectEncryption` preserva todas as propriedades de metadados do objeto, como classe de armazenamento, data de criação, data da última modificação, ETag e soma de verificação.

É possível usar a operação `UpdateObjectEncryption` com todas as classes de armazenamento do S3 aceitas por buckets de uso geral. Você pode usar a operação `UpdateObjectEncryption` para fazer o seguinte: 
+ Alterar o tipo de criptografia de objetos da criptografia do lado do servidor com chaves de criptografia gerenciadas pelo Amazon S3 (SSE-S3) para a criptografia do lado do servidor com chaves de criptografia do AWS Key Management Service (AWS KMS) (SSE-KMS).
+ Atualizar os objetos criptografados com SSE-KMS em nível de objeto para usar chaves de bucket do S3, o que diminui o tráfego de solicitações do AWS KMS 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](bucket-key.md).
+ Alterar a chave do KMS gerenciada pelo cliente que é usada para criptografar seus dados para que você possa cumprir padrões personalizados de alternância de chaves.

**nota**  
Não é possível usar essa operação com objetos de origem que não são criptografados ou são criptografados com a criptografia de camada dupla do lado do servidor com AWS KMS keys (DSSE-KMS) ou chaves de criptografia fornecidas pelo cliente (SSE-C).

A operação `UpdateObjectEncryption` normalmente é concluída em milissegundos, independentemente do tamanho objeto ou da classe de armazenamento, como S3 Glacier Flexible Retrieval ou S3 Glacier Deep Archive. Como essa operação não é contabilizada como um acesso para o S3 Intelligent-Tiering, os objetos no nível Infrequent Access ou Archive Instant Access não voltarão automaticamente para o nível Frequent Access o tipo de criptografia do lado do servidor do objeto for alterado. 

`UpdateObjectEncryption` é uma operação de API em nível de objeto (plano de dados) que é registrada em logs de acesso ao servidor do Amazon S3 e em eventos de dados do AWS CloudTrail. Para obter mais informações, consulte [Opções de registro em log para o Amazon S3](logging-with-S3.md). 

 A operação `UpdateObjectEncryption` tem o mesmo preço das solicitações `PUT`, `COPY`, `POST` e `LIST` (por 1.000 solicitações) e é sempre cobrada como uma solicitação da classe de armazenamento S3 Standard, independentemente da classe de armazenamento do objeto subjacente. Para obter mais informações, consulte [Preço do Amazon S3](https://aws.amazon.com/s3/pricing/).

## Restrições e considerações
<a name="update-sse-encryption-restrictions"></a>

Ao usar a operação `UpdateObjectEncryption`, as seguintes restrições e considerações se aplicam:
+ A operação `UpdateObjectEncryption` não permite objetos não criptografados ou objetos criptografados com a criptografia de camada dupla do lado do servidor com AWS KMS keys (DSSE-KMS) ou chaves de criptografia fornecidas pelo cliente (SSE-C). Além disso, não é possível especificar SSE-S3 como o novo tipo de criptografia na solicitação `UpdateObjectEncryption`.
+ É possível usar a operação `UpdateObjectEncryption` para atualizar objetos em buckets que têm o Versionamento do S3 habilitado. Para atualizar o tipo de criptografia de uma versão específica, é necessário especificar um ID de versão na solicitação `UpdateObjectEncryption`. Se você não especificar um ID de versão, a solicitação `UpdateObjectEncryption` atuará na versão atual do objeto. Para obter mais informações sobre o S3 Versioning, consulte [Reter várias versões de objetos com o Versionamento do S3](Versioning.md).
+ A operação `UpdateObjectEncryption` falha em qualquer objeto que tenha um modo de retenção do Bloqueio de Objetos do S3 ou uma retenção jurídica aplicados a ele. Se um objeto tiver um período de retenção no modo de governança ou uma retenção jurídica, primeiro será necessário remover o status de bloqueio de objetos para emitir a solicitação `UpdateObjectEncryption`. Não é possível usar a operação `UpdateObjectEncryption` com objetos que tenham um período de retenção do modo de conformidade do Bloqueio de Objetos aplicado a eles. Para obter mais informações sobre bloqueio de objetos do S3, consulte [Bloquear objetos com o Bloqueio de Objetos](object-lock.md).
+ As solicitações `UpdateObjectEncryption` em buckets de origem com replicação em tempo real habilitada não iniciarão eventos de réplica no bucket de destino. Se você quiser alterar o tipo de criptografia dos objetos nos buckets de origem e destino, será necessário iniciar solicitações `UpdateObjectEncryption` separadas nos objetos nos buckets de origem e destino.
+ Por padrão, todas as solicitações `UpdateObjectEncryption` que especificam uma chave do KMS gerenciada pelo cliente são restritas às chaves do KMS pertencentes à Conta da AWS do proprietário do bucket. Se você estiver usando o AWS Organizations, existe a possibilidade de usar AWS KMS keys pertencentes a outras contas de membro em sua organização. Para isso, entre em contato com o AWS Support para fazer essa solicitação.
+ Se você usa o recurso Replicação em Lote do S3 para replicar conjuntos de dados entre regiões e já tiver atualizado o tipo de criptografia do lado do servidor de SSE-S3 para SSE-KMS, pode ser que você precise de permissões adicionais. No bucket da região de origem, é necessário ter a permissão `kms:decrypt`. Em seguida, é necessário ter as permissões `kms:decrypt` e `kms:encrypt` para o bucket na região de destino. 
+ É necessário fornecer um ARN completo da chave do KMS na solicitação `UpdateObjectEncryption`. Não é possível usar um nome de alias ou ARN de alias. É possível determinar o ARN completo da chave do KMS no console do AWS KMS ou usando a API `DescribeKey` do AWS KMS.

## Permissões obrigatórias
<a name="update-sse-encryption-permissions"></a>

Para realizar a operação `UpdateObjectEncryption`, você deve ter as seguintes permissões: 
+ `s3:PutObject`
+ `s3:UpdateObjectEncryption`
+ `kms:Encrypt`
+ `kms:Decrypt`
+ `kms:GenerateDataKey`
+ `kms:ReEncrypt*`

Se você estiver usando o AWS Organizations, para usar essa operação com chaves do KMS gerenciadas pelo cliente de outras Contas da AWS em sua organização, será necessário ter a permissão `organizations:DescribeAccount`. Também será necessário entrar em contato com o AWS Support se quiser usar AWS KMS keys pertencentes a outras contas de membro em sua organização.

Para realizar a operação `UpdateObjectEncryption`, adicione a política do AWS Identity and Access Management (IAM) a seguir ao seu perfil do IAM. Para usar essa política, substitua `amzn-s3-demo-bucket` pelo nome do seu bucket de uso geral e substitua os outros `user input placeholders` por usas próprias informações.

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [{
            "Sid": "AllowUpdateObjectEncryption",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:UpdateObjectEncryption",
                "kms:Encrypt",
                "kms:Decrypt",
                "kms:GenerateDataKey",
                "kms:ReEncrypt*",
                "organizations:DescribeAccount"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket",
                "arn:aws:s3:::amzn-s3-demo-bucket/*",
                "arn:aws:kms:us-east-1:111122223333:key/01234567-89ab-cdef-0123-456789abcdef"
            ]
        }
    ]
}
```

## Atualizar tipos de criptografia em massa
<a name="update-sse-encryption-bulk"></a>

Para atualizar o tipo de criptografia do lado do servidor de mais de um objeto do Amazon S3 com uma única solicitação, você pode usar o recurso Operações em Lote do S3. É possível fornecer à funcionalidade Operações em Lote do S3 uma lista de objetos nos quais operar ou instruir essa funcionalidade para que gere uma lista de objetos com base em metadados de objeto, como prefixo, classe de armazenamento, data de criação, tipo de criptografia, ARN da chave do KMS ou status da chave de bucket do S3. O S3 Batch Operations chama a respectiva operação de API para executar a operação especificada. Um único trabalho de operações em lote pode realizar a operação especificada em bilhões de objetos em um bucket contendo exabytes de dados. Para obter mais informações sobre o recurso Operações em lote, consulte [Executar operações de objetos em massa com o Operações em Lote](batch-ops.md). 

O recurso S3 Batch Operations rastreia o progresso, envia notificações e armazena um relatório de conclusão detalhado de todas as ações, fornecendo uma experiência totalmente gerenciada, auditável e sem servidor. É possível usar o recurso Operações em Lote do S3 por meio do console do Amazon S3, da AWS Command Line Interface (AWS CLI), de SDKs da AWS ou da API REST do Amazon S3. Para obter mais informações, consulte [Atualizar a criptografia de objetos](batch-ops-update-encryption.md).

## Atualizar a criptografia de objetos
<a name="update-sse-encryption-single-object"></a>

É possível atualizar o tipo de criptografia do lado do servidor para um objeto por meio da AWS Command Line Interface (AWS CLI), de SDKs da AWS ou da API REST do Amazon S3. 

### Atualizar a criptografia de um objeto
<a name="update-sse-encryption-single-object-procedure"></a>

#### Como usar o AWS CLI
<a name="update-sse-encryption-single-object-cli"></a>

Para executar os comandos a seguir, você deve ter a AWS CLI instalada e configurada. Se ainda não tiver a AWS CLI instalada, consulte [Instalar ou atualizar a versão mais recente da AWS CLI](https://docs.aws.amazon.com//cli/latest/userguide/getting-started-install.html) no *Guia do usuário da AWS Command Line Interface*.

Também é possível executar comandos da AWS CLI pelo console usando o AWS CloudShell. O AWS CloudShell é um shell pré-autenticado e baseado em navegador que você pode iniciar diretamente do Console de gerenciamento da AWS. Para ter mais informações, consulte [What is CloudShell?](https://docs.aws.amazon.com//cloudshell/latest/userguide/welcome.html) e [Getting started with AWS CloudShell](https://docs.aws.amazon.com//cloudshell/latest/userguide/getting-started.html) no *Guia do usuário do AWS CloudShell*.

**Como atualizar a criptografia de um objeto usando a AWS CLI**

Para usar o comando a seguir, substitua os `user input placeholders` por suas próprias informações. 

1. Use o seguinte comando para atualizar a criptografia de um único objeto (`index.html`) em seu bucket de uso geral (por exemplo, `amzn-s3-demo-bucket`) e usar o SSE-KMS com uma chave de bucket do S3:

   ```
   aws s3api update-object-encryption \
   --bucket amzn-s3-demo-bucket \
   --key index.html \
   --object-encryption '{"SSEKMS": { "KMSKeyArn": "arn:aws:kms:us-east-1:111122223333:key/f12a345a-678e-9bbb-1025-62e317037583", "BucketKeyEnabled": true }}'
   ```
**nota**  
É necessário especificar o nome do recurso da Amazon (ARN) completo da AWS KMS key. Não é possível usar o ID da chave do KMS e o alias da chave do KMS.

1. Execute o comando `head-object` para visualizar o tipo de criptografia atualizado do seu objeto:

   ```
   aws s3api head-object --bucket amzn-s3-demo-bucket --key index.html
   ```

#### Uso da API REST
<a name="update-sse-encryption-single-object-rest-api"></a>

É possível enviar solicitações REST para atualizar a criptografia de um objeto. Para obter mais informações, consulte [https://docs.aws.amazon.com/AmazonS3/latest/API/API_UpdateObjectEncryption.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UpdateObjectEncryption.html).

#### Uso da SDKs AWS
<a name="update-sse-encryption-single-object-sdk"></a>

É possível usar os SDKs da AWS para atualizar a criptografia de um objeto. Para ter mais informações, consulte a [lista de SDKs compatíveis](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UpdateObjectEncryption.html#API_UpdateObjectEncryption_SeeAlso).

------
#### [ Java ]

**Example**  
O exemplo do AWS SDK for Java 2.x a seguir atualiza o tipo de criptografia de um objeto em um bucket de uso geral para SSE-KMS.  

```
    public void updateObjectEncryption(String bucketName,
                                       String objectKey,
                                       String versionId,
                                       String kmsKeyArn,
                                       boolean bucketKeyEnabled) {
        // Create the target object encryption type.
        ObjectEncryption objectEncryption = ObjectEncryption.builder()
                .ssekms(SSEKMSEncryption.builder()
                        .kmsKeyArn(kmsKeyArn)
                        .bucketKeyEnabled(bucketKeyEnabled)
                        .build())
                .build();

        // Create the UpdateObjectEncryption request.
        UpdateObjectEncryptionRequest request = UpdateObjectEncryptionRequest.builder()
                .bucket(bucketName)
                .key(objectKey)
                .versionId(versionId)
                .objectEncryption(objectEncryption)
                .build();

        // Update the object encryption.
        try {
            getS3Client().updateObjectEncryption(request);
            logger.info("Object encryption updated to SSE-KMS for {} in bucket {}", objectKey, bucketName);
        } catch (S3Exception e) {
            logger.error("Failed to update to object encryption: {} - Error code: {}", e.awsErrorDetails().errorMessage(),
                    e.awsErrorDetails().errorCode());
            throw e;
        }
    }
```

------
#### [ Python ]

**Example**  
O exemplo do AWS SDK para Python (Boto3) a seguir mostra como atualizar o tipo de criptografia de um objeto em um bucket de uso geral para SSE-KMS.   

```
response = client.update_object_encryption(
    Bucket='string',
    Key='string',
    VersionId='string',
    ObjectEncryption={
        'SSEKMS': {
                'KMSKeyArn': 'string',
                'BucketKeyEnabled': True|False
        }
    }
)
```

------

# Usar a criptografia do lado do servidor com chaves gerenciadas pelo Amazon S3 (SSE-S3)
<a name="UsingServerSideEncryption"></a>

**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 CloudTrail, no Inventário 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 CLI e em SDKs da AWS. Para obter mais informações, consulte [Perguntas frequentes sobre criptografia padrão](https://docs.aws.amazon.com/AmazonS3/latest/userguide/default-encryption-faq.html).

Todos os uploads de novos objetos para buckets do Amazon S3 são criptografados por padrão com criptografia do lado do servidor com chaves gerenciadas pelo Amazon S3 (SSE-S3).

A criptografia no lado do servidor protege dados em repouso. O Amazon S3 criptografa cada objeto com uma chave exclusiva. Como uma proteção adicional, ela criptografa a si mesma utilizando uma chave que alterna regularmente. A criptografia do lado do servidor do Amazon S3 usa o Advanced Encryption Standard Galois/Counter Mode (AES-GCM) de 256 bits para criptografar todos os objetos carregados.

Não existem taxas adicionais pelo uso da criptografia do lado do servidor com chaves gerenciadas pelo Amazon S3 (SSE-S3). Mas, as solicitações de configuração do recurso de criptografia padrão geram os encargos de solicitação padrão do Amazon S3. Para obter mais informações sobre preços, consulte [Preços do Amazon S3](https://aws.amazon.com/s3/pricing/).

Se você precisar que os uploads de dados sejam criptografados usando somente chaves gerenciadas pelo Amazon S3, poderá usar a política de bucket a seguir. Por exemplo, a política de bucket a seguir negará permissões para fazer upload de um objeto, a menos que a solicitação não inclua o cabeçalho `x-amz-server-side-encryption` a fim de solicitar criptografia no lado do servidor:

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Id": "PutObjectPolicy",
  "Statement": [
    {
      "Sid": "DenyObjectsThatAreNotSSES3",
      "Effect": "Deny",
      "Principal": "*",
      "Action": "s3:PutObject",
      "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
      "Condition": {
        "StringNotEquals": {
          "s3:x-amz-server-side-encryption": "AES256"
        }
      }
    }
   ]
}
```

------

**nota**  
A criptografia no lado do servidor criptografa somente os dados de objeto, não os metadados de objeto. 

## Suporte de API para criptografia do lado do servidor
<a name="APISupportforServer-SideEncryption"></a>

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 atualizar 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.

Para ter mais informações sobre a alteração da configuração padrão de criptografia para buckets de uso geral, consulte [Configurar a criptografia padrão](default-bucket-encryption.md). 

Quando você altera a configuração de criptografia padrão do bucket para SSE-KMS, o tipo de criptografia dos objetos do Amazon S3 existentes no bucket não é alterado. Para alterar o tipo de criptografia de objetos preexistentes depois de atualizar a configuração padrão de criptografia para SSE-KMS, use o recurso Operações em Lote do Amazon S3. Basta fornecer uma lista de objetos ao recurso Operações em Lote do S3 para que ele chame a respectiva operação de API. É possível usar a ação [Copiar objetos](batch-ops-copy-object.md) para copiar objetos existentes, gravando-os de volta no mesmo bucket que os objetos criptografados por SSE-KMS. Um único trabalho do Batch Operations pode realizar a operação especificada em bilhões de objetos. Para ter mais informações, consulte [Executar operações de objetos em massa com o Operações em Lote](batch-ops.md) e a publicação [How to retroactively encrypt existing objects in Amazon S3 using S3 Inventory, Amazon Athena, and S3 Batch Operations](https://aws.amazon.com/blogs/security/how-to-retroactively-encrypt-existing-objects-in-amazon-s3-using-s3-inventory-amazon-athena-and-s3-batch-operations/) do *Blog do AWS Storage*. 

Para configurar a criptografia do lado do servidor usando as APIs REST de criação de objetos, é necessário fornecer o cabeçalho de solicitação `x-amz-server-side-encryption`. Para obter informações sobre as APIs REST, consulte [Uso da API REST](specifying-s3-encryption.md#SSEUsingRESTAPI).

As APIs do Amazon S3 a seguir são compatíveis com este cabeçalho:
+ **Operações PUT**: especifique o cabeçalho de solicitação ao fazer upload de dados usando a API `PUT`. Para obter mais informações, consulte [Objeto PUT](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html).
+ **Iniciar upload de várias partes**: especifique o cabeçalho na solicitação de inicialização ao fazer upload de objetos grandes usando a operação de API de upload de várias partes. Para obter mais informações, consulte [Iniciar Multipart Upload](https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadInitiate.html).
+ **Operações COPY**: quando você copia um objeto, tem um objeto de origem e um objeto de destino. Para obter mais informações, consulte [Objeto PUT - Copiar](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectCOPY.html).

**nota**  
Ao usar uma operação `POST` para fazer upload de um objeto, em vez de fornecer o cabeçalho de solicitação, você fornece as mesmas informações nos campos de formulário. Para obter mais informações, consulte [Objeto POST](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html). 

Os AWS SDKs também fornecem APIs de wrapper que você pode usar para solicitar criptografia no lado do servidor. Você também pode usar o Console de gerenciamento da AWS para fazer upload de objetos e solicitar a criptografia no lado do servidor.

Para obter mais informações gerais, consulte [Conceitos do AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html) no *Guia do desenvolvedor do AWS Key Management Service*.

**Topics**
+ [Suporte de API para criptografia do lado do servidor](#APISupportforServer-SideEncryption)
+ [Especificar a criptografia do lado do servidor com chaves gerenciadas pelo Amazon S3 (SSE-S3)](specifying-s3-encryption.md)

# Especificar a criptografia do lado do servidor com chaves gerenciadas pelo Amazon S3 (SSE-S3)
<a name="specifying-s3-encryption"></a>

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 atualizar 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.

Para ter mais informações sobre a alteração da configuração padrão de criptografia para buckets de uso geral, consulte [Configurar a criptografia padrão](default-bucket-encryption.md). 

Quando você altera a configuração de criptografia padrão do bucket para SSE-KMS, o tipo de criptografia dos objetos do Amazon S3 existentes no bucket não é alterado. Para alterar o tipo de criptografia de objetos preexistentes depois de atualizar a configuração padrão de criptografia para SSE-KMS, use o recurso Operações em Lote do Amazon S3. Basta fornecer uma lista de objetos ao recurso Operações em Lote do S3 para que ele chame a respectiva operação de API. É possível usar a ação [Copiar objetos](batch-ops-copy-object.md) para copiar objetos existentes, gravando-os de volta no mesmo bucket que os objetos criptografados por SSE-KMS. Um único trabalho do Batch Operations pode realizar a operação especificada em bilhões de objetos. Para ter mais informações, consulte [Executar operações de objetos em massa com o Operações em Lote](batch-ops.md) e a publicação [How to retroactively encrypt existing objects in Amazon S3 using S3 Inventory, Amazon Athena, and S3 Batch Operations](https://aws.amazon.com/blogs/security/how-to-retroactively-encrypt-existing-objects-in-amazon-s3-using-s3-inventory-amazon-athena-and-s3-batch-operations/) do *Blog do AWS Storage*. 

Você pode especificar o SSE-S3 usando o console do S3, APIs REST, AWS SDKs e a AWS Command Line Interface (AWS CLI). Para obter mais informações, consulte [Definir o comportamento padrão da criptografia para os buckets do Amazon S3](bucket-encryption.md).

## Usar o console do S3
<a name="add-object-encryption-s3"></a>

Este tópico descreve como definir ou alterar o tipo de criptografia de um objeto usando o Console de gerenciamento da AWS. Ao copiar um objeto usando o console, o Amazon S3 copia o objeto como está. Isso significa que se o objeto de origem é criptografado, o objeto de destino também será criptografado. É possível usar o console para adicionar ou alterar a criptografia para um objeto. 

**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](mpu-upload-object.md#UsingCLImpUpload) ou [SDKs da AWS](CopyingObjectsMPUapi.md) 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](using-with-s3-policy-actions.md). Para ver exemplos das políticas que concedem essas permissões, consulte [Exemplos de políticas baseadas em identidade para o Amazon S3](example-policies-s3.md).
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 a criptografia de um objeto**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon S3 em [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. 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.

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

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

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

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

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

   1. Em **Tipo de criptografia**, escolha **Criptografia do lado do servidor com chaves de criptografia gerenciadas pelo Amazon S3 (SSE-S3)**. A SSE-S3 usa uma das criptografias de bloco mais fortes: o padrão de criptografia avançada de 256 bits (AES-256) para criptografar cada objeto. Para obter mais informações, consulte [Usar a criptografia do lado do servidor com chaves gerenciadas pelo Amazon S3 (SSE-S3)](UsingServerSideEncryption.md).

1. 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.

1. Escolha **Salvar alterações**.

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

## Uso da API REST
<a name="SSEUsingRESTAPI"></a>

No momento da criação do objeto (quando você faz upload de um objeto novo ou faz uma cópia de um objeto existente), é possível especificar se deseja que o Amazon S3 criptografe seus dados com as chaves gerenciadas pelo Amazon S3 (SSE-S3) adicionando o cabeçalho `x-amz-server-side-encryption` à solicitação. Defina o valor do cabeçalho como o algoritmo de criptografia `AES256`, que é compatível com o Amazon S3. O Amazon S3 confirma que o objeto foi armazenado com SSE-S3 retornando o cabeçalho de resposta `x-amz-server-side-encryption`. 

As seguintes operações de APIs de upload REST aceitam o cabeçalho de solicitação `x-amz-server-side-encryption`.
+ [Objeto PUT](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html)
+ [Objeto PUT - Copiar](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectCOPY.html)
+ [Objeto POST](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html)
+ [Iniciar multipart upload](https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadInitiate.html)

Ao fazer upload de objetos grandes usando a operação de API de upload de várias partes, você pode especificar a criptografia do lado do servidor adicionando o cabeçalho `x-amz-server-side-encryption` à solicitação Iniciar upload de várias partes. 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.

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 SSE-S3. 
+ [Objeto PUT](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html)
+ [Objeto PUT - Copiar](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectCOPY.html)
+ [Objeto POST](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html)
+ [Iniciar multipart upload](https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadInitiate.html)
+ [Carregar parte](https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadUploadPart.html)
+ [Carregamento de parte: copiar](https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadUploadPartCopy.html)
+ [Concluir carregamento fracionado](https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadComplete.html)
+ [Objeto Get](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectGET.html)
+ [Objeto Head](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectHEAD.html)

**nota**  
Não envie cabeçalhos de solicitação de criptografia para solicitações `GET` e `HEAD` se o objeto usa SSE-S3, ou você receberá um erro 400 (Solicitação inválida) de status HTTP.

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

Ao usar AWS SDKs, é possível solicitar que o Amazon S3 use criptografia do lado do servidor com chaves de criptografia gerenciadas pelo Amazon S3 (SSE-S3). Esta seção fornece exemplos de uso dos AWS SDKs em várias linguagens. Para obter informações sobre outros SDKs, consulte [Código de exemplo e bibliotecas](https://aws.amazon.com/code). 

------
#### [ Java ]

Ao usar o AWS SDK para Java para fazer upload de um objeto, você pode usar SSE-S3 para criptografá-lo. Para solicitar a criptografia no lado do servidor, use a propriedade `ObjectMetadata` da `PutObjectRequest` para configurar o cabeçalho da solicitação `x-amz-server-side-encryption`. Ao chamar o método `putObject()` do `AmazonS3Client`, o Amazon S3 criptografa e salva os dados.

Você também pode solicitar a criptografia SSE-S3 ao fazer upload de objetos com a operação de API de upload de várias partes: 
+ Ao usar a operação de API de alto nível de upload de várias partes, você usa os métodos `TransferManager` para aplicar criptografia no lado do servidor aos objetos conforme faz upload desses objetos. Você pode usar qualquer um dos métodos de upload que assumem `ObjectMetadata` como um parâmetro. Para obter mais informações, consulte [Fazer upload de um objeto usando multipart upload](mpu-upload-object.md).
+ Ao usar a operação de API de upload de várias partes de baixo nível, você especifica a criptografia de servidor ao iniciar o upload de várias partes. Você adiciona a propriedade `ObjectMetadata` chamando o método `InitiateMultipartUploadRequest.setObjectMetadata()`. Para obter mais informações, consulte [Uso dos AWS SDKs (API de baixo nível)](mpu-upload-object.md#mpu-upload-low-level).

Você não poderá alterar diretamente o estado de criptografia de um objeto (criptografando um objeto não criptografado ou descriptografando um objeto criptografado). Para alterar o estado de criptografia de um objeto, faça uma cópia do objeto, especificando o estado desejado de criptografia para a cópia e, em seguida, exclua o objeto original. O Amazon S3 criptografa o objeto copiado somente se você solicitar explicitamente criptografia no lado do servidor. Para solicitar a criptografia do objeto copiado por meio da API Java, use a propriedade `ObjectMetadata` para especificar a criptografia no lado do servidor na `CopyObjectRequest`.

**Example Exemplo**  
O exemplo a seguir mostra como definir a criptografia do lado do servidor usando o AWS SDK para Java. Ele mostra como executar as seguintes tarefas:  
+ Faça upload de um novo objeto usando SSE-S3.
+ Alterar o estado de criptografia de um objeto (neste exemplo, criptografar um objeto anteriormente não criptografado) fazendo uma cópia do objeto.
+ Verificar o estado de criptografia do objeto.
Para obter mais informações sobre criptografia no lado do servidor, consulte [Uso da API REST](#SSEUsingRESTAPI). Consulte instruções sobre como criar e testar uma amostra funcional em [Getting Started](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/getting-started.html) no Guia do desenvolvedor do AWS SDK para Java.  

```
import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.internal.SSEResultBase;
import com.amazonaws.services.s3.model.*;

import java.io.ByteArrayInputStream;

public class SpecifyServerSideEncryption {

    public static void main(String[] args) {
        Regions clientRegion = Regions.DEFAULT_REGION;
        String bucketName = "*** Bucket name ***";
        String keyNameToEncrypt = "*** Key name for an object to upload and encrypt ***";
        String keyNameToCopyAndEncrypt = "*** Key name for an unencrypted object to be encrypted by copying ***";
        String copiedObjectKeyName = "*** Key name for the encrypted copy of the unencrypted object ***";

        try {
            AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
                    .withRegion(clientRegion)
                    .withCredentials(new ProfileCredentialsProvider())
                    .build();

            // Upload an object and encrypt it with SSE.
            uploadObjectWithSSEEncryption(s3Client, bucketName, keyNameToEncrypt);

            // Upload a new unencrypted object, then change its encryption state
            // to encrypted by making a copy.
            changeSSEEncryptionStatusByCopying(s3Client,
                    bucketName,
                    keyNameToCopyAndEncrypt,
                    copiedObjectKeyName);
        } catch (AmazonServiceException e) {
            // The call was transmitted successfully, but Amazon S3 couldn't process
            // it, so it returned an error response.
            e.printStackTrace();
        } catch (SdkClientException e) {
            // Amazon S3 couldn't be contacted for a response, or the client
            // couldn't parse the response from Amazon S3.
            e.printStackTrace();
        }
    }

    private static void uploadObjectWithSSEEncryption(AmazonS3 s3Client, String bucketName, String keyName) {
        String objectContent = "Test object encrypted with SSE";
        byte[] objectBytes = objectContent.getBytes();

        // Specify server-side encryption.
        ObjectMetadata objectMetadata = new ObjectMetadata();
        objectMetadata.setContentLength(objectBytes.length);
        objectMetadata.setSSEAlgorithm(ObjectMetadata.AES_256_SERVER_SIDE_ENCRYPTION);
        PutObjectRequest putRequest = new PutObjectRequest(bucketName,
                keyName,
                new ByteArrayInputStream(objectBytes),
                objectMetadata);

        // Upload the object and check its encryption status.
        PutObjectResult putResult = s3Client.putObject(putRequest);
        System.out.println("Object \"" + keyName + "\" uploaded with SSE.");
        printEncryptionStatus(putResult);
    }

    private static void changeSSEEncryptionStatusByCopying(AmazonS3 s3Client,
            String bucketName,
            String sourceKey,
            String destKey) {
        // Upload a new, unencrypted object.
        PutObjectResult putResult = s3Client.putObject(bucketName, sourceKey, "Object example to encrypt by copying");
        System.out.println("Unencrypted object \"" + sourceKey + "\" uploaded.");
        printEncryptionStatus(putResult);

        // Make a copy of the object and use server-side encryption when storing the
        // copy.
        CopyObjectRequest request = new CopyObjectRequest(bucketName,
                sourceKey,
                bucketName,
                destKey);
        ObjectMetadata objectMetadata = new ObjectMetadata();
        objectMetadata.setSSEAlgorithm(ObjectMetadata.AES_256_SERVER_SIDE_ENCRYPTION);
        request.setNewObjectMetadata(objectMetadata);

        // Perform the copy operation and display the copy's encryption status.
        CopyObjectResult response = s3Client.copyObject(request);
        System.out.println("Object \"" + destKey + "\" uploaded with SSE.");
        printEncryptionStatus(response);

        // Delete the original, unencrypted object, leaving only the encrypted copy in
        // Amazon S3.
        s3Client.deleteObject(bucketName, sourceKey);
        System.out.println("Unencrypted object \"" + sourceKey + "\" deleted.");
    }

    private static void printEncryptionStatus(SSEResultBase response) {
        String encryptionStatus = response.getSSEAlgorithm();
        if (encryptionStatus == null) {
            encryptionStatus = "Not encrypted with SSE";
        }
        System.out.println("Object encryption status is: " + encryptionStatus);
    }
}
```

------
#### [ .NET ]

Ao fazer upload de um objeto, você pode instruir o Amazon S3 a criptografar esse objeto. Para alterar o estado de criptografia de um objeto existente, faça uma cópia do objeto e exclua o objeto de origem. Por padrão, a operação de cópia criptografa o destino somente se você solicitar explicitamente a criptografia no lado do servidor do objeto de destino. Para especificar a SSE-S3 no `CopyObjectRequest`, adicione o seguinte:

```
 ServerSideEncryptionMethod = ServerSideEncryptionMethod.AES256
```

Para obter uma amostra funcional de como copiar um objeto, consulte [Usar SDKs da AWS](copy-object.md#CopyingObjectsUsingSDKs). 

O exemplo a seguir faz upload de um objeto. Na solicitação, o exemplo instrui o Amazon S3 a criptografar o objeto. O exemplo então recupera metadados do objeto e verifica o método de criptografia que foi usado. Para obter informações sobre como configurar e executar exemplos de código, consulte [Conceitos básicos do AWS SDK for .NET](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/net-dg-setup.html) no *Guia do desenvolvedor do AWS SDK for .NET*. 

```
using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using System;
using System.Threading.Tasks;

namespace Amazon.DocSamples.S3
{
    class SpecifyServerSideEncryptionTest
    {
        private const string bucketName = "*** bucket name ***";
        private const string keyName = "*** key name for object created ***";
        // Specify your bucket region (an example region is shown).
        private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
        private static IAmazonS3 client;

        public static void Main()
        {
            client = new AmazonS3Client(bucketRegion);
            WritingAnObjectAsync().Wait();
        }

        static async Task WritingAnObjectAsync()
        {
            try
            {
                var putRequest = new PutObjectRequest
                {
                    BucketName = bucketName,
                    Key = keyName,
                    ContentBody = "sample text",
                    ServerSideEncryptionMethod = ServerSideEncryptionMethod.AES256
                };

                var putResponse = await client.PutObjectAsync(putRequest);

                // Determine the encryption state of an object.
                GetObjectMetadataRequest metadataRequest = new GetObjectMetadataRequest
                {
                    BucketName = bucketName,
                    Key = keyName
                };
                GetObjectMetadataResponse response = await client.GetObjectMetadataAsync(metadataRequest);
                ServerSideEncryptionMethod objectEncryption = response.ServerSideEncryptionMethod;

                Console.WriteLine("Encryption method used: {0}", objectEncryption.ToString());
            }
            catch (AmazonS3Exception e)
            {
                Console.WriteLine("Error encountered ***. Message:'{0}' when writing an object", e.Message);
            }
            catch (Exception e)
            {
                Console.WriteLine("Unknown encountered on server. Message:'{0}' when writing an object", e.Message);
            }
        }
    }
}
```

------
#### [ PHP ]

Este tópico mostra como usar classes da versão 3 do AWS SDK para PHP para adicionar SSE-S3 a objetos que você carrega no Amazon S3. Para obter mais informações sobre a API do AWS SDK for Ruby, acesse [AWS SDK for Ruby Version 2](https://docs.aws.amazon.com/sdkforruby/api/index.html).

Para fazer upload de um objeto no Amazon S3, use o método [Aws\$1S3\$1S3Client::putObject()](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#putobject). Para adicionar o cabeçalho de solicitação `x-amz-server-side-encryption` à sua solicitação de upload, especifique o parâmetro `ServerSideEncryption` com o valor `AES256`, conforme exibido no seguinte exemplo de código. Para obter informações sobre solicitações de criptografia no lado do servidor, consulte [Uso da API REST](#SSEUsingRESTAPI).

```
 require 'vendor/autoload.php';

use Aws\S3\S3Client;

$bucket = '*** Your Bucket Name ***';
$keyname = '*** Your Object Key ***';

// $filepath should be an absolute path to a file on disk.
$filepath = '*** Your File Path ***';

$s3 = new S3Client([
    'version' => 'latest',
    'region'  => 'us-east-1'
]);

// Upload a file with server-side encryption.
$result = $s3->putObject([
    'Bucket'               => $bucket,
    'Key'                  => $keyname,
    'SourceFile'           => $filepath,
    'ServerSideEncryption' => 'AES256',
]);
```

Em resposta, o Amazon S3 retorna o cabeçalho `x-amz-server-side-encryption` com o valor do algoritmo de criptografia que foi usado para criptografar os dados de objeto. 

Ao fazer upload de objetos grandes usando a operação de API de upload de várias partes, você pode especificar a SSE-S3 para os objetos que estiver carregando, conforme segue: 
+ Ao usar a operação de API de upload de várias partes de baixo nível, especifique a criptografia do lado do servidor ao chamar o método [Aws\$1S3\$1S3Client::createMultipartUpload()](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#createmultipartupload). Para adicionar o cabeçalho de solicitação `x-amz-server-side-encryption` à sua solicitação, especifique a chave `array` do parâmetro `ServerSideEncryption` com o valor `AES256`. Para obter mais informações sobre a operação de API de upload de várias partes de baixo nível, consulte [Uso dos AWS SDKs (API de baixo nível)](mpu-upload-object.md#mpu-upload-low-level).
+ Ao usar a operação de API de upload de várias partes de alto nível, especifique a criptografia do lado do servidor usando o parâmetro `ServerSideEncryption` da operação de API [CreateMultipartUpload](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#createmultipartupload). Para ver um exemplo de uso do método `setOption()` com a operação de API de upload de várias partes de alto nível, consulte [Fazer upload de um objeto usando multipart upload](mpu-upload-object.md).

Para determinar o estado de criptografia de um objeto existente, recupere os metadados de objeto chamando o método [Aws\$1S3\$1S3Client::headObject()](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#headobject) conforme exibido no seguinte exemplo de código PHP.

```
 require 'vendor/autoload.php';

use Aws\S3\S3Client;

$bucket = '*** Your Bucket Name ***';
$keyname = '*** Your Object Key ***';

$s3 = new S3Client([
    'version' => 'latest',
    'region'  => 'us-east-1'
]);

// Check which server-side encryption algorithm is used.
$result = $s3->headObject([
    'Bucket' => $bucket,
    'Key'    => $keyname,
]);
echo $result['ServerSideEncryption'];
```

Para alterar o estado de criptografia de um objeto existente, faça uma cópia do objeto usando o método [Aws\$1S3\$1S3Client::copyObject()](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#copyobject) e exclua o objeto de origem. Por padrão, o `copyObject()` não criptografará o destino, a menos que você solicite explicitamente a criptografia do lado do servidor do objeto de destino usando o parâmetro `ServerSideEncryption` com o valor `AES256`. O exemplo de código PHP a seguir faz uma cópia de um objeto e adiciona a criptografia no lado do servidor ao objeto copiado.

```
 require 'vendor/autoload.php';

use Aws\S3\S3Client;

$sourceBucket = '*** Your Source Bucket Name ***';
$sourceKeyname = '*** Your Source Object Key ***';

$targetBucket = '*** Your Target Bucket Name ***';
$targetKeyname = '*** Your Target Object Key ***';

$s3 = new S3Client([
    'version' => 'latest',
    'region'  => 'us-east-1'
]);

// Copy an object and add server-side encryption.
$s3->copyObject([
    'Bucket'               => $targetBucket,
    'Key'                  => $targetKeyname,
    'CopySource'           => "$sourceBucket/$sourceKeyname",
    'ServerSideEncryption' => 'AES256',
]);
```

Para saber mais, consulte os seguintes tópicos:
+ [AWS SDK para PHP for Amazon S3, classe Aws\$1S3\$1S3Client](https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Aws.S3.S3Client.html) 
+ [AWS SDK para PHP documentação da](https://aws.amazon.com/documentation/sdk-for-php/)

------
#### [ Ruby ]

Ao usar o AWS SDK para Ruby para fazer upload de um objeto, você pode especificar que o objeto seja armazenado criptografado em repouso com a SSE-S3. Ao ler o objeto de volta, ele é descriptografado automaticamente.

O exemplo do AWS SDK para Ruby versão 3 a seguir demonstra como especificar que um arquivo carregado no Amazon S3 seja criptografado em repouso.

```
require 'aws-sdk-s3'

# Wraps Amazon S3 object actions.
class ObjectPutSseWrapper
  attr_reader :object

  # @param object [Aws::S3::Object] An existing Amazon S3 object.
  def initialize(object)
    @object = object
  end

  def put_object_encrypted(object_content, encryption)
    @object.put(body: object_content, server_side_encryption: encryption)
    true
  rescue Aws::Errors::ServiceError => e
    puts "Couldn't put your content to #{object.key}. Here's why: #{e.message}"
    false
  end
end

# Example usage:
def run_demo
  bucket_name = "amzn-s3-demo-bucket"
  object_key = "my-encrypted-content"
  object_content = "This is my super-secret content."
  encryption = "AES256"

  wrapper = ObjectPutSseWrapper.new(Aws::S3::Object.new(bucket_name, object_content))
  return unless wrapper.put_object_encrypted(object_content, encryption)

  puts "Put your content into #{bucket_name}:#{object_key} and encrypted it with #{encryption}."
end

run_demo if $PROGRAM_NAME == __FILE__
```

O exemplo de código a seguir demonstra como determinar o estado de criptografia de um objeto existente.

```
require 'aws-sdk-s3'

# Wraps Amazon S3 object actions.
class ObjectGetEncryptionWrapper
  attr_reader :object

  # @param object [Aws::S3::Object] An existing Amazon S3 object.
  def initialize(object)
    @object = object
  end

  # Gets the object into memory.
  #
  # @return [Aws::S3::Types::GetObjectOutput, nil] The retrieved object data if successful; otherwise nil.
  def object
    @object.get
  rescue Aws::Errors::ServiceError => e
    puts "Couldn't get object #{@object.key}. Here's why: #{e.message}"
  end
end

# Example usage:
def run_demo
  bucket_name = "amzn-s3-demo-bucket"
  object_key = "my-object.txt"

  wrapper = ObjectGetEncryptionWrapper.new(Aws::S3::Object.new(bucket_name, object_key))
  obj_data = wrapper.get_object
  return unless obj_data

  encryption = obj_data.server_side_encryption.nil? ? 'no' : obj_data.server_side_encryption
  puts "Object #{object_key} uses #{encryption} encryption."
end

run_demo if $PROGRAM_NAME == __FILE__
```

Se a criptografia do lado do servidor não for usada para o objeto que é armazenado no Amazon S3, o método retornará `null`.

Para alterar o estado de criptografia de um objeto existente, faça uma cópia do objeto e exclua o objeto de origem. Por padrão, os métodos de cópia não criptografam o destino, a menos que você solicite explicitamente a criptografia no lado do servidor. Você pode solicitar a criptografia do objeto de destino especificando o valor `server_side_encryption` no argumento de hash de opções conforme mostrado no seguinte exemplo de código Ruby. O exemplo de código demonstra como copiar um objeto e criptografar a cópia com SSE-S3. 

```
require 'aws-sdk-s3'

# Wraps Amazon S3 object actions.
class ObjectCopyEncryptWrapper
  attr_reader :source_object

  # @param source_object [Aws::S3::Object] An existing Amazon S3 object. This is used as the source object for
  #                                        copy actions.
  def initialize(source_object)
    @source_object = source_object
  end

  # Copy the source object to the specified target bucket, rename it with the target key, and encrypt it.
  #
  # @param target_bucket [Aws::S3::Bucket] An existing Amazon S3 bucket where the object is copied.
  # @param target_object_key [String] The key to give the copy of the object.
  # @return [Aws::S3::Object, nil] The copied object when successful; otherwise, nil.
  def copy_object(target_bucket, target_object_key, encryption)
    @source_object.copy_to(bucket: target_bucket.name, key: target_object_key, server_side_encryption: encryption)
    target_bucket.object(target_object_key)
  rescue Aws::Errors::ServiceError => e
    puts "Couldn't copy #{@source_object.key} to #{target_object_key}. Here's why: #{e.message}"
  end
end

# Example usage:
def run_demo
  source_bucket_name = "amzn-s3-demo-bucket1"
  source_key = "my-source-file.txt"
  target_bucket_name = "amzn-s3-demo-bucket2"
  target_key = "my-target-file.txt"
  target_encryption = "AES256"

  source_bucket = Aws::S3::Bucket.new(source_bucket_name)
  wrapper = ObjectCopyEncryptWrapper.new(source_bucket.object(source_key))
  target_bucket = Aws::S3::Bucket.new(target_bucket_name)
  target_object = wrapper.copy_object(target_bucket, target_key, target_encryption)
  return unless target_object

  puts "Copied #{source_key} from #{source_bucket_name} to #{target_object.bucket_name}:#{target_object.key} and "\
       "encrypted the target with #{target_object.server_side_encryption} encryption."
end

run_demo if $PROGRAM_NAME == __FILE__
```

------

## Como usar o AWS CLI
<a name="sse-s3-aws-cli"></a>

Para especificar a SSE-S3 ao carregar um objeto usando a AWS CLI, use o exemplo a seguir.

```
aws s3api put-object --bucket amzn-s3-demo-bucket1 --key object-key-name --server-side-encryption AES256  --body file path
```

Para obter mais informações, consulte [put-object](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-object.html) na *referência da AWS CLI*. Para especificar a SSE-S3 ao copiar um objeto usando a AWS CLI, consulte [copy-object](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/copy-object.html).

## Usar o CloudFormation
<a name="ss3-s3-cfn"></a>

Para obter exemplos de configuração de criptografia usando o CloudFormation, consulte os exemplos [Criar um bucket com criptografia padrão](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-serversideencryptionrule.html#aws-properties-s3-bucket-serversideencryptionrule--examples--Create_a_bucket_with_default_encryption) e [Criar um bucket usando criptografia do lado do servidor do AWS KMS com uma Chave de bucket do S3](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-serversideencryptionrule.html#aws-properties-s3-bucket-serversideencryptionrule--examples--Create_a_bucket_using_AWS_KMS_server-side_encryption_with_an_S3_Bucket_Key) no tópico `AWS::S3::Bucket ServerSideEncryptionRule` do *Guia do usuário do AWS CloudFormation*. 

# Usar criptografia do lado do servidor com o AWS KMS (SSE-KMS)
<a name="UsingKMSEncryption"></a>

**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 CloudTrail, no Inventário 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 CLI e em SDKs da AWS. Para obter mais informações, consulte [Perguntas frequentes sobre criptografia padrão](https://docs.aws.amazon.com/AmazonS3/latest/userguide/default-encryption-faq.html).

A criptografia do lado do servidor é a criptografia de dados em seu destino pela aplicação ou serviço que os recebe.

O Amazon S3 ativa automaticamente a criptografia do lado do servidor com chaves gerenciadas pelo Amazon S3 (SSE-S3) para uploads de novos objetos.

A menos que você especifique o contrário, os buckets usam SSE-S3 por padrão para criptografar objetos. No entanto, você pode optar por configurar buckets para usar a criptografia do lado do servidor com chaves do AWS Key Management Service (AWS KMS) (SSE-KMS) em vez disso. Para obter mais informações, consulte [Especificação de criptografia no lado do servidor com o AWS KMS (SSE-KMS)](specifying-kms-encryption.md).

O AWS KMS é um serviço que combina hardware e software seguros e altamente disponíveis para fornecer um sistema de gerenciamento de chaves escalado para a nuvem. O Amazon S3 usa criptografia do lado do servidor com AWS KMS (SSE-KMS) para criptografar os dados do objeto do S3. Além disso, quando a SSE-KMS é solicitada para o objeto, a soma de verificação do S3 (como parte dos metadados do objeto) é armazenada em formato criptografado. Para obter mais informações sobre a soma de verificação, consulte [Verificar a integridade do objeto no Amazon S3](checking-object-integrity.md).

Se você usar chaves do KMS, poderá usar o AWS KMS por meio do [Console de gerenciamento da AWS](https://console.aws.amazon.com/kms) ou da [API do AWS KMS](https://docs.aws.amazon.com/kms/latest/APIReference/) para fazer o seguinte: 
+ Criar, visualizar, editar, monitorar, ativar/desativar, rotacionar e programar a exclusão de chaves KMS, tudo de forma centralizada.
+ Definir políticas que controlam como e por quem as chaves do KMS podem ser usadas.
+ Audite o uso da chave do KMS para verificar se ela está sendo usada corretamente. A auditoria é compatível com a [API do AWS KMS](https://docs.aws.amazon.com/kms/latest/APIReference/), não com o [console do AWS KMS](https://console.aws.amazon.com/kms).



Os controles de segurança do AWS KMS podem ajudá-lo a satisfazer os requisitos de conformidade relacionados à criptografia. Você pode usar essas chaves do KMS para proteger seus dados em buckets do Amazon S3. Ao usar a criptografia SSE-KMS com um bucket do S3, as AWS KMS keys devem estar na mesma região que o bucket.

Não há custos adicionais por usar o AWS KMS keys. Para obter mais informações, consulte [Conceitos de AWS KMS key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys) no *Guia do desenvolvedor do AWS Key Management Service* e [Preços do AWS KMS](https://aws.amazon.com/kms/pricing).

Para obter instruções sobre como permitir que os usuários do IAM acessem os buckets criptografados do KMS, consulte [Meu bucket do Amazon S3 tem criptografia padrão usando uma chave personalizada do AWS KMS. Como permitir que os usuários façam download pelo bucket e upload para o bucket?](https://repost.aws/knowledge-center/s3-bucket-access-default-encryption) no Centro de Conhecimento do AWS re:Post.

**Permissões**  
Para fazer uma solicitação `PutObject` bem-sucedida para criptografar um objeto com uma chave do AWS KMS ao Amazon S3, você precisa de permissões `kms:GenerateDataKey` na chave. Para fazer download de um objeto criptografado com uma AWS KMS key, você precisa de permissões `kms:Decrypt` para a chave. Para [realizar um upload fracionado](https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpuoverview.html#mpuAndPermissions) a fim de criptografar um objeto com uma AWS KMS key, você precisa das permissões `kms:GenerateDataKey` e `kms:Decrypt` para a chave.

**Importante**  
Analise cuidadosamente as permissões concedidas em suas políticas de chave do KMS. Restrinja sempre as permissões de política de chave do KMS gerenciada pelo cliente somente às entidades principais do IAM e a serviços da AWS que precisam acessar a ação de chave do AWS KMS pertinente. Para saber mais, consulte [Usar políticas de chaves no AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html).

**Topics**
+ [AWS KMS keys](#aws-managed-customer-managed-keys)
+ [Amazon S3 Bucket Keys](#sse-kms-bucket-keys)
+ [Exigir a criptografia no lado do servidor](#require-sse-kms)
+ [Contexto de criptografia](#encryption-context)
+ [Enviar solicitações para objetos criptografados do AWS KMS](#aws-signature-version-4-sse-kms)
+ [Especificação de criptografia no lado do servidor com o AWS KMS (SSE-KMS)](specifying-kms-encryption.md)
+ [Redução do custo do SSE-KMS com chaves de bucket do Amazon S3](bucket-key.md)

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

Ao usar criptografia do lado do servidor com o AWS KMS (SSE-KMS), você pode usar a [chave gerenciada pela AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) padrão ou especificar uma [chave gerenciada pelo cliente](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) que você já tenha criado. O AWS KMS é compatível com *criptografia envelopada*. O S3 usa os recursos do AWS KMS de *criptografia envelopada* para proteger ainda mais seus dados. Criptografia envelopada é a prática de criptografar dados de texto simples com uma chave de dados, depois criptografar essa chave de dados com uma chave do KMS. Para ter mais informações sobre a criptografia de envelope, consulte [Criptografia de envelope](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#enveloping) no *Guia do desenvolvedor do AWS Key Management Service*.

Se você não especificar uma chave gerenciada pelo cliente, o Amazon S3 criará automaticamente uma Chave gerenciada pela AWS em sua Conta da AWS na primeira vez que você adicionar um objeto criptografado com SSE-KMS a um bucket. Por padrão, o Amazon S3 usa essa chave do KMS para SSE-KMS. 

**nota**  
Objetos criptografados usando SSE-KMS com [Chaves gerenciadas pela AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) não podem ser compartilhados entre contas. Se você precisar replicar dados de SSE-KMS entre contas, será necessário usar uma [chave gerenciada pelo cliente](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) do AWS KMS. 

Se você quiser usar uma chave gerenciada pelo cliente para SSE-KMS, crie uma chave de criptografia simétrica gerenciada pelo cliente antes de configurar a SSE-KMS. Depois, ao configurar o SSE-KMS para seu bucket, especifique a chave gerenciada pelo cliente existente. Para obter mais informações sobre chaves de criptografia simétrica, 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*.

A criação de uma chave gerenciada pelo cliente oferece a você mais flexibilidade e controle. Por exemplo, você pode criar, alternar e desabilitar chaves gerenciadas pelo cliente. Você também pode definir controles de acesso e auditar a chave gerenciada pelo cliente que você usa para proteger seus dados. Para obter mais informações sobre chaves gerenciadas pelo cliente e pela AWS, consulte [Chaves de clientes e chaves da AWS](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#key-mgmt) no *Guia do desenvolvedor do AWS Key Management Service*.

**nota**  
Ao usar a criptografia do lado do servidor com uma chave gerenciada pelo cliente que é armazenada em um armazenamento de chaves externo, ao contrário das chaves do KMS padrão, você é responsável por garantir a disponibilidade e a durabilidade do seu material de chaves. Para obter mais informações sobre armazenamentos de chaves externos e como eles mudam o modelo de responsabilidade compartilhada, consulte [Armazenamentos de chaves externos](https://docs.aws.amazon.com//kms/latest/developerguide/keystore-external.html) no *Guia do desenvolvedor do AWS Key Management Service*.

### Usar criptografia SSE-KMS para operações entre contas
<a name="sse-kms-cross-account-operations"></a>

Ao utilizar a criptografia para operações entre contas, esteja ciente do seguinte:
+ Se o nome do recurso da Amazon (ARN) ou alias da AWS KMS key não for fornecido no momento da solicitação nem por meio da configuração de criptografia padrão do bucket, a Chave gerenciada pela AWS (`aws/s3`) da conta que está fazendo upload será utilizada para criptografia e será necessária para a operação de descriptografia.
+ A Chave gerenciada pela AWS (`aws/s3`) pode ser usada como chave do KMS para operações entre contas quando as entidades principais do AWS Identity and Access Management (IAM) que estão fazendo upload e acessando são da mesma Conta da AWS.
+ Se quiser conceder acesso entre contas aos seus objetos do S3, use uma chave gerenciada pelo cliente. Você pode configurar a política de uma chave gerenciada pelo cliente para permitir o acesso de outra conta.
+ Se estiver especificando uma chave do KMS gerenciada pelo cliente, recomendamos usar um ARN de chave do KMS totalmente qualificado. Se você usar um alias da chave do KMS, o AWS KMS resolverá a chave na conta do solicitante. Isso pode resultar em dados criptografados com uma chave do KMS pertencente ao solicitante, e não ao proprietário do bucket.
+ É necessário especificar uma chave para a qual você (o solicitante) recebeu a permissão `Encrypt`. 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 ter mais informações sobre quando usar as chaves gerenciadas pelo cliente e as chaves do KMS gerenciadas pela AWS, consulte [Devo usar uma Chave gerenciada pela AWS ou uma chave pelo cliente para criptografar meus objetos no Amazon S3?](https://aws.amazon.com/premiumsupport/knowledge-center/s3-object-encryption-keys/)

### Fluxo de trabalho de criptografia SSE-KMS
<a name="sse-kms-encryption-workflow"></a>

Se você optar por criptografar seus dados usando uma Chave gerenciada pela AWS ou uma chave gerenciada pelo cliente, o AWS KMS e o Amazon S3 realizarão as seguintes ações de criptografia envelopada:

1. O Amazon S3 solicitará uma [chave de dados](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#data-keys) em texto simples e uma cópia da chave criptografada na chave do KMS especificada.

1. AWS KMSO gera uma chave de dados, criptografa-a com a chave do KMS e envia a chave de dados em texto simples e a chave de dados criptografada ao Amazon S3.

1. O Amazon S3 criptografa os dados usando a chave de dados e remove a chave de texto não criptografado da memória assim que possível, após o uso.

1. O Amazon S3 armazena a chave de dados criptografada como metadados com os dados criptografados.

Quando você solicitar que os dados sejam descriptografados, o Amazon S3 e o AWS KMS farão o seguinte:

1. O Amazon S3 envia a chave de dados criptografada ao AWS KMS em uma solicitação `Decrypt`.

1. O AWS KMS descriptografa a chave dos dados criptografados usando a mesma chave do KMS e retorna a chave de dados de texto simples para o Amazon S3.

1. O Amazon S3 descriptografa os dados criptografados usando a chave de dados de texto simples e remove a chave de dados de texto simples da memória o quanto antes.

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

### Auditoria da criptografia SSE-KMS
<a name="sse-kms-encryption-audit"></a>

Para identificar solicitações que especificam SSE-KMS, você pode usar as métricas **All SSE-KMS requests** (Todas as solicitações de SSE-KMS) e **% all SSE-KMS requests** (% de todas as solicitações de SSE-KMS) da Lente de Armazenamento do Amazon S3. A Lente de Armazenamento do S3 é um recurso de análise de armazenamento em nuvem que você pode usar para obter visibilidade em toda a organização sobre o uso e a atividade do armazenamento de objetos. Você também pode usar a contagem de buckets habilitada para SSE-KMS e a porcentagem de buckets habilitados para (SSE-KMS) para a [criptografia de bucket padrão](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-encryption.html). Para obter mais informações, consulte [ Avaliar a atividade e o uso do armazenamento com o S3 Storage Lens](https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage_lens.html?icmpid=docs_s3_user_guide_UsingKMSEncryption.html). Para obter uma lista completa de métricas, consulte o [Glossário de métricas da Lente de Armazenamento do S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage_lens_metrics_glossary.html?icmpid=docs_s3_user_guide_UsingKMSEncryption.html).

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. 

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

Ao configurar a criptografia do lado do servidor usando o AWS KMS (SSE-KMS), você pode configurar os buckets para usar chaves de bucket do S3 para SSE-KMS. Usar uma chave em nível de bucket para SSE-KMS pode reduzir os custos de solicitação do AWS KMS em até 99% ao reduzir o tráfego de solicitação do Amazon S3 para o AWS KMS. 

Quando você configura o bucket para usar uma chave de bucket do S3 para SSE-KMS em novos objetos, o AWS KMS gera uma chave no nível de bucket usada para criar [chaves de dados](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#data-keys) exclusivas para objetos no bucket. Essa chave de bucket do S3 é usada por um período limitado no Amazon S3, reduzindo ainda mais a necessidade do Amazon S3 fazer solicitações ao AWS KMS para concluir operações de criptografia. Para obter mais informações sobre como usar Chaves de bucket do S3, consulte [Redução do custo do SSE-KMS com chaves de bucket do Amazon S3](bucket-key.md).

## Exigir a criptografia no lado do servidor
<a name="require-sse-kms"></a>

Para exigir criptografia do lado do servidor de todos os objetos em um bucket específico do Amazon S3, é possível usar uma política de bucket. Por exemplo, a política de bucket a seguir negará permissão de upload de objeto (`s3:PutObject`) para todos se a solicitação não incluir um cabeçalho `x-amz-server-side-encryption-aws-kms-key-id` que solicita criptografia do lado do servidor com a SSE-KMS.

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Id":"PutObjectPolicy",
   "Statement":[{
         "Sid":"DenyObjectsThatAreNotSSEKMS",
         "Effect":"Deny",
         "Principal":"*",
         "Action":"s3:PutObject",
         "Resource":"arn:aws:s3:::amzn-s3-demo-bucket1/*",
         "Condition":{
            "Null":{
               "s3: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 `s3: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 `s3:x-amz-server-side-encryption-aws-kms-key-id` existe. 

**nota**  
Ao fazer upload de um objeto, é possível especificar a chave do KMS usando o cabeçalho `x-amz-server-side-encryption-aws-kms-key-id` ou confiar na [configuração de criptografia de bucket padrão](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-encryption.html). Se sua solicitação PutObject especificar `aws:kms` no cabeçalho `x-amz-server-side-encryption`, mas não especificar o cabeçalho `x-amz-server-side-encryption-aws-kms-key-id`, o Amazon S3 presumirá que você deseja usar o Chave gerenciada pela AWS. No entanto, 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.

Consulte uma lista completa de chaves de condição específicas do Amazon S3 em [Condition keys for Amazon S3](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html#amazons3-policy-keys) na *Referência de autorização do serviço*.

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

Um *contexto de criptografia* é um conjunto de pares chave-valor que contém informações contextuais adicionais sobre os dados. O contexto de criptografia não é criptografado. Quando um contexto de criptografia é especificado para uma operação criptográfica, o Amazon S3 deve especificar o mesmo contexto de criptografia da operação de descriptografia. Caso contrário, a descriptografia falhará. O AWS KMS usa o contexto de criptografia como [dados autenticados adicionais](https://docs.aws.amazon.com/database-encryption-sdk/latest/devguide/concepts.html#digital-sigs) (AAD) para oferecer suporte à [criptografia autenticada](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#cryptographic-operations#digital-sigs). Para obter mais informações sobre o contexto de criptografia, consulte [Contexto de criptografia](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context) no *Guia do desenvolvedor do AWS Key Management Service*. 

Por padrão, o Amazon S3 usa o nome do recurso da Amazon (ARN) do objeto ou do bucket como o par de contexto de criptografia: 
+ **Se você usar o SSE-KMS sem habilitar uma chave de bucket do S3**, o ARN do objeto será usado como o contexto de criptografia.

  ```
  arn:aws:s3:::object_ARN
  ```
+ **Se você usar o SSE-KMS e habilitar uma chave de bucket do S3**, o ARN do bucket será usado como o contexto de criptografia. Para obter mais informações sobre chaves de buckets do S3, consulte [Redução do custo do SSE-KMS com chaves de bucket do Amazon S3](bucket-key.md).

  ```
  arn:aws:s3:::bucket_ARN
  ```

Opcionalmente, você pode fornecer um par de contexto de criptografia adicional usando o cabeçalho `x-amz-server-side-encryption-context` em uma solicitação [s3:PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html#API_PutObject_RequestSyntax). 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. Ao processar sua solicitação `PUT`, o Amazon S3 acrescenta o contexto de criptografia padrão de `aws:s3:arn` àquele fornecido por você. 

É possível usar o contexto de criptografia para identificar e categorizar suas operações de criptografia. Você também pode usar o valor do ARN do contexto de criptografia padrão para rastrear solicitações relevantes no AWS CloudTrail visualizando qual ARN do Amazon S3 foi usado com qual chave de criptografia.

No campo `requestParameters` de um arquivo de log do CloudTrail, o contexto de criptografia é parecido com este. 

```
"encryptionContext": {
    "aws:s3:arn": "arn:aws:s3:::amzn-s3-demo-bucket1/file_name"
}
```

Quando você usa o SSE-KMS com o recurso opcional S3 Bucket Keys, o valor do contexto de criptografia é o ARN do bucket.

```
"encryptionContext": {
    "aws:s3:arn": "arn:aws:s3:::amzn-s3-demo-bucket1"
}
```

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

**Importante**  
Todas as solicitações `GET` e `PUT` para objetos criptografados do AWS KMS devem ser criadas usando Secure Sockets Layer (SSL) ou Transport Layer Security (TLS). As solicitações também devem ser assinadas usando credenciais válidas, como AWS Signature Version 4 (ou AWS Signature Version 2).

O AWS Signature Version 4 é o processo de adicionar informações de autenticação às solicitações da AWS enviadas por HTTP. Por segurança, a maioria das solicitações para AWS deve ser assinada com uma chave de acesso, que consiste em um ID de chave de acesso e na chave de acesso secreta. Essas duas chaves são comumente conhecidas como suas credenciais de segurança. Para obter mais informações, consulte [Autenticação de solicitações (AWS Signature Version 4)](https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html) e [Processo de assinatura do Signature Version 4](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html).

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

**Topics**
+ [AWS KMS keys](#aws-managed-customer-managed-keys)
+ [Amazon S3 Bucket Keys](#sse-kms-bucket-keys)
+ [Exigir a criptografia no lado do servidor](#require-sse-kms)
+ [Contexto de criptografia](#encryption-context)
+ [Enviar solicitações para objetos criptografados do AWS KMS](#aws-signature-version-4-sse-kms)
+ [Especificação de criptografia no lado do servidor com o AWS KMS (SSE-KMS)](specifying-kms-encryption.md)
+ [Redução do custo do SSE-KMS com chaves de bucket do Amazon S3](bucket-key.md)

# Especificação de criptografia no lado do servidor com o AWS KMS (SSE-KMS)
<a name="specifying-kms-encryption"></a>

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 atualizar 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.

Para ter mais informações sobre a alteração da configuração padrão de criptografia para buckets de uso geral, consulte [Configurar a criptografia padrão](default-bucket-encryption.md). 

Quando você altera a configuração de criptografia padrão do bucket para SSE-KMS, o tipo de criptografia dos objetos do Amazon S3 existentes no bucket não é alterado. Para alterar o tipo de criptografia de objetos preexistentes depois de atualizar a configuração padrão de criptografia para SSE-KMS, use o recurso Operações em Lote do Amazon S3. Basta fornecer uma lista de objetos ao recurso Operações em Lote do S3 para que ele chame a respectiva operação de API. É possível usar a ação [Copiar objetos](batch-ops-copy-object.md) para copiar objetos existentes, gravando-os de volta no mesmo bucket que os objetos criptografados por SSE-KMS. Um único trabalho do Batch Operations pode realizar a operação especificada em bilhões de objetos. Para ter mais informações, consulte [Executar operações de objetos em massa com o Operações em Lote](batch-ops.md) e a publicação [How to retroactively encrypt existing objects in Amazon S3 using S3 Inventory, Amazon Athena, and S3 Batch Operations](https://aws.amazon.com/blogs/security/how-to-retroactively-encrypt-existing-objects-in-amazon-s3-using-s3-inventory-amazon-athena-and-s3-batch-operations/) do *Blog do AWS Storage*. 

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](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html) 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](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*. 

## Usar o console do S3
<a name="add-object-encryption-kms"></a>

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](mpu-upload-object.md#UsingCLImpUpload) ou [SDKs da AWS](CopyingObjectsMPUapi.md) 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](using-with-s3-policy-actions.md). Para ver exemplos das políticas que concedem essas permissões, consulte [Exemplos de políticas baseadas em identidade para o Amazon S3](example-policies-s3.md).
Se você alterar a criptografia de um objeto, um novo objeto será criado para substituir o antigo. Se o versionamento do S3 estiver habilitado, uma nova versão do objeto será criada e o objeto existente se tornará uma versão mais antiga. O perfil que altera a propriedade também se torna o proprietário do novo objeto (ou versão do objeto). 

**Como adicionar ou alterar a criptografia de um objeto**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon S3 em [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. 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.

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

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

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

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

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

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

   1. 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](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#key-mgmt) 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](https://docs.aws.amazon.com//kms/latest/developerguide/create-keys.html) 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](https://docs.aws.amazon.com//kms/latest/developerguide/find-symm-asymm.html) no *Guia do desenvolvedor do AWS Key Management Service*.

1. 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.

1. Escolha **Salvar alterações**.

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

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

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`

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

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

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`.
+ [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. 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.
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html): 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.
+ [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_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 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ções `HEAD`,ou um erro HTTP 400 BadRequest será exibido.

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

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

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

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](bucket-key.md).

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](configuring-bucket-key-object.md).

## Usar a AWS CLI
<a name="KMSUsingCLI"></a>

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, 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`, 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 --key example-object-key --server-side-encryption aws:kms --ssekms-key-id example-key-id --body filepath
```

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](https://docs.aws.amazon.com//AmazonS3/latest/userguide/bucket-key.html).

```
aws s3api put-object --bucket amzn-s3-demo-bucket --key example-object-key --server-side-encryption aws:kms --bucket-key-enabled --body filepath
```

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 --key example-object-key --body filepath --bucket amzn-s3-demo-bucket --key example-object-key --sse aws:kms --sse-kms-key-id example-key-id --body filepath
```

## Usar SDKs da AWS
<a name="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.

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

### `CopyObject`Operação do
<a name="kms-copy-operation"></a>

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](copy-object.md). 

### `PUT`Operação do
<a name="kms-put-operation"></a>

------
#### [ Java ]

Ao fazer upload de um objeto usando o AWS SDK para Java, você pode solicitar que o Amazon S3 use uma AWS KMS key adicionando a propriedade `SSEAwsKeyManagementParams`, conforme exibido na seguinte solicitação:

```
PutObjectRequest putRequest = new PutObjectRequest(bucketName,
   keyName, file).withSSEAwsKeyManagementParams(new SSEAwsKeyManagementParams());
```

Nesse caso, o Amazon S3 usa a Chave gerenciada pela AWS (`aws/s3`). Para obter mais informações, consulte [Usar criptografia do lado do servidor com o AWS KMS (SSE-KMS)](UsingKMSEncryption.md). Como opção, é possível criar uma chave de criptografia simétrica do KMS e especificar isso na solicitação, conforme mostrado no seguinte exemplo:

```
PutObjectRequest putRequest = new PutObjectRequest(bucketName,
   keyName, file).withSSEAwsKeyManagementParams(new SSEAwsKeyManagementParams(keyID));
```

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

Para ver exemplos de código funcionais de upload de um objeto, consulte os seguintes tópicos. Para usar esses exemplos, é necessário atualizar os exemplos de código e fornecer informações de criptografia, conforme exibido no fragmento de código anterior.
+ Para fazer upload de um objeto em uma única operação, consulte [Fazer upload de objetos](upload-objects.md).
+ Para uploads multiparte que usam as operações de API de upload multiparte de alto ou baixo nível, consulte [Fazer upload de um objeto usando multipart upload](mpu-upload-object.md). 

------
#### [ .NET ]

Ao fazer upload de um objeto usando o AWS SDK para .NET, você pode solicitar que o Amazon S3 use uma AWS KMS key adicionando a propriedade `ServerSideEncryptionMethod`, conforme exibido na seguinte solicitação:

```
PutObjectRequest putRequest = new PutObjectRequest
 {
     BucketName = amzn-s3-demo-bucket,
     Key = keyName,
     // other properties
     ServerSideEncryptionMethod = ServerSideEncryptionMethod.AWSKMS
 };
```

Nesse caso, o Amazon S3 usa a Chave gerenciada pela AWS. Para obter mais informações, consulte [Usar criptografia do lado do servidor com o AWS KMS (SSE-KMS)](UsingKMSEncryption.md). Como opção, você pode criar sua própria chave de criptografia simétrica do KMS gerenciada pelo cliente e especificar isso na solicitação, conforme mostrado no seguinte exemplo:

```
PutObjectRequest putRequest1 = new PutObjectRequest
{
  BucketName = amzn-s3-demo-bucket,
  Key = keyName,
  // other properties
  ServerSideEncryptionMethod = ServerSideEncryptionMethod.AWSKMS,
  ServerSideEncryptionKeyManagementServiceKeyId = keyId
};
```

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

Para ver exemplos de código funcionais de upload de um objeto, consulte os seguintes tópicos. Para usar esses exemplos, é necessário atualizar os exemplos de código e fornecer informações de criptografia, conforme exibido no fragmento de código anterior.
+ Para fazer upload de um objeto em uma única operação, consulte [Fazer upload de objetos](upload-objects.md).
+ Para uploads multiparte que usam as operações de API de upload multiparte de alto ou baixo nível, consulte [Fazer upload de um objeto usando multipart upload](mpu-upload-object.md). 

------

### Pre-signed URLs
<a name="kms-presigned-urls"></a>

------
#### [ Java ]

Ao criar um URL pré-assinado para um objeto criptografado com uma AWS KMS key, você deverá especificar explicitamente o Signature Version 4, conforme mostrado no seguinte exemplo:

```
ClientConfiguration clientConfiguration = new ClientConfiguration();
clientConfiguration.setSignerOverride("AWSS3V4SignerType");
AmazonS3Client s3client = new AmazonS3Client(
        new ProfileCredentialsProvider(), clientConfiguration);
...
```

Para ver um exemplo de código, consulte [Compartilhar objetos com URLs pré-assinados](ShareObjectPreSignedURL.md). 

------
#### [ .NET ]

Ao criar um URL pré-assinado para um objeto criptografado com uma AWS KMS key, você deverá especificar explicitamente o Signature Version 4, conforme mostrado no seguinte exemplo:

```
AWSConfigs.S3Config.UseSignatureVersion4 = true;
```

Para ver um exemplo de código, consulte [Compartilhar objetos com URLs pré-assinados](ShareObjectPreSignedURL.md).

------

# Redução do custo do SSE-KMS com chaves de bucket do Amazon S3
<a name="bucket-key"></a>

As chaves de bucket do Amazon S3 reduzem o custo da criptografia do lado do servidor do Amazon S3 com chaves do AWS Key Management Service (AWS KMS) (SSE-KMS). Usar uma chave no nível de bucket para SSE-KMS pode reduzir os custos de solicitação do AWS KMS em até 99% ao reduzir o tráfego de solicitação do Amazon S3 para o AWS KMS. Com alguns cliques no Console de gerenciamento da AWS e sem alterações em aplicações do cliente, você pode configurar o bucket para usar uma chave de bucket do S3 para criptografia SSE-KMS em novos objetos.

**nota**  
As chaves de bucket do S3 não comportam criptografia de camada dupla do lado do servidor com chaves do AWS Key Management Service (AWS KMS) (DSSE-KMS).

## Chaves de bucket S3 para SSE-KMS
<a name="bucket-key-overview"></a>

Workloads que acessam milhões ou bilhões de objetos criptografados com o SSE-KMS podem gerar grandes volumes de solicitações para o AWS KMS. Quando você usa o SSE-KMS para proteger seus dados sem uma chave de bucket do S3, o Amazon S3 usa uma [chave de dados](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#data-keys) individual do AWS KMS para cada objeto. Nesse caso, o Amazon S3 faz uma chamada para o AWS KMS sempre que uma solicitação é feita contra um objeto criptografado pelo KMS. Para obter informações sobre como o SSE-KMS funciona, consulte [Usar criptografia do lado do servidor com o AWS KMS (SSE-KMS)](UsingKMSEncryption.md). 

Quando você configura um bucket para usar uma chave de bucket do S3 para SSE-KMS, a AWS gera uma chave de bucket de curta duração do AWS KMS e a mantém temporariamente no S3. Essa chave de bucket criará chaves de dados para novos objetos durante seu ciclo de vida. As chaves de bucket do S3 são usadas por um período limitado no Amazon S3, reduzindo a necessidade de o Amazon S3 fazer solicitações ao AWS KMS para concluir operações de criptografia. Isso reduz o tráfego do S3 para o AWS KMS, permitindo que você acesse objetos criptografados pelo AWS KMS no Amazon S3 por uma fração do custo anterior.

Chaves exclusivas em nível de bucket são buscadas pelo menos uma vez por solicitante para garantir que o acesso do solicitante à chave seja capturado em um evento do CloudTrail no AWS KMS. O Amazon S3 trata os chamadores como solicitantes diferentes quando usam perfis ou contas diferentes, ou o mesmo perfil com políticas de escopo diferentes. A economia de solicitações do AWS KMS reflete o número de solicitantes, os padrões de solicitação e a idade relativa dos objetos solicitados. Por exemplo, um número menor de solicitantes, solicitando vários objetos em um período limitado e criptografados com a mesma chave de bucket, resultará em maior economia.

**nota**  
O uso de chaves de bucket do S3 permite que você reduza os custos de solicitações do AWS KMS ao diminuir as solicitações ao AWS KMS para operações `Encrypt`, `GenerateDataKey` e `Decrypt` por meio do uso de uma chave em nível de bucket. Por definição, as solicitações subsequentes que aproveitam essa chave em nível de bucket não resultam em solicitações de API do AWS KMS nem validam o acesso em relação à política de chave AWS KMS.

Quando você configura uma chave de bucket do S3, os objetos que já estão no bucket não usam a chave do bucket do S3. Para configurar uma chave de bucket do S3 para objetos existentes, você pode usar uma operação `CopyObject`. Para obter mais informações, consulte [Configurar uma chave de bucket do S3 no nível de objeto](configuring-bucket-key-object.md).

O Amazon S3 compartilhará apenas uma chave de bucket do S3 para objetos criptografados pela mesma AWS KMS key. As chaves de bucket do S3 são compatíveis com chaves do KMS criadas pelo AWS KMS, [material de chave importado](https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html) e [material chave baseado em armazenamentos de chaves personalizados](https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html).

![\[O diagrama mostra o AWS KMS gerando uma chave de bucket que cria chaves de dados para objetos em um bucket.\]](http://docs.aws.amazon.com/pt_br/AmazonS3/latest/userguide/images/S3-Bucket-Keys.png)


## Configurando chaves de bucket do S3
<a name="configure-bucket-key"></a>

Você pode configurar seu bucket para usar uma chave de bucket do S3 para SSE-KMS em novos objetos por meio do console do Amazon S3, dos AWS SDKs, da AWS CLI ou da API REST. Com as chaves de bucket do S3 habilitadas em seu bucket, os objetos carregados com outra chave de SSE-KMS especificada usarão suas próprias chaves de bucket do S3. Independentemente da configuração de chave de bucket do S3, você pode incluir o cabeçalho `x-amz-server-side-encryption-bucket-key-enabled` com um valor `true` ou `false` em sua solicitação para substituir a configuração do bucket.

Antes de configurar seu bucket para usar uma chave de bucket do S3, revise [Alterações na observação antes de habilitar uma chave de bucket do S3](#bucket-key-changes). 

### Configuração de uma chave de bucket do S3 usando o console do Amazon S3
<a name="configure-bucket-key-console"></a>

Ao criar um novo bucket, você pode configurar seu bucket para usar uma Chave de bucket do S3 para SSE-KMS em novos objetos. Você também pode configurar um bucket existente para usar uma Chave de bucket do S3 para SSE-KMS em novos objetos atualizando suas propriedades do bucket. 

Para obter mais informações, consulte [Configurando seu bucket para usar uma chave de bucket do S3 com SSE-KMS para novos objetos](configuring-bucket-key.md).

### Compatibilidade da API REST, da AWS CLI e do AWS SDK com chaves de bucket do S3
<a name="configure-bucket-key-programmatic"></a>

Você pode usar a API REST, a AWS CLI ou o AWS SDK para configurar seu bucket para usar uma chave de bucket do S3 para SSE-KMS em novos objetos. Você também pode habilitar uma chave de bucket do S3 no nível do objeto.

Para saber mais, consulte: 
+ [Configurar uma chave de bucket do S3 no nível de objeto](configuring-bucket-key-object.md)
+ [Configurando seu bucket para usar uma chave de bucket do S3 com SSE-KMS para novos objetos](configuring-bucket-key.md)

As seguintes operações de API são compatíveis com chaves de bucket do S3 para SSE-KMS:
+ [PutBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html)
  + `ServerSideEncryptionRule` aceita o parâmetro `BucketKeyEnabled` para habilitar e desabilitar uma chave de bucket do S3.
+ [GetBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketEncryption.html)
  + `ServerSideEncryptionRule` retorna as configurações para `BucketKeyEnabled`.
+ [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html), [CopyObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html), [CreateMultipartUpload](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html), e [POST Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html)
  + O cabeçalho de solicitação `x-amz-server-side-encryption-bucket-key-enabled` ativa ou desativa uma chave de bucket do S3 no nível do objeto.
+ [HeadObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html), [GetObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html), [UploadPartCopy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html), [UploadPart](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html) e [CompleteMultipartUpload](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)
  + O cabeçalho de resposta `x-amz-server-side-encryption-bucket-key-enabled` indica se uma chave de bucket do S3 está ativada ou desativada para um objeto.

### Trabalhar com o CloudFormation
<a name="configure-bucket-key-cfn"></a>

No CloudFormation, o recurso `AWS::S3::Bucket` inclui uma propriedade de criptografia chamada `BucketKeyEnabled` que você pode usar para ativar ou desativar uma chave de bucket do S3. 

Para obter mais informações, consulte  [Usar o CloudFormation](configuring-bucket-key.md#enable-bucket-key-cloudformation).

## Alterações na observação antes de habilitar uma chave de bucket do S3
<a name="bucket-key-changes"></a>

Antes de ativar uma chave de bucket do S3, observe as seguintes alterações relacionadas:

### Políticas de chave do IAM ou do AWS KMS
<a name="bucket-key-policies"></a>

Se suas políticas do AWS Identity and Access Management (IAM) ou políticas de chave do AWS KMS usarem seu objeto do nome do recurso da Amazon (ARN) como contexto de criptografia para refinar ou limitar o acesso à chave do KMS, essas políticas não funcionarão com uma chave de bucket do S3. As Chaves de bucket do S3 usam o ARN do bucket como contexto de criptografia. Antes de ativar uma chave de bucket do S3, atualize suas políticas do IAM ou políticas de chave do AWS KMS para usar o ARN do bucket como contexto de criptografia.

Para obter mais informações sobre contexto de criptografia e chaves de bucket do S3, consulte [Contexto de criptografia](UsingKMSEncryption.md#encryption-context).

### Eventos do CloudTrail para o AWS KMS
<a name="bucket-key-cloudtrail"></a>

Depois de habilitar uma chave de bucket do S3, seus eventos do AWS KMS CloudTrail registram em log o ARN do bucket em vez do ARN do objeto. Além disso, você vê menos eventos do KMS CloudTrail para objetos SSE-KMS em seus logs. Como o material de chave tem uma limitação de tempo no Amazon S3, menos solicitações são feitas ao AWS KMS.

## Uso de uma chave de bucket do S3 com replicação
<a name="bucket-key-replication"></a>

Você pode usar chaves de bucket do S3 com SRR (Same-Region Replication, replicação entre regiões) e CRR (Cross-Region Replication, replicação entre regiões).

Quando o Amazon S3 replica um objeto criptografado, ele geralmente preserva as configurações de criptografia do objeto de réplica no bucket de destino. No entanto, se o objeto de origem não for criptografado e seu bucket de destino usar criptografia padrão ou uma chave de bucket do S3, o Amazon S3 criptografa o objeto com a configuração do bucket de destino. 

Os exemplos a seguir ilustram como uma chave de bucket do S3 funciona com a replicação. Para obter mais informações, consulte [Replicar objetos criptografados (SSE-S3, SSE-KMS, DSSE-KMS, SSE-C)](replication-config-for-kms-objects.md). 

**Example Exemplo 1 – O objeto de origem usa chaves de bucket do S3; o bucket de destino usa criptografia padrão**  
Se o objeto de origem usa uma Chave de bucket do S3, mas seu bucket de destino usa criptografia padrão com o SSE-KMS, o objeto de réplica manterá suas configurações de criptografia S3 Bucket Key no bucket de destino. O bucket de destino ainda usa criptografia padrão com SSE-KMS.   


**Example Exemplo 2 – O objeto de origem não é criptografado; o bucket de destino usa uma chave de bucket do S3 com SSE-KMS**  
Se o objeto de origem não estiver criptografado e o bucket de destino usar uma chave de bucket S3 com SSE-KMS, o objeto de réplica será criptografado usando uma chave de bucket S3 com a SSE-KMS no bucket de destino. Isso faz com que a `ETag` do objeto de origem seja diferente da `ETag` do objeto de réplica. Você precisa atualizar os aplicativos que usam a `ETag` para acomodar essa diferença.

## Como trabalhar com chaves de bucket do S3
<a name="using-bucket-key"></a>

Para obter mais informações sobre como ativar e trabalhar com chaves de bucket do S3, consulte as seguintes seções:
+ [Configurando seu bucket para usar uma chave de bucket do S3 com SSE-KMS para novos objetos](configuring-bucket-key.md)
+ [Configurar uma chave de bucket do S3 no nível de objeto](configuring-bucket-key-object.md)
+ [Visualizar as configurações para uma chave de bucket do S3](viewing-bucket-key-settings.md)

# Configurando seu bucket para usar uma chave de bucket do S3 com SSE-KMS para novos objetos
<a name="configuring-bucket-key"></a>

Ao configurar a criptografia do lado do servidor com chaves do AWS Key Management Service (AWS KMS) (SSE-KMS), você pode configurar seu bucket para usar uma chave de bucket do S3 para SSE-KMS em novos objetos. As chaves de bucket do S3 diminuem o tráfego de solicitações do Amazon S3 para o AWS KMS e reduzem o custo do SSE-KMS. Para obter mais informações, consulte [Redução do custo do SSE-KMS com chaves de bucket do Amazon S3](bucket-key.md).

Você pode configurar seu bucket para usar uma chave de bucket do S3 para SSE-KMS em novos objetos usando o console do Amazon S3, a API REST, AWS SDKs, a AWS Command Line Interface (AWS CLI) ou o CloudFormation. Se você quiser habilitar ou desabilitar uma chave de bucket do S3 para objetos existentes, poderá usar uma operação `CopyObject`. Para obter mais informações, consulte [Configurar uma chave de bucket do S3 no nível de objeto](configuring-bucket-key-object.md) e [Usar o Operações em Lote para habilitar chaves de bucket do S3 para SSE-KMS](batch-ops-copy-example-bucket-key.md).

Quando uma chave de bucket do S3 estiver habilitada para o bucket de origem ou de destino, o contexto de criptografia será o Amazon Resource Name (ARN) do bucket e não o ARN do objeto, por exemplo, `arn:aws:s3:::bucket_ARN`. Você precisa atualizar suas políticas do IAM a fim de usar o ARN de bucket para o contexto de criptografia. Para obter mais informações, consulte [Chaves de bucket do S3 e replicação](replication-config-for-kms-objects.md#bk-replication).

Os exemplos a seguir ilustram como uma chave de bucket do S3 funciona com a replicação. Para obter mais informações, consulte [Replicar objetos criptografados (SSE-S3, SSE-KMS, DSSE-KMS, SSE-C)](replication-config-for-kms-objects.md). 

**Pré-requisitos**  
Antes de configurar seu bucket para usar uma chave de bucket do S3, revise [Alterações na observação antes de habilitar uma chave de bucket do S3](bucket-key.md#bucket-key-changes).

**Topics**

## Uso do console do S3
<a name="enable-bucket-key"></a>

No console do S3, você pode ativar ou desativar uma chave de bucket do S3 para um bucket novo ou existente. Os objetos no console do S3 herdam sua configuração de chave de bucket do S3 da configuração do bucket. Quando você habilita uma chave de bucket do S3 para seu bucket, novos objetos que você envia para o bucket usam uma chave de bucket do S3 para SSE-KMS. 

**Carregando, copiando ou modificando objetos em buckets que tenham uma chave de bucket S3 ativada**  
Se você carregar, modificar ou copiar um objeto em um bucket que tenha uma chave de bucket S3 ativada, as configurações da chave de bucket do S3 para esse objeto poderão ser atualizadas para alinhar com a configuração do bucket.

Se um objeto já tiver uma chave de bucket S3 ativada, as configurações da chave de bucket do S3 para esse objeto não serão alteradas quando você copia ou modifica o objeto. No entanto, se você modificar ou copiar um objeto que não tenha uma chave de bucket S3 ativada e o bucket de destino tiver uma configuração de chave de bucket S3, o objeto herdará as configurações da chave de bucket S3 do bucket de destino. Por exemplo, se o objeto de origem não tiver uma chave de bucket do S3 ativada, mas o bucket de destino tiver a chave de bucket do S3 ativada, uma chave de bucket do S3 será habilitada para o objeto.

**Para habilitar uma chave de bucket do S3 ao criar um novo bucket**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon S3 em [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. No painel de navegação à esquerda, escolha **Buckets**.

1. Selecione **Create bucket (Criar bucket)**. 

1. Insira o nome do bucket e escolha sua Região da AWS. 

1. Em **Criptografia padrão**, para **Tipo de chave de criptografia**, escolha **Chave do AWS Key Management Service (SSE-KMS)**.

1. 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](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#key-mgmt) no *Guia do desenvolvedor do AWS Key Management Service*.
   + Para inserir o ARN da chave do KMS, escolha **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 obter mais informações sobre como criar uma AWS KMS key, consulte [Criação de chaves](https://docs.aws.amazon.com//kms/latest/developerguide/create-keys.html) no *Guia do desenvolvedor do AWS Key Management Service*.

1. Em **Bucket key** (Chave do bucket), escolha **Enable** (Ativar). 

1. Selecione **Create bucket (Criar bucket)**. 

   O Amazon S3 cria seu bucket com uma chave de bucket do S3 ativada. Novos objetos que você carregar no bucket usarão uma chave de bucket do S3. 

   Para desativar uma chave de bucket do S3, siga as etapas anteriores e escolha **Disable** (Desativar).

**Para habilitar uma chave de bucket do S3 para um bucket existente**

1. Abra o console do Amazon S3 em [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. No painel de navegação à esquerda, escolha **Buckets**.

1. Na lista **Buckets** (Buckets), escolha o bucket para o qual você deseja habilitar uma chave de bucket do S3.

1. Escolha a guia **Properties (Propriedades)**.

1. Em **Default encryption (Criptografia padrão)**, escolha **Edit (Editar)**.

1. Em **Criptografia padrão**, para **Tipo de chave de criptografia**, escolha **Chave do AWS Key Management Service (SSE-KMS)**.

1. 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](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#key-mgmt) no *Guia do desenvolvedor do AWS Key Management Service*.
   + Para inserir o ARN da chave do KMS, escolha **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 obter mais informações sobre como criar uma AWS KMS key, consulte [Criação de chaves](https://docs.aws.amazon.com//kms/latest/developerguide/create-keys.html) no *Guia do desenvolvedor do AWS Key Management Service*.

1. Em **Bucket key** (Chave do bucket), escolha **Enable** (Ativar). 

1. Selecione **Save changes**.

   O Amazon S3 habilita uma chave de bucket do S3 para novos objetos adicionados ao seu bucket. Os objetos existentes não usam a chave de bucket do S3. Para configurar uma chave de bucket do S3 para objetos existentes, você pode usar uma operação `CopyObject`. Para obter mais informações, consulte [Configurar uma chave de bucket do S3 no nível de objeto](configuring-bucket-key-object.md).

   Para desativar uma chave de bucket do S3, siga as etapas anteriores e escolha **Disable** (Desativar).

## Uso dos REST API
<a name="enable-bucket-key-rest"></a>

Você pode usar [PutBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html) para habilitar ou desabilitar uma chave de bucket do S3 para o bucket. Para configurar uma chave de bucket do S3 com `PutBucketEncryption`, use o tipo de dados [ServerSideEncryptionRule](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ServerSideEncryptionRule.html), que inclui criptografia padrão com SSE-KMS. Você também pode usar opcionalmente uma chave gerenciada pelo cliente especificando o ID da chave do KMS para a chave gerenciada pelo cliente.  

Para obter mais informações e sintaxe de exemplo, consulte [PutBucketenCryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html). 

## Usar o AWS SDK para Java
<a name="enable-bucket-key-sdk"></a>

O exemplo a seguir habilita a criptografia de bucket padrão com SSE-KMS e uma chave de bucket do S3 usando o AWS SDK para Java.

------
#### [ Java ]

```
AmazonS3 s3client = AmazonS3ClientBuilder.standard()
    .withRegion(Regions.DEFAULT_REGION)
    .build();
    
ServerSideEncryptionByDefault serverSideEncryptionByDefault = new ServerSideEncryptionByDefault()
    .withSSEAlgorithm(SSEAlgorithm.KMS);
ServerSideEncryptionRule rule = new ServerSideEncryptionRule()
    .withApplyServerSideEncryptionByDefault(serverSideEncryptionByDefault)
    .withBucketKeyEnabled(true);
ServerSideEncryptionConfiguration serverSideEncryptionConfiguration =
    new ServerSideEncryptionConfiguration().withRules(Collections.singleton(rule));

SetBucketEncryptionRequest setBucketEncryptionRequest = new SetBucketEncryptionRequest()
    .withServerSideEncryptionConfiguration(serverSideEncryptionConfiguration)
    .withBucketName(bucketName);
            
s3client.setBucketEncryption(setBucketEncryptionRequest);
```

------

## Como usar o AWS CLI
<a name="enable-bucket-key-cli"></a>

O exemplo a seguir habilita a criptografia de bucket padrão com SSE-KMS e uma chave de bucket do S3 usando o AWS CLI. Substitua `user input placeholders` por suas próprias informações.

```
aws s3api put-bucket-encryption --bucket amzn-s3-demo-bucket --server-side-encryption-configuration '{
        "Rules": [
            {
                "ApplyServerSideEncryptionByDefault": {
                    "SSEAlgorithm": "aws:kms",
                    "KMSMasterKeyID": "KMS-Key-ARN"
                },
                "BucketKeyEnabled": true
            }
        ]
    }'
```

## Usar o CloudFormation
<a name="enable-bucket-key-cloudformation"></a>

Para obter mais informações sobre como configurar uma chave de bucket do S3 com CloudFormation, consulte [AWS::S3::Bucket ServerSideEncryptionRule](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-serversideencryptionrule.html) no *Guia do usuário do AWS CloudFormation*.

# Configurar uma chave de bucket do S3 no nível de objeto
<a name="configuring-bucket-key-object"></a>

Ao executar uma operação PUT ou COPY usando a API REST, os AWS SDKs ou a AWS CLI, você pode habilitar ou desabilitar uma chave de bucket do S3 para o objeto adicionando o cabeçalho de solicitação `x-amz-server-side-encryption-bucket-key-enabled` com um valor `true` ou `false`. As chaves de bucket do S3 reduzem o custo da criptografia do lado do servidor usando o AWS Key Management Service (AWS KMS) (SSE-KMS), diminuindo assim o tráfego de solicitações 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](bucket-key.md). 

Quando você configura uma chave de bucket do S3 para um objeto usando uma operação PUT ou COPY, o Amazon S3 atualiza somente as configurações desse objeto. As configurações da chave de bucket S3 para o bucket de destino não são alteradas. Se você enviar uma solicitação PUT ou COPY para um objeto criptografado pelo KMS em um bucket com as chaves de bucket do S3 habilitadas, suas operações no objeto vão usar automaticamente as chaves de bucket do S3, a menos que você desabilite as chaves no cabeçalho da solicitação. Se você não especificar uma chave de bucket do S3 para seu objeto, o Amazon S3 aplicará as configurações da chave de bucket do S3 para o bucket de destino ao objeto.

**Pré-requisito:**  
Antes de configurar seu objeto para usar uma chave de bucket do S3, revise  [Alterações na observação antes de habilitar uma chave de bucket do S3](bucket-key.md#bucket-key-changes). 

**Topics**
+ [Amazon S3 Batch Operations](#bucket-key-object-bops)
+ [Uso da API REST](#bucket-key-object-rest)
+ [Usar o AWSSDK Java (PutObject)](#bucket-key-object-sdk)
+ [Como usar a AWS CLI (PutObject)](#bucket-key-object-cli)

## Amazon S3 Batch Operations
<a name="bucket-key-object-bops"></a>

Para criptografar objetos existentes do Amazon S3 com uma única solicitação, você pode usar o Amazon S3 Batch Operations. Você fornece uma lista de objetos às operações em lote do S3 que, por sua vez, chamam a respectiva API para realizar a operação especificada. 

É possível usar a [operação Copy do S3 Batch Operations](https://docs.aws.amazon.com/AmazonS3/latest/userguide/batch-ops-copy-object.html) para copiar objetos não criptografados existentes e gravá-los de volta no mesmo bucket que os objetos criptografados. Um único trabalho do Batch Operations pode realizar a operação especificada em bilhões de objetos. Para obter mais informações, consulte [Executar operações de objetos em massa com o Operações em Lote](batch-ops.md) e [Criptografia de objetos existentes com o Amazon S3 Batch Operations](https://aws.amazon.com/blogs/storage/encrypting-objects-with-amazon-s3-batch-operations/).

## Uso da API REST
<a name="bucket-key-object-rest"></a>

Ao usar a SSE-KMS, você pode habilitar uma chave de bucket do S3 para um objeto usando as seguintes operações de API: 
+ [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html) — Ao fazer upload de um objeto, você pode especificar o cabeçalho da `x-amz-server-side-encryption-bucket-key-enabled` solicitação para ativar ou desativar uma chave de bucket do S3 no nível do objeto. 
+ [CopyObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html) (Copiar objeto) — Quando você copia um objeto e configura o SSE-KMS, você pode especificar o cabeçalho da solicitação `x-amz-server-side-encryption-bucket-key-enabled` para ativar ou desativar uma chave de bucket do S3 para seu objeto. 
+ [POST Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html): quando você usa uma operação `POST` para fazer upload de um objeto e configurar a SSE-KMS, você pode usar o campo do formulário `x-amz-server-side-encryption-bucket-key-enabled` para ativar ou desativar uma chave de bucket S3 para o objeto.
+ [CreateMultipartUpload](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html): ao fazer upload de objetos grandes usando a operação de API de `CreateMultipartUpload` e configurar a SSE-KMS, você pode usar o cabeçalho de solicitação `x-amz-server-side-encryption-bucket-key-enabled` para habilitar ou desabilitar uma chave de bucket do S3 para o objeto.

Para habilitar uma chave de bucket do S3 no nível do objeto, inclua o cabeçalho da solicitação `x-amz-server-side-encryption-bucket-key-enabled`. Para obter mais informações sobre o SSE-KMS e a API REST, consulte [Uso da API REST](specifying-kms-encryption.md#KMSUsingRESTAPI).

## Usar o AWSSDK Java (PutObject)
<a name="bucket-key-object-sdk"></a>

Você pode usar o exemplo a seguir para configurar uma chave de bucket do S3 no nível de objeto usando o AWS SDK para Java.

------
#### [ Java ]

```
AmazonS3 s3client = AmazonS3ClientBuilder.standard()
    .withRegion(Regions.DEFAULT_REGION)
    .build();

String bucketName = "amzn-s3-demo-bucket1";
String keyName = "key name for object";
String contents = "file contents";

PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, keyName, contents)
    .withBucketKeyEnabled(true);
    
s3client.putObject(putObjectRequest);
```

------

## Como usar a AWS CLI (PutObject)
<a name="bucket-key-object-cli"></a>

Você pode usar o seguinte exemplo da AWS CLI para configurar uma chave de bucket do S3 no nível de objeto como parte de uma solicitação `PutObject`.

```
aws s3api put-object --bucket amzn-s3-demo-bucket --key object key name --server-side-encryption aws:kms --bucket-key-enabled --body filepath
```

# Visualizar as configurações para uma chave de bucket do S3
<a name="viewing-bucket-key-settings"></a>

Você pode visualizar as configurações de uma chave de bucket do S3 no nível de bucket ou objeto usando o console do Amazon S3, a API REST, a AWS Command Line Interface (AWS CLI) ou os AWS SDKs.

As chaves de bucket do S3 diminuem o tráfego de solicitações do Amazon S3 para o AWS KMS e reduzem o custo da criptografia do lado do servidor usando o AWS Key Management Service (SSE-KMS). Para obter mais informações, consulte [Redução do custo do SSE-KMS com chaves de bucket do Amazon S3](bucket-key.md). 

Para exibir as configurações da chave de bucket do S3 para um bucket ou um objeto que herdou as configurações da chave de bucket S3 da configuração do bucket, você precisa de permissão para executar a ação `s3:GetEncryptionConfiguration`. Para obter mais informações, consulte[GetBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketEncryption.html) na *Referência da API do Amazon Simple Storage Service*. 

## Uso do console do S3
<a name="bucket-key-settings"></a>

No console do S3, você pode visualizar as configurações da chave de bucket do S3 para seu bucket ou objeto. As configurações da chave de bucket do S3 são herdadas da configuração do bucket, a menos que os objetos de origem já tenham uma chave de bucket S3 configurada.

Objetos e pastas no mesmo bucket podem ter configurações diferentes da chave de bucket do S3. Por exemplo, se você fizer upload de um objeto usando a API REST e habilitar uma chave de bucket S3 para o objeto, o objeto manterá sua configuração da chave de bucket de S3 no bucket de destino, mesmo que a chave de bucket S3 esteja desativada no bucket de destino. Como outro exemplo, se você habilitar uma chave de bucket S3 para um bucket existente, os objetos que já estão no bucket não usarão uma chave de bucket do S3. No entanto, novos objetos têm uma chave de bucket S3 ativada. 

**Para visualizar a configuração da chave de bucket do S3 para o bucket**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon S3 em [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. No painel de navegação à esquerda, escolha **Buckets**.

1. Na lista **Buckets** (Buckets), escolha o bucket para o qual você deseja habilitar uma chave de bucket do S3.

1. Escolha **Properties (Propriedades)**.

1. Na seção **Default encryption** (Criptografia padrão), em **Bucket Key** (Chave do bucket), você verá a configuração da chave de bucket do S3 para seu bucket.

   Se você não conseguir ver a configuração da chave de bucket do S3, talvez não tenha permissão para executar a ação`s3:GetEncryptionConfiguration`. Para obter mais informações, consulte[GetBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketEncryption.html) na *Referência da API do Amazon Simple Storage Service*. 

**Para exibir a configuração da chave de bucket do S3 para seu objeto**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon S3 em [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Na lista **Buckets** (Buckets), escolha o bucket para o qual você deseja habilitar uma chave de bucket do S3. 

1. Na lista **Objects** (Objetos), escolha o nome do objeto.

1. Na guia **Details** (Detalhes), em **Server-side encryption settings** (Configurações de criptografia do lado do servidor), escolha **Edit** (Editar). 

   Em **Chave de bucket**, você vê a configuração da chave de bucket do S3 para o objeto. Você não pode editar essa configuração. 

## Como usar o AWS CLI
<a name="bucket-key-settings-cli"></a>

**Para retornar as configurações da chave de bucket do S3 no nível de bucket**  
Para usar esse exemplo, substitua cada `user input placeholder` por suas próprias informações.

```
aws s3api get-bucket-encryption --bucket amzn-s3-demo-bucket1
```

Para obter mais informações, consulte [get-bucket-encryption](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/get-bucket-encryption.html) na *Referência de comandos da AWS CLI*.

**Como retornar configurações de chave de bucket do S3 para objetos**  
Para usar esse exemplo, substitua cada `user input placeholder` por suas próprias informações.

```
aws s3api head-object --bucket amzn-s3-demo-bucket1 --key my_images.tar.bz2
```

Para ter mais informações, consulte [head-object](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/head-object.html) na *Referência de comandos da AWS CLI*.

## Uso da API REST
<a name="bucket-key-settings-rest"></a>

**Para retornar as configurações da chave de bucket do S3 no nível de bucket**  
Para retornar informações de criptografia de um bucket, incluindo configurações para uma chave de bucket do S3, use a operação `GetBucketEncryption`. As configurações da chave de bucket do S3 são retornadas no corpo da resposta no elemento `ServerSideEncryptionConfiguration` com a configuração `BucketKeyEnabled`. Para obter mais informações, consulte [GetBucketenCryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketEncryption.html) na *Referência da API do Amazon S3*. 

**Para retornar configurações de nível de objeto para uma chave de bucket do S3**  
Para retornar o status da chave de bucket S3 para um objeto, use a operação `HeadObject`. O `HeadObject` retorna o cabeçalho de resposta de `x-amz-server-side-encryption-bucket-key-enabled` para mostrar se uma chave de bucket de S3 está ativada ou desativada para o objeto. Para obter mais informações, consulte [HeadObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html) (Objeto do cabeçalho) na *Referência da API do Amazon S3*. 

As seguintes operações de API também retornam o cabeçalho de resposta `x-amz-server-side-encryption-bucket-key-enabled` se uma chave de bucket de S3 estiver configurada para um objeto: 
+ [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html) 
+ [PostObject](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html) 
+ [CopyObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html) 
+ [CreateMultipartUpload](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html) 
+ [UploadPartCopy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html) 
+ [UploadPart](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html) 
+ [CompleteMultipartUpload](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html) 
+ [GetObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html) 

# Usar criptografia de camada dupla do lado do servidor com chaves do AWS KMS (DSSE-KMS)
<a name="UsingDSSEncryption"></a>

O uso da criptografia de camada dupla do lado do servidor com chaves do AWS Key Management Service (AWS KMS) (DSSE-KMS) aplica duas camadas de criptografia aos objetos quando eles são carregados no Amazon S3. O DSSE-KMS ajuda a cumprir mais facilmente os padrões de conformidade que exigem que você aplique a criptografia de várias camadas aos dados e tenha controle total das chaves de criptografia.

O termo “dupla” no DSSE-KMS refere-se a duas camadas independentes de criptografia AES-256 que são aplicadas aos dados:
+ *Primeira camada:* os dados são criptografados por meio de uma chave de criptografia de dados (DEK) exclusiva gerada pelo AWS KMS.
+ *Segunda camada:* os dados já criptografados são criptografados novamente usando uma chave de criptografia AES-256 separada gerenciada pelo Amazon S3.

Isso é diferente do processo do SSE-KMS padrão, que aplica somente uma única camada de criptografia. A abordagem de camada dupla oferece segurança aprimorada, garantindo que, mesmo que uma camada de criptografia seja comprometida, os dados continuem sendo protegidos pela segunda camada. Essa segurança adicional envolve maior sobrecarga de processamento e mais chamadas de API do AWS KMS, o que justifica o custo mais alto em comparação com o SSE-KMS padrão. Para ter mais informações sobre o preço do DSSE-KMS, consulte [AWS KMS key concepts](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys) no Guia do desenvolvedor do AWS Key Management Service e [Preços do AWS KMS](https://aws.amazon.com/kms/pricing).

Ao usar a criptografia DSSE-KMS com um bucket do Amazon S3, as chaves do AWS KMS devem estar na mesma região que o bucket. Além disso, quando o DSSE-KMS é solicitado para o objeto, a soma de verificação do S3 que faz parte dos metadados do objeto é armazenada em formato criptografado. Para ter mais informações sobre somas de verificação, consulte [Verificar a integridade do objeto no Amazon S3](checking-object-integrity.md).

**nota**  
As chaves de bucket do S3 não comportam DSSE-KMS.

As principais diferenças entre o DSSE-KMS e o SSE-KMS padrão são:
+ **Camadas de criptografia:** o DSSE-KMS aplica duas camadas independentes de criptografia AES-256, enquanto o SSE-KMS padrão aplica uma camada.
+ **Segurança:** o DSSE-KMS oferece proteção aprimorada contra possíveis vulnerabilidades de criptografia.
+ **Conformidade:** o DSSE-KMS ajuda a atender aos requisitos regulatórios que exigem criptografia de várias camadas.
+ **Desempenho:** o DSSE-KMS tem latência um pouco maior devido ao processamento adicional de criptografia.
+ **Custo:** o DSSE-KMS incorre em cobranças mais altas devido à maior sobrecarga computacional e a operações adicionais do AWS KMS.

**Exigir criptografia de camada dupla do lado do servidor com chaves do AWS KMS keys (DSSE-KMS)**  
Para exigir criptografia de camada dupla do lado do servidor de todos os objetos em um bucket específico do Amazon S3, é possível usar uma política de bucket. Por exemplo, a política de bucket a seguir negará permissão de carregamento de objeto (`s3:PutObject`) para todos se a solicitação não incluir um cabeçalho `x-amz-server-side-encryption` que solicita criptografia do lado do servidor com a DSSE-KMS.

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

****  

```
{
             "Version":"2012-10-17",		 	 	 
             "Id": "PutObjectPolicy",
             "Statement": [{
                   "Sid": "DenyUnEncryptedObjectUploads",
                   "Effect": "Deny",
                   "Principal": {
                       "AWS": "arn:aws:iam::111122223333:root"
                   },
                   "Action": "s3:PutObject",
                   "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
                   "Condition": {
                      "StringNotEquals": {
                         "s3:x-amz-server-side-encryption": "aws:kms:dsse"
                      }
                   }
                }
             ]
          }
```

------

**Topics**
+ [Especificar criptografia de camada dupla do lado do servidor com chaves do AWS KMS (DSSE-KMS)](specifying-dsse-encryption.md)

# Especificar criptografia de camada dupla do lado do servidor com chaves do AWS KMS (DSSE-KMS)
<a name="specifying-dsse-encryption"></a>

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

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

**nota**  
Você pode usar uma AWS KMS keys de várias regiões no Amazon S3. No entanto, o Amazon S3 trata no momento as chaves de várias regiões como se fossem chaves de região única e não usa os recursos de várias regiões da chave. Consulte mais informações em [Using multi-Region keys](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html) 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](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*. 

## Usar o console do S3
<a name="add-object-encryption-dsse"></a>

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

**nota**  
Você pode alterar a criptografia de um objeto se ele tiver menos de 5 GB. Se o objeto tiver mais de 5 GB, você deve usar a [AWS CLI](mpu-upload-object.md#UsingCLImpUpload) ou [SDKs da AWS](CopyingObjectsMPUapi.md) 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](using-with-s3-policy-actions.md). Para ver exemplos das políticas que concedem essas permissões, consulte [Exemplos de políticas baseadas em identidade para o Amazon S3](example-policies-s3.md).
Se você alterar a criptografia de um objeto, um novo objeto será criado para substituir o antigo. Se o versionamento do S3 estiver habilitado, uma nova versão do objeto será criada e o objeto existente se tornará uma versão mais antiga. O perfil que altera a propriedade também se torna o proprietário do novo objeto (ou versão do objeto). 

**Como adicionar ou alterar a criptografia de um objeto**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon S3 em [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. 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.

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

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

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

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

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

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

   1. 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](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#key-mgmt) 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](https://docs.aws.amazon.com//kms/latest/developerguide/create-keys.html) no * Guia do desenvolvedor do AWS Key Management Service*.
**Importante**  
Você só pode usar chaves do KMS disponíveis na mesma Região da AWS que o bucket. O console do Amazon S3 lista somente as primeiras 100 chaves do KMS na mesma região que o bucket. Para usar uma chave do KMS que não esteja listada, você deve inserir o ARN da chave do KMS. Se quiser usar uma chave do KMS que seja de propriedade de outra conta, primeiro você deverá ter permissão para usar a chave e, depois, inserir o ARN da chave do KMS.  
O Amazon S3 só é compatível com chaves do KMS de criptografia simétrica, e não com chaves assimétricas do KMS. Para ter mais informações, consulte [Identificar chaves do KMS assimétricas](https://docs.aws.amazon.com//kms/latest/developerguide/find-symm-asymm.html) no *Guia do desenvolvedor do AWS Key Management Service*.

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

1. 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.

1. Escolha **Salvar alterações**.

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

## Uso da API REST
<a name="DSSEUsingRESTAPI"></a>

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

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

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

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

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`.
+ [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 DSSE-KMS com a operação `CopyObject`, eles são aplicados somente ao objeto de destino. Ao copiar um objeto existente, independentemente de o objeto de origem ser criptografado ou não, o objeto de destino não é criptografado, a menos que você solicite explicitamente a criptografia do lado do servidor.
+ [Objeto POST](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html): 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.
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html): ao carregar objetos grandes usando a operação de API de carregamento fracionado, você pode especificar esses cabeçalhos na solicitação `CreateMultipartUpload`.

Os cabeçalhos de resposta das operações da API REST a seguir retornam o cabeçalho `x-amz-server-side-encryption` quando um objeto é armazenado com criptografia do lado do servidor.
+ [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)
+ [POST Objeto](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 por AWS KMS falharão se elas não forem feitas usando Secure Sockets Layer (SSL), Transport Layer Security (TLS) ou Signature versão 4.
Se o objeto usar DSSE-KMS, os cabeçalhos de solicitação de criptografia não deverão ser enviados para solicitações `GET` e `HEAD`; do contrário, será exibido um erro HTTP 400 (BadRequest).

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

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

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

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

Para obter informações sobre o contexto de criptografia no Amazon S3, consulte [Contexto de criptografia](UsingKMSEncryption.md#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-dsse-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. Se você especificar o cabeçalho `x-amz-server-side-encryption:aws:kms:dsse`, mas não fornecer o cabeçalho `x-amz-server-side-encryption-aws-kms-key-id`, o Amazon S3 usará a Chave gerenciada pela AWS (`aws/s3`) para proteger os dados. Se desejar usar uma chave gerenciada pelo cliente, você deve fornecer o cabeçalho `x-amz-server-side-encryption-aws-kms-key-id` da chave gerenciada pelo cliente.

**Importante**  
Ao usar uma AWS KMS key para criptografia no lado do servidor no Amazon S3, você deve escolher uma chave de criptografia do KMS simétrica. O Amazon S3 só é compatível com chaves do KMS de criptografia simétrica. Para obter mais informações sobre essas chaves, consulte [Chaves do KMS de criptografia simétrica](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#symmetric-cmks) no *Guia do desenvolvedor do AWS Key Management Service*.

## Como usar o AWS CLI
<a name="DSSEUsingCLI"></a>

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

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

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

```
aws s3api copy-object --bucket amzn-s3-demo-bucket --key example-object-key --copy-source amzn-s3-demo-bucket/example-object-key --server-side-encryption aws:kms:dsse --ssekms-key-id example-key-id
```

# Como usar criptografia do lado do servidor com chaves fornecidas pelo cliente (SSE-C)
<a name="ServerSideEncryptionCustomerKeys"></a>

A criptografia de servidor envolve a proteção de dados em repouso. A criptografia no lado do servidor criptografa somente os dados de objeto, não os metadados de objeto. É possível usar a criptografia do lado do servidor com chaves fornecidas pelo cliente (SSE-C) em buckets de uso geral para criptografar seus dados com suas próprias chaves de criptografia. Com a chave de criptografia que você fornece como parte de sua solicitação, o Amazon S3 gerencia a criptografia de dados ao gravar em discos, e a descriptografia dos dados quando você acessa seus objetos. Portanto, você não precisa manter um código para executar a criptografia e a descriptografia de dados. A única coisa que você precisa fazer é gerenciar as chaves de criptografia fornecidas. 

A maioria dos casos de uso modernos no Amazon S3 não usa mais o SSE-C porque esse tipo de criptografia não tem a flexibilidade da criptografia do lado do servidor com chaves gerenciadas pelo Amazon S3 (SSE-S3) ou da criptografia do lado do servidor com chaves do AWS KMS (SSE-KMS). Como o SSE-C exige que você forneça a chave de criptografia toda vez que interage com seus dados criptografados por SSE-C, é impossível compartilhar a chave SSE-C com outros usuários, perfis ou serviços da AWS que leem dados dos seus buckets do S3 para operar com seus dados. Devido ao amplo suporte ao SSE-KMS na AWS, a maioria das workloads modernas não usa a criptografia SSE-C porque ela não tem a flexibilidade do SSE-KMS. Para saber mais sobre o SSE-KMS, consulte [Usar criptografia do lado do servidor com o AWS KMS (SSE-KMS)](UsingKMSEncryption.md).

Se você quiser evitar que a criptografia SSE-C seja usada para objetos gravados em seu bucket, é possível bloquear a criptografia SSE-C ao alterar a configuração de criptografia padrão do bucket. Quando o SSE-C é bloqueado para um bucket de uso geral, qualquer solicitação `PutObject`, `CopyObject`, `PostObject`, de multipart upload ou de replicação que especificar a criptografia SSE-C será rejeitada com o erro `HTTP 403 AccessDenied`. Para saber mais sobre como bloquear o SSE-C, consulte [Bloquear ou desbloquear o SSE-C para um bucket de uso geral](blocking-unblocking-s3-c-encryption-gpb.md).

Não há cobranças adicionais pelo uso de SSE-C. No entanto, as solicitações para configurar e usar SSE-C incorrem em cobranças padrão de solicitação do Amazon S3. Para obter mais informações sobre preços, consulte [Preços do Amazon S3](https://aws.amazon.com/s3/pricing/).

**Importante**  
A partir de abril de 2026, a AWS desabilitará a criptografia do lado do servidor com chaves fornecidas pelo cliente (SSE-C) para todos os buckets novos. Além disso, a criptografia SSE-C será desabilitada para todos os buckets existentes em Contas da AWS que não tenham dados criptografados por SSE-C. Com essas mudanças, as poucas aplicações que precisam da criptografia SSE-C deverão habilitar deliberadamente o uso do SSE-C por meio da API [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html) após a criação do bucket. Nesses casos, talvez seja necessário atualizar scripts de automação, modelos do CloudFormation ou outras ferramentas de configuração de infraestrutura para definir essas configurações. Para ter mais informações, consulte a publicação do [Blog do AWS Storage](https://aws.amazon.com/blogs/storage/advanced-notice-amazon-s3-to-disable-the-use-of-sse-c-encryption-by-default-for-all-new-buckets-and-select-existing-buckets-in-april-2026/).

## Considerações antes de usar o SSE-C
<a name="considerations-before-using-sse-c"></a>
+ O S3 nunca armazena a chave de criptografia quando se usa o SSE-C. Você deve fornecer a chave de criptografia sempre que quiser que alguém baixe seus dados criptografados por SSE-C no S3. 
  + Você gerencia um mapeamento cuja chave de criptografia foi usada para criptografar objetos. Você é responsável por acompanhar a chave de criptografia que forneceu para um objeto. Isso também significa que, se você perder a chave de criptografia, perderá o objeto. 
  + Como gerencia chaves de criptografia no lado do cliente, você gerencia todas as proteções adicionais, como a alternância de chave, no lado do cliente. 
  + Esse esquema pode dificultar o compartilhamento da chave SSE-C com outros usuários, perfis ou serviços da AWS que você possa operar com seus dados. Devido ao amplo suporte ao SSE-KMS na AWS, a maioria das workloads modernas não usa o SSE-C porque ele não tem a flexibilidade do SSE-KMS. Para saber mais sobre o SSE-KMS, consulte [Usar criptografia do lado do servidor com o AWS KMS (SSE-KMS)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html). 
  + Isso significa que objetos criptografados com SSE-C não podem ser descriptografados nativamente pelos serviços gerenciados da AWS. 
+ É necessário usar HTTPS ao especificar cabeçalhos SSE-C em suas solicitações.
  + O Amazon S3 rejeitará todas as solicitações feitas por HTTP ao usar SSE-C. Por questões de segurança, recomendamos considerar que todas as chaves enviadas erroneamente por HTTP estão comprometidas. Descarte a chave e alterne conforme apropriado. 
+ Se o bucket tiver o versionamento habilitado, cada versão de objeto carregada poderá ter sua própria chave de criptografia. Você é responsável por acompanhar a chave de criptografia usada para uma versão de objeto. 
+ Não é possível usar o SSE-C no console do Amazon S3. Não é possível usar o console do Amazon S3 para fazer upload de um objeto e especificar a criptografia SSE-C. Também não é possível usar o console para atualizar (por exemplo, alterar a classe de armazenamento ou adicionar metadados) um objeto armazenado com o SSE-C. 

**Topics**
+ [Considerações antes de usar o SSE-C](#considerations-before-using-sse-c)
+ [Especificação de criptografia no lado do servidor com chaves fornecidas pelo cliente (SSE-C).](specifying-s3-c-encryption.md)
+ [Bloquear ou desbloquear o SSE-C para um bucket de uso geral](blocking-unblocking-s3-c-encryption-gpb.md)
+ [Perguntas frequentes sobre a configuração padrão do SSE-C para novos buckets](default-s3-c-encryption-setting-faq.md)

# Especificação de criptografia no lado do servidor com chaves fornecidas pelo cliente (SSE-C).
<a name="specifying-s3-c-encryption"></a>

Para usar a criptografia do lado do servidor com chaves fornecidas pelo cliente (SSE-C), primeiro verifique se o SSE-C não é um tipo de criptografia bloqueado na configuração padrão de criptografia do bucket de uso geral do Amazon S3. Se bloqueado, é necessário habilitar esse tipo de criptografia atualizando a configuração de criptografia padrão para o bucket. Em seguida, você pode usar o SSE-C em suas solicitações de upload transmitindo os cabeçalhos necessários. Consulte [Ações do Amazon S3 que permitem a gravação de dados com o SSE-C](#amazon-s3-actions-that-support-writing-data-with-sse-c) e inclua os [Cabeçalhos de API do S3 necessários para solicitações de criptografia e descriptografia de objetos com SSE-C](#s3-api-headers-required-for-sse-c-object-encryption-and-decryption-requests). 

Quando você faz upload de um objeto que especifica o SSE-C, o Amazon S3 usa a chave de criptografia fornecida para aplicar a criptografia AES-256 aos seus dados. Depois, o Amazon S3 remove a chave de criptografia da memória. Quando você recupera um objeto, deve fornecer a mesma chave de criptografia como parte de sua solicitação. O Amazon S3 primeiro verifica se a chave de criptografia fornecida é correspondente, depois decifra o objeto antes de retornar os dados de objeto. 

Antes de usar o SSE-C, verifique se você analisou as informações em [Considerações antes de usar o SSE-C](ServerSideEncryptionCustomerKeys.md#considerations-before-using-sse-c).

**nota**  
O Amazon S3 não armazena a chave de criptografia que você fornece. Em vez disso, ele armazena um valor de código de autenticação de mensagens por hash (HMAC) com salt aleatório da chave de criptografia para validar solicitações futuras. O valor de HMAC com salt não pode ser usado para derivar o valor da chave de criptografia ou para decifrar o conteúdo do objeto criptografado. Isso significa que, se você perder a chave de criptografia, perderá o objeto.

**Topics**
+ [Ações do SSE-C e cabeçalhos necessários](#sse-c-actions-and-required-headers)
+ [Exemplo de política de bucket para aplicar a criptografia SSE-C](#example-bucket-policy-to-enforce-sse-c-encryption)
+ [Pre-signed URLs e SSE-C](#ssec-and-presignedurl)
+ [Fazer solicitações com SSE-C](#making-requests-with-sse-c)
+ [Uso da API REST](#using-rest-api-sse-c)
+ [Uso dos AWS SDKs para especificar SSE-C para operações PUT, GET, Head e Copy](#sse-c-using-sdks)
+ [Uso dos AWS SDKs para especificar SSE-C para uploads fracionados](#sse-c-using-sdks-multipart-uploads)

## Ações do SSE-C e cabeçalhos necessários
<a name="sse-c-actions-and-required-headers"></a>

Para especificar o SSE-C em APIs do S3 compatíveis, é necessário transmitir parâmetros de solicitação específicos. 

**nota**  
A API `PutBucketEncryption` no Amazon S3 é usada para configurar a criptografia padrão do lado do servidor para um bucket. No entanto, `PutBucketEncryption` não permite a ativação do SSE-C como método de criptografia padrão para um bucket. O SSE-C é um método de criptografia em nível de objeto em que é necessário fornecer a chave de criptografia ao Amazon S3 com cada solicitação de upload ou download de objeto. O Amazon S3 usa essa chave para criptografar ou descriptografar o objeto durante a solicitação e, em seguida, descarta a chave. Isso significa que o SSE-C é habilitado por objeto, não como uma configuração padrão de bucket. 

### Ações do Amazon S3 que permitem a gravação de dados com o SSE-C
<a name="amazon-s3-actions-that-support-writing-data-with-sse-c"></a>

as seguintes ações ou operações de API: 
+ [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/API_CreateMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.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/RESTObjectPOST.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.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_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)

**nota**  
A replicação do S3 oferece suporte a objetos que são criptografados com SSE-C. Para obter mais informações sobre replicação de objetos criptografados, consulte [Replicar objetos criptografados (SSE-S3, SSE-KMS, DSSE-KMS, SSE-C)](replication-config-for-kms-objects.md). 

### Cabeçalhos de API do S3 necessários para solicitações de criptografia e descriptografia de objetos com SSE-C
<a name="s3-api-headers-required-for-sse-c-object-encryption-and-decryption-requests"></a>

É necessário fornecer os três cabeçalhos de API abaixo para criptografar ou descriptografar objetos com SSE-C: 
+ `x-amz-server-side-encryption-customer-algorithm`: use este cabeçalho para especificar o algoritmo de criptografia. O valor do cabeçalho deve ser AES-256.
+ `x-amz-server-side-encryption-customer-key`: use este cabeçalho para fornecer a chave de criptografia com codificação base64 de 256 bits a ser usada pelo Amazon S3 para criptografar ou descriptografar seus dados.
+ `x-amz-server-side-encryption-customer-key-MD5`: use este cabeçalho para fornecer o resumo MD5 com codificação base64 de 128 bits da chave de criptografia de acordo com o RFC 1321. O Amazon S3 usa esse cabeçalho para fazer uma verificação de integridade de mensagens e conferir se a chave de criptografia foi transmitida sem erros.

### Cabeçalhos de API do S3 necessários para solicitações de cópia de objetos de origem criptografados com SSE-C
<a name="s3-api-headers-required-for-requests-to-copy-source-objects-encrypted-with-sse-c"></a>

É necessário fornecer os três cabeçalhos de API abaixo para copiar objetos de origem criptografados com SSE-C: 
+ `x-amz-copy-source-server-side-encryption-customer-algorithm`: inclua este cabeçalho para especificar o algoritmo que o Amazon S3 deve usar para descriptografar o objeto de origem. Esse valor deve ser AES-256.
+ `x-amz-copy-source-server-side-encryption-customer-key`: inclua este cabeçalho para fornecer a chave de criptografia com codificação base64 a ser usada pelo Amazon S3 para descriptografar o objeto de origem. Essa chave de criptografia deve ser a que você forneceu ao Amazon S3 quando criou o objeto de origem. Caso contrário, o Amazon S3 não pode descriptografar o objeto.
+ `x-amz-copy-source-server-side-encryption-customer-key-MD5`: inclua este cabeçalho para fornecer o resumo MD5 com codificação base64 de 128 bits da chave de criptografia de acordo com RFC 1321.

## Exemplo de política de bucket para aplicar a criptografia SSE-C
<a name="example-bucket-policy-to-enforce-sse-c-encryption"></a>

Para exigir SSE-C de todos os objetos gravados em um bucket do Amazon S3, é possível usar uma política de bucket. Por exemplo, a política de bucket a seguir nega permissões para upload de objeto (`s3:PutObject`) a todas as solicitações que não incluam o cabeçalho `x-amz-server-side-encryption-customer-algorithm` que solicita SSE-C. 

```
{  
"Version":"2012-10-17",		 	 	                      
    "Id": "PutObjectPolicy",  
    "Statement": [  
        {  
"Sid": "RequireSSECObjectUploads",  
            "Effect": "Deny",  
            "Principal": "*",  
            "Action": "s3:PutObject",  
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",  
            "Condition": {  
            "Null": {  
              "s3:x-amz-server-side-encryption-customer-algorithm": "true"  
                }  
            }  
        }  
    ]  
}
```

**Importante**  
Se você usar uma política de bucket para exigir SSE-C em `s3:PutObject`, deverá incluir o cabeçalho `x-amz-server-side-encryption-customer-algorithm` em todas as solicitações de carregamento fracionado (CreateMultipartUpload, UploadPart e CompleteMultipartUpload). 

## Pre-signed URLs e SSE-C
<a name="ssec-and-presignedurl"></a>

Você pode gerar um URL pré-assinado que pode ser usado para operações, como fazer upload de um objeto novo, recuperar um objeto existente ou recuperar metadados de objeto. Os URLs pré-assinados oferecem suporte a SSE-C da seguinte maneira:
+ Ao criar um URL pré-assinado, você deve especificar o algoritmo usando o cabeçalho `x-amz-server-side-encryption-customer-algorithm` no cálculo de assinatura.
+ Ao usar o URL pré-assinado para fazer upload de um objeto novo, recuperar um objeto existente ou recuperar somente metadados de objeto, você deve fornecer todos os cabeçalhos de criptografia na solicitação de aplicação cliente. 
**nota**  
Para objetos que não usam SSE-C, é possível gerar um URL pré-assinado e colá-lo diretamente em um navegador para acessar os dados.   
No entanto, não é possível fazer isso para objetos SSE-C porque, além do URL pré-assinado, você também precisa incluir cabeçalhos HTTP específicos para objetos SSE-C. Dessa forma, é possível usar URLs pré-assinados para objetos SSE-C somente de maneira programática.

Para obter mais informações sobre pre-signed URLs, consulte [Baixar e fazer upload de objetos com URLs pré-assinados](using-presigned-url.md).

## Fazer solicitações com SSE-C
<a name="making-requests-with-sse-c"></a>

 No momento da criação do objeto com a API REST, você pode especificar a criptografia do lado do servidor com chaves fornecidas pelo cliente (SSE-C). Ao usar SSE-C, é necessário fornecer informações da chave de criptografia usando [Cabeçalhos de API do S3 necessários para solicitações de cópia de objetos de origem criptografados com SSE-C](#s3-api-headers-required-for-requests-to-copy-source-objects-encrypted-with-sse-c). Você pode usar bibliotecas de wrapper do AWS SDK para adicionar esses cabeçalhos à sua solicitação. Se precisar, você pode fazer com que a API REST do Amazon S3 seja chamada diretamente na aplicação.

**Importante**  
Antes de especificar a criptografia do lado do servidor com chaves fornecidas pelo cliente (SSE-C), verifique se a criptografia SSE-C não está bloqueada para seu bucket de uso geral. Para obter mais informações, consulte [Bloquear ou desbloquear o SSE-C para um bucket de uso geral](blocking-unblocking-s3-c-encryption-gpb.md).

**nota**  
Não é possível usar o console do Amazon S3 para fazer upload de um objeto e solicitar SSE-C. Também não é possível usar o console para atualizar (por exemplo, alterar a classe de armazenamento ou adicionar metadados) um objeto armazenado com o SSE-C. Para ter mais informações, consulte [Cabeçalhos de API do S3 necessários para solicitações de criptografia e descriptografia de objetos com SSE-C](#s3-api-headers-required-for-sse-c-object-encryption-and-decryption-requests). 

## Uso da API REST
<a name="using-rest-api-sse-c"></a>

### APIs REST do Amazon S3 que oferecem suporte ao SSE-C
<a name="sse-c-supported-apis"></a>

As APIs do Amazon S3 a seguir oferecem suporte à criptografia pelo servidor com chaves de criptografia fornecidas pelo cliente (SSE-C).
+ **Operação GET**: ao recuperar objetos usando a API GET (consulte [GET Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectGET.html)), você pode especificar os cabeçalhos da solicitação.
+ **Operação HEAD**: para recuperar metadados de objeto usando a API HEAD (consulte [HEAD Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectHEAD.html)), você pode especificar esses cabeçalhos de solicitação.
+ **Operação PUT**: ao fazer upload de dados usando a API PUT (consulte [PUT Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html)), você pode especificar esses cabeçalhos de solicitação. 
+ **Carregamento fracionado**: ao fazer upload de objetos grandes usando a API de carregamentos fracionados, você pode especificar esses cabeçalhos. Especifique esses cabeçalhos na solicitação de inicialização (consulte [Iniciar multipart upload](https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadInitiate.html)) e em cada solicitação de upload de parte subsequente (consulte [UploadPart](https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadUploadPart.html) ou [UploadPartCopy](https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadUploadPartCopy.html)). Para cada solicitação de upload de parte, as informações de criptografia devem ser as mesmas que você forneceu na solicitação iniciada do multipart upload.
+ **Operação POST**: ao usar uma operação POST para fazer upload de um objeto (consulte [Objeto POST](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html)), em vez dos cabeçalhos de solicitação, você fornece as mesmas informações nos campos de formulário.
+ **Operação de cópia**: ao copiar um objeto (consulte [CopyObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)), você tem um objeto de origem e um objeto de destino:
  + Se quiser especificar o tipo de criptografia do objeto de destino, forneça o cabeçalho de solicitação `x-amz-server-side-encryption `.
  + Se você quiser que o objeto de destino seja criptografado usando SSE-C, é necessário fornecer informações de criptografia usando [Cabeçalhos de API do S3 necessários para solicitações de criptografia e descriptografia de objetos com SSE-C](#s3-api-headers-required-for-sse-c-object-encryption-and-decryption-requests).
  + Se o objeto de origem for criptografado usando SSE-C, é necessário fornecer informações da chave de criptografia usando [Cabeçalhos de API do S3 necessários para solicitações de cópia de objetos de origem criptografados com SSE-C](#s3-api-headers-required-for-requests-to-copy-source-objects-encrypted-with-sse-c).

## Uso dos AWS SDKs para especificar SSE-C para operações PUT, GET, Head e Copy
<a name="sse-c-using-sdks"></a>

O exemplo a seguir mostra como solicitar a criptografia de servidor com chaves fornecidas pelo cliente (SSE-C) para objetos. Os exemplos executam as seguintes operações. Cada operação mostra como especificar cabeçalhos relacionados a SSE-C na solicitação:
+ **Colocar objeto**: faz upload de um objeto e solicita a criptografia de servidor, usando uma chave de criptografia fornecida pelo cliente.
+ **Obter objeto**: faz download do objeto carregado na etapa anterior. Na solicitação, você fornece as mesmas informações de criptografia fornecidas quando o objeto foi carregado. O Amazon S3 precisa dessas informações para descriptografar o objeto e para que ele possa ser devolvido a você.
+ **Obter metadados do objeto**: recupera os metadados do objeto. Você fornece as mesmas informações de criptografia usadas quando o objeto foi criado.
+ **Copiar objeto**: faz uma cópia de um objeto carregado anteriormente. Como o objeto de origem é armazenado usando SSE-C, você deve fornecer suas informações de criptografia na solicitação de cópia. Por padrão, o Amazon S3 criptografa a cópia do objeto somente se você solicitar explicitamente. Esse exemplo direciona o Amazon S3 a armazenar uma cópia criptografada do objeto.

------
#### [ Java ]

**nota**  
Este exemplo mostra como fazer upload de um objeto em uma única operação. Ao usar a API de Multipart Upload para fazer upload de objetos grandes, você fornece informações de criptografia da mesma maneira que exibidas nesse exemplo. Para exemplos de carregamentos fracionados usando o AWS SDK para Java, consulte [Fazer upload de um objeto usando multipart upload](mpu-upload-object.md).

Para adicionar informações necessárias de criptografia, inclua uma `SSECustomerKey` na solicitação. Para obter mais informações sobre a classe `SSECustomerKey`, consulte a seção REST API.

Consulte instruções sobre como criar e testar uma amostra funcional em [Getting Started](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/getting-started.html) no Guia do desenvolvedor do AWS SDK para Java.

**Example**  

```
import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.*;

import javax.crypto.KeyGenerator;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;

public class ServerSideEncryptionUsingClientSideEncryptionKey {
    private static SSECustomerKey SSE_KEY;
    private static AmazonS3 S3_CLIENT;
    private static KeyGenerator KEY_GENERATOR;

    public static void main(String[] args) throws IOException, NoSuchAlgorithmException {
        Regions clientRegion = Regions.DEFAULT_REGION;
        String bucketName = "*** Bucket name ***";
        String keyName = "*** Key name ***";
        String uploadFileName = "*** File path ***";
        String targetKeyName = "*** Target key name ***";

        // Create an encryption key.
        KEY_GENERATOR = KeyGenerator.getInstance("AES");
        KEY_GENERATOR.init(256, new SecureRandom());
        SSE_KEY = new SSECustomerKey(KEY_GENERATOR.generateKey());

        try {
            S3_CLIENT = AmazonS3ClientBuilder.standard()
                    .withCredentials(new ProfileCredentialsProvider())
                    .withRegion(clientRegion)
                    .build();

            // Upload an object.
            uploadObject(bucketName, keyName, new File(uploadFileName));

            // Download the object.
            downloadObject(bucketName, keyName);

            // Verify that the object is properly encrypted by attempting to retrieve it
            // using the encryption key.
            retrieveObjectMetadata(bucketName, keyName);

            // Copy the object into a new object that also uses SSE-C.
            copyObject(bucketName, keyName, targetKeyName);
        } catch (AmazonServiceException e) {
            // The call was transmitted successfully, but Amazon S3 couldn't process
            // it, so it returned an error response.
            e.printStackTrace();
        } catch (SdkClientException e) {
            // Amazon S3 couldn't be contacted for a response, or the client
            // couldn't parse the response from Amazon S3.
            e.printStackTrace();
        }
    }

    private static void uploadObject(String bucketName, String keyName, File file) {
        PutObjectRequest putRequest = new PutObjectRequest(bucketName, keyName, file).withSSECustomerKey(SSE_KEY);
        S3_CLIENT.putObject(putRequest);
        System.out.println("Object uploaded");
    }

    private static void downloadObject(String bucketName, String keyName) throws IOException {
        GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, keyName).withSSECustomerKey(SSE_KEY);
        S3Object object = S3_CLIENT.getObject(getObjectRequest);

        System.out.println("Object content: ");
        displayTextInputStream(object.getObjectContent());
    }

    private static void retrieveObjectMetadata(String bucketName, String keyName) {
        GetObjectMetadataRequest getMetadataRequest = new GetObjectMetadataRequest(bucketName, keyName)
                .withSSECustomerKey(SSE_KEY);
        ObjectMetadata objectMetadata = S3_CLIENT.getObjectMetadata(getMetadataRequest);
        System.out.println("Metadata retrieved. Object size: " + objectMetadata.getContentLength());
    }

    private static void copyObject(String bucketName, String keyName, String targetKeyName)
            throws NoSuchAlgorithmException {
        // Create a new encryption key for target so that the target is saved using
        // SSE-C.
        SSECustomerKey newSSEKey = new SSECustomerKey(KEY_GENERATOR.generateKey());

        CopyObjectRequest copyRequest = new CopyObjectRequest(bucketName, keyName, bucketName, targetKeyName)
                .withSourceSSECustomerKey(SSE_KEY)
                .withDestinationSSECustomerKey(newSSEKey);

        S3_CLIENT.copyObject(copyRequest);
        System.out.println("Object copied");
    }

    private static void displayTextInputStream(S3ObjectInputStream input) throws IOException {
        // Read one line at a time from the input stream and display each line.
        BufferedReader reader = new BufferedReader(new InputStreamReader(input));
        String line;
        while ((line = reader.readLine()) != null) {
            System.out.println(line);
        }
        System.out.println();
    }
}
```

------
#### [ .NET ]

**nota**  
Para exemplos de upload de objetos grandes usando a API multipart upload, consulte [Fazer upload de um objeto usando multipart upload](mpu-upload-object.md) e [Uso dos AWS SDKs (API de baixo nível)](mpu-upload-object.md#mpu-upload-low-level).

Para obter informações sobre como configurar e executar exemplos de código, consulte [Conceitos básicos do AWS SDK for .NET](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/net-dg-setup.html) no *Guia do desenvolvedor do AWS SDK for .NET*. 

**Example**  

```
using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using System;
using System.IO;
using System.Security.Cryptography;
using System.Threading.Tasks;

namespace Amazon.DocSamples.S3
{
    class SSEClientEncryptionKeyObjectOperationsTest
    {
        private const string bucketName = "*** bucket name ***"; 
        private const string keyName = "*** key name for new object created ***"; 
        private const string copyTargetKeyName = "*** key name for object copy ***";
        // Specify your bucket region (an example region is shown).
        private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
        private static IAmazonS3 client;

        public static void Main()
        {
            client = new AmazonS3Client(bucketRegion);
            ObjectOpsUsingClientEncryptionKeyAsync().Wait();
        }
        private static async Task ObjectOpsUsingClientEncryptionKeyAsync()
        {
            try
            {
                // Create an encryption key.
                Aes aesEncryption = Aes.Create();
                aesEncryption.KeySize = 256;
                aesEncryption.GenerateKey();
                string base64Key = Convert.ToBase64String(aesEncryption.Key);

                // 1. Upload the object.
                PutObjectRequest putObjectRequest = await UploadObjectAsync(base64Key);
                // 2. Download the object and verify that its contents matches what you uploaded.
                await DownloadObjectAsync(base64Key, putObjectRequest);
                // 3. Get object metadata and verify that the object uses AES-256 encryption.
                await GetObjectMetadataAsync(base64Key);
                // 4. Copy both the source and target objects using server-side encryption with 
                //    a customer-provided encryption key.
                await CopyObjectAsync(aesEncryption, base64Key);
            }
            catch (AmazonS3Exception e)
            {
                Console.WriteLine("Error encountered ***. Message:'{0}' when writing an object", e.Message);
            }
            catch (Exception e)
            {
                Console.WriteLine("Unknown encountered on server. Message:'{0}' when writing an object", e.Message);
            }
        }

        private static async Task<PutObjectRequest> UploadObjectAsync(string base64Key)
        {
            PutObjectRequest putObjectRequest = new PutObjectRequest
            {
                BucketName = bucketName,
                Key = keyName,
                ContentBody = "sample text",
                ServerSideEncryptionCustomerMethod = ServerSideEncryptionCustomerMethod.AES256,
                ServerSideEncryptionCustomerProvidedKey = base64Key
            };
            PutObjectResponse putObjectResponse = await client.PutObjectAsync(putObjectRequest);
            return putObjectRequest;
        }
        private static async Task DownloadObjectAsync(string base64Key, PutObjectRequest putObjectRequest)
        {
            GetObjectRequest getObjectRequest = new GetObjectRequest
            {
                BucketName = bucketName,
                Key = keyName,
                // Provide encryption information for the object stored in Amazon S3.
                ServerSideEncryptionCustomerMethod = ServerSideEncryptionCustomerMethod.AES256,
                ServerSideEncryptionCustomerProvidedKey = base64Key
            };

            using (GetObjectResponse getResponse = await client.GetObjectAsync(getObjectRequest))
            using (StreamReader reader = new StreamReader(getResponse.ResponseStream))
            {
                string content = reader.ReadToEnd();
                if (String.Compare(putObjectRequest.ContentBody, content) == 0)
                    Console.WriteLine("Object content is same as we uploaded");
                else
                    Console.WriteLine("Error...Object content is not same.");

                if (getResponse.ServerSideEncryptionCustomerMethod == ServerSideEncryptionCustomerMethod.AES256)
                    Console.WriteLine("Object encryption method is AES256, same as we set");
                else
                    Console.WriteLine("Error...Object encryption method is not the same as AES256 we set");

                // Assert.AreEqual(putObjectRequest.ContentBody, content);
                // Assert.AreEqual(ServerSideEncryptionCustomerMethod.AES256, getResponse.ServerSideEncryptionCustomerMethod);
            }
        }
        private static async Task GetObjectMetadataAsync(string base64Key)
        {
            GetObjectMetadataRequest getObjectMetadataRequest = new GetObjectMetadataRequest
            {
                BucketName = bucketName,
                Key = keyName,

                // The object stored in Amazon S3 is encrypted, so provide the necessary encryption information.
                ServerSideEncryptionCustomerMethod = ServerSideEncryptionCustomerMethod.AES256,
                ServerSideEncryptionCustomerProvidedKey = base64Key
            };

            GetObjectMetadataResponse getObjectMetadataResponse = await client.GetObjectMetadataAsync(getObjectMetadataRequest);
            Console.WriteLine("The object metadata show encryption method used is: {0}", getObjectMetadataResponse.ServerSideEncryptionCustomerMethod);
            // Assert.AreEqual(ServerSideEncryptionCustomerMethod.AES256, getObjectMetadataResponse.ServerSideEncryptionCustomerMethod);
        }
        private static async Task CopyObjectAsync(Aes aesEncryption, string base64Key)
        {
            aesEncryption.GenerateKey();
            string copyBase64Key = Convert.ToBase64String(aesEncryption.Key);

            CopyObjectRequest copyRequest = new CopyObjectRequest
            {
                SourceBucket = bucketName,
                SourceKey = keyName,
                DestinationBucket = bucketName,
                DestinationKey = copyTargetKeyName,
                // Information about the source object's encryption.
                CopySourceServerSideEncryptionCustomerMethod = ServerSideEncryptionCustomerMethod.AES256,
                CopySourceServerSideEncryptionCustomerProvidedKey = base64Key,
                // Information about the target object's encryption.
                ServerSideEncryptionCustomerMethod = ServerSideEncryptionCustomerMethod.AES256,
                ServerSideEncryptionCustomerProvidedKey = copyBase64Key
            };
            await client.CopyObjectAsync(copyRequest);
        }
    }
}
```

------

## Uso dos AWS SDKs para especificar SSE-C para uploads fracionados
<a name="sse-c-using-sdks-multipart-uploads"></a>

O exemplo da seção anterior mostra como solicitar a criptografia de servidor com a chave fornecida pelo cliente (SSE-C) nas operações PUT, GET, Head e Copy. Esta seção descreve outras APIs do Amazon S3 que oferecem suporte para SSE-C.

------
#### [ Java ]

Para carregar objetos grandes, é possível usar APIs de multipart upload. Para obter mais informações, consulte [Carregar e copiar objetos usando upload fracionado no Amazon S3](mpuoverview.md). Você pode usar APIs de alto ou baixo nível para fazer upload de objetos grandes. Essas APIs oferecem suporte para cabeçalhos relacionados à criptografia na solicitação.
+ Ao usar a API `TransferManager` simplificada, forneça os cabeçalhos específicos de criptografia em `PutObjectRequest`. Para obter mais informações, consulte [Fazer upload de um objeto usando multipart upload](mpu-upload-object.md). 
+ Ao usar a API de baixo nível, você fornece informações relacionadas à criptografia na `InitiateMultipartUploadRequest`, seguidas por informações de criptografia idênticas em cada `UploadPartRequest`. Você não precisa fornecer cabeçalhos específicos de criptografia na `CompleteMultipartUploadRequest`. Para ver exemplos, consulte [Uso dos AWS SDKs (API de baixo nível)](mpu-upload-object.md#mpu-upload-low-level). 

O exemplo a seguir usa `TransferManager` para criar objetos e mostra como fornecer informações relacionadas a SSE-C. O exemplo faz o seguinte:
+ Cria um objeto usando o método `TransferManager.upload()`. Na instância `PutObjectRequest`, forneça informações da chave de criptografia na solicitação. O Amazon S3 criptografa o objeto usando a chave fornecida pelo cliente.
+ Faz uma cópia do objeto, chamando o método `TransferManager.copy()`. O exemplo instrui o Amazon S3 a criptografar a cópia do objeto usando um novo `SSECustomerKey`. Como o objeto de origem é criptografado usando SSE-C, o `CopyObjectRequest` também fornece a chave de criptografia do objeto de origem para que o Amazon S3 possa descriptografar o objeto antes de copiá-lo. 

**Example**  

```
import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.CopyObjectRequest;
import com.amazonaws.services.s3.model.PutObjectRequest;
import com.amazonaws.services.s3.model.SSECustomerKey;
import com.amazonaws.services.s3.transfer.Copy;
import com.amazonaws.services.s3.transfer.TransferManager;
import com.amazonaws.services.s3.transfer.TransferManagerBuilder;
import com.amazonaws.services.s3.transfer.Upload;

import javax.crypto.KeyGenerator;
import java.io.File;
import java.security.SecureRandom;

public class ServerSideEncryptionCopyObjectUsingHLwithSSEC {

    public static void main(String[] args) throws Exception {
        Regions clientRegion = Regions.DEFAULT_REGION;
        String bucketName = "*** Bucket name ***";
        String fileToUpload = "*** File path ***";
        String keyName = "*** New object key name ***";
        String targetKeyName = "*** Key name for object copy ***";

        try {
            AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
                    .withRegion(clientRegion)
                    .withCredentials(new ProfileCredentialsProvider())
                    .build();
            TransferManager tm = TransferManagerBuilder.standard()
                    .withS3Client(s3Client)
                    .build();

            // Create an object from a file.
            PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, keyName, new File(fileToUpload));

            // Create an encryption key.
            KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
            keyGenerator.init(256, new SecureRandom());
            SSECustomerKey sseCustomerEncryptionKey = new SSECustomerKey(keyGenerator.generateKey());

            // Upload the object. TransferManager uploads asynchronously, so this call
            // returns immediately.
            putObjectRequest.setSSECustomerKey(sseCustomerEncryptionKey);
            Upload upload = tm.upload(putObjectRequest);

            // Optionally, wait for the upload to finish before continuing.
            upload.waitForCompletion();
            System.out.println("Object created.");

            // Copy the object and store the copy using SSE-C with a new key.
            CopyObjectRequest copyObjectRequest = new CopyObjectRequest(bucketName, keyName, bucketName, targetKeyName);
            SSECustomerKey sseTargetObjectEncryptionKey = new SSECustomerKey(keyGenerator.generateKey());
            copyObjectRequest.setSourceSSECustomerKey(sseCustomerEncryptionKey);
            copyObjectRequest.setDestinationSSECustomerKey(sseTargetObjectEncryptionKey);

            // Copy the object. TransferManager copies asynchronously, so this call returns
            // immediately.
            Copy copy = tm.copy(copyObjectRequest);

            // Optionally, wait for the upload to finish before continuing.
            copy.waitForCompletion();
            System.out.println("Copy complete.");
        } catch (AmazonServiceException e) {
            // The call was transmitted successfully, but Amazon S3 couldn't process
            // it, so it returned an error response.
            e.printStackTrace();
        } catch (SdkClientException e) {
            // Amazon S3 couldn't be contacted for a response, or the client
            // couldn't parse the response from Amazon S3.
            e.printStackTrace();
        }
    }
}
```

------
#### [ .NET ]

Para carregar objetos grandes, você pode usar a API de carregamentos fracionados (consulte [Carregar e copiar objetos usando upload fracionado no Amazon S3](mpuoverview.md)). AWS O SDK for .NET fornece APIs de alto ou baixo nível para fazer upload de objetos grandes. Essas APIs oferecem suporte para cabeçalhos relacionados à criptografia na solicitação.
+ Ao usar a API do `Transfer-Utility `de alto nível, você fornece os cabeçalhos específicos de criptografia na `TransferUtilityUploadRequest`, conforme mostrado. Para obter exemplos de código, consulte [Fazer upload de um objeto usando multipart upload](mpu-upload-object.md).

  ```
  TransferUtilityUploadRequest request = new TransferUtilityUploadRequest()
  {
      FilePath = filePath,
      BucketName = existingBucketName,
      Key = keyName,
      // Provide encryption information.
      ServerSideEncryptionCustomerMethod = ServerSideEncryptionCustomerMethod.AES256,
      ServerSideEncryptionCustomerProvidedKey = base64Key,
  };
  ```
+ Ao usar a API de baixo nível, você fornece informações relacionadas à criptografia na solicitação para iniciar o multipart upload, seguidas por informações de criptografia idênticas nas solicitações subsequentes de upload de parte. Você não precisa fornecer cabeçalhos específicos de criptografia na solicitação de multipart upload completo. Para ver exemplos, consulte [Uso dos AWS SDKs (API de baixo nível)](mpu-upload-object.md#mpu-upload-low-level).

  O seguinte é um exemplo de multipart upload de baixo nível que faz uma cópia de um objeto grande existente. No exemplo, o objeto a ser copiado é armazenado no Amazon S3 usando o SSE-C, e você deseja salvar o objeto de destino também usando o SSE-C. No exemplo, faça o seguinte:
  + Inicie uma solicitação de multipart upload fornecendo uma chave de criptografia e as informações relacionadas.
  + Forneça as chaves de criptografia de objeto de origem e de destino e as informações relacionadas na `CopyPartRequest`.
  + Obtenha o tamanho do objeto de origem a ser copiado recuperando os metadados do objeto.
  + Faça upload dos objetos em partes de 5 MB.  
**Example**  

  ```
  using Amazon;
  using Amazon.S3;
  using Amazon.S3.Model;
  using System;
  using System.Collections.Generic;
  using System.IO;
  using System.Security.Cryptography;
  using System.Threading.Tasks;
  
  namespace Amazon.DocSamples.S3
  {
      class SSECLowLevelMPUcopyObjectTest
      {
          private const string existingBucketName = "*** bucket name ***";
          private const string sourceKeyName      = "*** source object key name ***"; 
          private const string targetKeyName      = "*** key name for the target object ***";
          private const string filePath           = @"*** file path ***";
          // Specify your bucket region (an example region is shown).
          private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
          private static IAmazonS3 s3Client;
          static void Main()
          {
              s3Client = new AmazonS3Client(bucketRegion);
              CopyObjClientEncryptionKeyAsync().Wait();
          }
  
          private static async Task CopyObjClientEncryptionKeyAsync()
          {
              Aes aesEncryption = Aes.Create();
              aesEncryption.KeySize = 256;
              aesEncryption.GenerateKey();
              string base64Key = Convert.ToBase64String(aesEncryption.Key);
  
              await CreateSampleObjUsingClientEncryptionKeyAsync(base64Key, s3Client);
  
              await CopyObjectAsync(s3Client, base64Key);
          }
          private static async Task CopyObjectAsync(IAmazonS3 s3Client, string base64Key)
          {
              List<CopyPartResponse> uploadResponses = new List<CopyPartResponse>();
  
              // 1. Initialize.
              InitiateMultipartUploadRequest initiateRequest = new InitiateMultipartUploadRequest
              {
                  BucketName = existingBucketName,
                  Key = targetKeyName,
                  ServerSideEncryptionCustomerMethod = ServerSideEncryptionCustomerMethod.AES256,
                  ServerSideEncryptionCustomerProvidedKey = base64Key,
              };
  
              InitiateMultipartUploadResponse initResponse =
                  await s3Client.InitiateMultipartUploadAsync(initiateRequest);
  
              // 2. Upload Parts.
              long partSize = 5 * (long)Math.Pow(2, 20); // 5 MB
              long firstByte = 0;
              long lastByte = partSize;
  
              try
              {
                  // First find source object size. Because object is stored encrypted with
                  // customer provided key you need to provide encryption information in your request.
                  GetObjectMetadataRequest getObjectMetadataRequest = new GetObjectMetadataRequest()
                  {
                      BucketName = existingBucketName,
                      Key = sourceKeyName,
                      ServerSideEncryptionCustomerMethod = ServerSideEncryptionCustomerMethod.AES256,
                      ServerSideEncryptionCustomerProvidedKey = base64Key // " * **source object encryption key ***"
                  };
  
                  GetObjectMetadataResponse getObjectMetadataResponse = await s3Client.GetObjectMetadataAsync(getObjectMetadataRequest);
  
                  long filePosition = 0;
                  for (int i = 1; filePosition < getObjectMetadataResponse.ContentLength; i++)
                  {
                      CopyPartRequest copyPartRequest = new CopyPartRequest
                      {
                          UploadId = initResponse.UploadId,
                          // Source.
                          SourceBucket = existingBucketName,
                          SourceKey = sourceKeyName,
                          // Source object is stored using SSE-C. Provide encryption information.
                          CopySourceServerSideEncryptionCustomerMethod = ServerSideEncryptionCustomerMethod.AES256,
                          CopySourceServerSideEncryptionCustomerProvidedKey = base64Key, //"***source object encryption key ***",
                          FirstByte = firstByte,
                          // If the last part is smaller then our normal part size then use the remaining size.
                          LastByte = lastByte > getObjectMetadataResponse.ContentLength ?
                              getObjectMetadataResponse.ContentLength - 1 : lastByte,
  
                          // Target.
                          DestinationBucket = existingBucketName,
                          DestinationKey = targetKeyName,
                          PartNumber = i,
                          // Encryption information for the target object.
                          ServerSideEncryptionCustomerMethod = ServerSideEncryptionCustomerMethod.AES256,
                          ServerSideEncryptionCustomerProvidedKey = base64Key
                      };
                      uploadResponses.Add(await s3Client.CopyPartAsync(copyPartRequest));
                      filePosition += partSize;
                      firstByte += partSize;
                      lastByte += partSize;
                  }
  
                  // Step 3: complete.
                  CompleteMultipartUploadRequest completeRequest = new CompleteMultipartUploadRequest
                  {
                      BucketName = existingBucketName,
                      Key = targetKeyName,
                      UploadId = initResponse.UploadId,
                  };
                  completeRequest.AddPartETags(uploadResponses);
  
                  CompleteMultipartUploadResponse completeUploadResponse =
                      await s3Client.CompleteMultipartUploadAsync(completeRequest);
              }
              catch (Exception exception)
              {
                  Console.WriteLine("Exception occurred: {0}", exception.Message);
                  AbortMultipartUploadRequest abortMPURequest = new AbortMultipartUploadRequest
                  {
                      BucketName = existingBucketName,
                      Key = targetKeyName,
                      UploadId = initResponse.UploadId
                  };
                  s3Client.AbortMultipartUpload(abortMPURequest);
              }
          }
          private static async Task CreateSampleObjUsingClientEncryptionKeyAsync(string base64Key, IAmazonS3 s3Client)
          {
              // List to store upload part responses.
              List<UploadPartResponse> uploadResponses = new List<UploadPartResponse>();
  
              // 1. Initialize.
              InitiateMultipartUploadRequest initiateRequest = new InitiateMultipartUploadRequest
              {
                  BucketName = existingBucketName,
                  Key = sourceKeyName,
                  ServerSideEncryptionCustomerMethod = ServerSideEncryptionCustomerMethod.AES256,
                  ServerSideEncryptionCustomerProvidedKey = base64Key
              };
  
              InitiateMultipartUploadResponse initResponse =
                 await s3Client.InitiateMultipartUploadAsync(initiateRequest);
  
              // 2. Upload Parts.
              long contentLength = new FileInfo(filePath).Length;
              long partSize = 5 * (long)Math.Pow(2, 20); // 5 MB
  
              try
              {
                  long filePosition = 0;
                  for (int i = 1; filePosition < contentLength; i++)
                  {
                      UploadPartRequest uploadRequest = new UploadPartRequest
                      {
                          BucketName = existingBucketName,
                          Key = sourceKeyName,
                          UploadId = initResponse.UploadId,
                          PartNumber = i,
                          PartSize = partSize,
                          FilePosition = filePosition,
                          FilePath = filePath,
                          ServerSideEncryptionCustomerMethod = ServerSideEncryptionCustomerMethod.AES256,
                          ServerSideEncryptionCustomerProvidedKey = base64Key
                      };
  
                      // Upload part and add response to our list.
                      uploadResponses.Add(await s3Client.UploadPartAsync(uploadRequest));
  
                      filePosition += partSize;
                  }
  
                  // Step 3: complete.
                  CompleteMultipartUploadRequest completeRequest = new CompleteMultipartUploadRequest
                  {
                      BucketName = existingBucketName,
                      Key = sourceKeyName,
                      UploadId = initResponse.UploadId,
                      //PartETags = new List<PartETag>(uploadResponses)
  
                  };
                  completeRequest.AddPartETags(uploadResponses);
  
                  CompleteMultipartUploadResponse completeUploadResponse =
                      await s3Client.CompleteMultipartUploadAsync(completeRequest);
  
              }
              catch (Exception exception)
              {
                  Console.WriteLine("Exception occurred: {0}", exception.Message);
                  AbortMultipartUploadRequest abortMPURequest = new AbortMultipartUploadRequest
                  {
                      BucketName = existingBucketName,
                      Key = sourceKeyName,
                      UploadId = initResponse.UploadId
                  };
                  await s3Client.AbortMultipartUploadAsync(abortMPURequest);
              }
          }
      }
  }
  ```

------

# Bloquear ou desbloquear o SSE-C para um bucket de uso geral
<a name="blocking-unblocking-s3-c-encryption-gpb"></a>

A maioria dos casos de uso modernos no Amazon S3 não usa mais o SSE-C com chaves gerenciadas pelo cliente (SSE-C) porque esse tipo de criptografia não tem a flexibilidade da criptografia do lado do servidor com chaves gerenciadas pelo Amazon S3 (SSE-S3) ou da criptografia do lado do servidor com chaves do AWS KMS (SSE-KMS). Como o SSE-C exige que você forneça a chave de criptografia toda vez que interage com seus dados criptografados por SSE-C, é impossível compartilhar a chave SSE-C com outros usuários, perfis ou serviços da AWS que leem dados dos seus buckets do S3 para operar com seus dados.

Para limitar os tipos de criptografia do lado do servidor que é possível usar em buckets de uso geral, você pode optar por bloquear as solicitações de gravação SSE-C atualizando a configuração de criptografia padrão para os buckets. Essa configuração em nível de bucket bloqueia solicitações de upload de objetos que especificam SSE-C. Quando o SSE-C é bloqueado para um bucket, qualquer solicitação `PutObject`, `CopyObject`, `PostObject` ou de multipart upload ou replicação que especifique a criptografia SSE-C será rejeitada com um erro HTTP 403 `AccessDenied`.

Essa configuração é um parâmetro na API `PutBucketEncryption` e também poderá ser atualizada usando o console do S3, a AWS CLI e SDKs da AWS se você tiver a permissão `s3:PutEncryptionConfiguration`.

Os valores válidos são `SSE-C`, que bloqueia a criptografia SSE-C para o bucket de uso geral, e `NONE`, que permite o uso do SSE-C para gravações no bucket.

**Importante**  
A partir de abril de 2026, a AWS desabilitará a criptografia do lado do servidor com chaves fornecidas pelo cliente (SSE-C) para todos os buckets novos. Além disso, a criptografia SSE-C será desabilitada para todos os buckets existentes em Contas da AWS que não tenham dados criptografados por SSE-C. Com essas mudanças, as poucas aplicações que precisam da criptografia SSE-C deverão habilitar deliberadamente o uso do SSE-C por meio da API [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html) após a criação do bucket. Nesses casos, talvez seja necessário atualizar scripts de automação, modelos do CloudFormation ou outras ferramentas de configuração de infraestrutura para definir essas configurações. Para ter mais informações, consulte a publicação do [Blog do AWS Storage](https://aws.amazon.com/blogs/storage/advanced-notice-amazon-s3-to-disable-the-use-of-sse-c-encryption-by-default-for-all-new-buckets-and-select-existing-buckets-in-april-2026/).

## Permissões
<a name="bucket-encryption-permissions"></a>

Use a `PutBucketEncryption` API ou o console do S3, SDKs da AWS ou a AWS CLI para bloquear ou desbloquear tipos de criptografia para um bucket de uso geral. É necessário ter a seguinte permissão:
+ `s3:PutEncryptionConfiguration`

Use a `GetBucketEncryption` API ou o console do S3, SDKs da AWS ou a AWS CLI para visualizar os tipos de criptografia bloqueados para um bucket de uso geral. É necessário ter a seguinte permissão:
+ `s3:GetEncryptionConfiguration`

## Considerações antes de bloquear a criptografia SSE-C
<a name="considerations-before-blocking-sse-c"></a>

Depois de bloquear o SSE-C para qualquer bucket, o seguinte comportamento de criptografia será aplicado:
+ Não há alteração na criptografia dos objetos que existiam no bucket antes de você bloquear a criptografia SSE-C.
+ Depois de bloquear a criptografia SSE-C, você pode continuar fazendo solicitações GetObject e HeadObject em objetos preexistentes criptografados com SSE-C, desde que forneça os cabeçalhos SSE-C necessários nas solicitações.
+ Quando o SSE-C é bloqueado para um bucket, qualquer solicitação `PutObject`, `CopyObject`, `PostObject` ou de multipart upload que especificar a criptografia SSE-C será rejeitada com o erro HTTP 403 `AccessDenied`.
+ Se um bucket de destino para replicação tiver o SSE-C bloqueado e os objetos de origem que estão sendo replicados forem criptografados com o SSE-C, a replicação falhará com o erro HTTP 403 `AccessDenied`.

Se você quiser verificar se está usando o SSE-C em qualquer um dos seus buckets antes de bloquear esse tipo de criptografia, use ferramentas como o [AWS CloudTrail](https://aws.amazon.com/cloudtrail/) para monitorar o acesso aos seus dados. Esta [publicação de blog](https://aws.amazon.com/blogs/storage/auditing-amazon-s3-server-side-encryption-methods-for-object-uploads/) mostra como auditar métodos de criptografia para uploads de objetos em tempo real. Você também pode consultar este [artigo do re:Post](https://repost.aws/articles/ARhGC12rOiTBCKHcAe9GZXCA/how-to-detect-existing-use-of-sse-c-in-your-amazon-s3-buckets) para saber como consultar os relatórios do Inventário S3 para ver se você tem algum objeto criptografado com SSE-C.

### Etapas
<a name="block-sse-c-gpb-steps"></a>

É possível bloquear ou desbloquear a criptografia do lado do servidor com chaves fornecidas pelo cliente (SSE-C) para um bucket de uso geral usando o console do Amazon S3, a AWS Command Line Interface (AWS CLI), a API REST do Amazon S3 e SDKs da AWS.

### Usar o console do S3
<a name="block-sse-c-gpb-console"></a>

Para bloquear ou desbloquear a criptografia SSE-C para um bucket usando o console Amazon S3:

1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon S3 em https://console.aws.amazon.com/s3/.

1. No painel de navegação à esquerda, escolha **Buckets de uso geral**.

1. Selecione o bucket para o qual você gostaria de bloquear a criptografia SSE-C.

1. Selecione a guia **Propriedades** do bucket.

1. Navegue até o painel de propriedades **Criptografia padrão** do bucket e selecione **Editar**.

1. Na seção **Tipos de criptografia bloqueados**, marque a caixa ao lado de **Criptografia do lado do servidor com chaves fornecidas pelo cliente (SSE-C) para bloquear a criptografia SSE-C** ou desmarque essa caixa para permitir o SSE-C.

1. Escolha **Salvar alterações**.

### Como usar o AWS CLI
<a name="block-sse-c-gpb-cli"></a>

Para instalar a AWS CLI, consulte [Instalar ou atualizar a versão mais recente da AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) no *Guia do usuário da versão 2 da AWS Command Line Interface*.

O exemplo da CLI a seguir mostra como bloquear ou desbloquear a criptografia SSE-C para um bucket de uso geral usando a AWS CLI. Para usar o comando, substitua os *espaços reservados para entrada do usuário* por suas próprias informações.

**Solicitação para bloquear a criptografia SSE-C para um bucket de uso geral:**

```
aws s3api put-bucket-encryption \
  --bucket amzn-s3-demo-bucket \
  --server-side-encryption-configuration '{
    "Rules": [{
      "BlockEncryptionTypes": {
        "EncryptionType": "SSE-C"
      }
    }]
  }'
```

**Solicitação para habilitar o uso da criptografia SSE-C em um bucket de uso geral:**

```
aws s3api put-bucket-encryption \
  --bucket amzn-s3-demo-bucket \
  --server-side-encryption-configuration '{
    "Rules": [{
      "BlockEncryptionTypes": {
        "EncryptionType": "NONE"
      }
    }]
  }'
```

## Usar SDKs da AWS
<a name="block-sse-c-gpb-sdks"></a>

------
#### [ SDK for Java 2.x ]

Os seguintes exemplos mostram como bloquear ou desbloquear gravações da criptografia SSE-C em buckets de uso geral usando os SDKs da AWS:

**Exemplo: solicitação PutBucketEncryption que define a configuração de criptografia padrão como SSE-S3 e bloqueia o SSE-C**

```
S3Client s3Client = ...;
ServerSideEncryptionByDefault defaultSse = ServerSideEncryptionByDefault
        .builder()
        .sseAlgorithm(ServerSideEncryption.AES256)
        .build();
BlockedEncryptionTypes blockedEncryptionTypes = BlockedEncryptionTypes
        .builder()
        .encryptionType(EncryptionType.SSE_C)
        .build();
ServerSideEncryptionRule rule = ServerSideEncryptionRule.builder()
        .applyServerSideEncryptionByDefault(defaultSse)
        .blockedEncryptionTypes(blockedEncryptionTypes)
        .build();
s3Client.putBucketEncryption(be -> be
        .bucket(bucketName)
        .serverSideEncryptionConfiguration(c -> c.rules(rule)));
```

**Exemplo: solicitação PutBucketEncryption que define a configuração de criptografia padrão como SSE-S3 e desbloqueia o SSE-C**

```
S3Client s3Client = ...;
ServerSideEncryptionByDefault defaultSse = ServerSideEncryptionByDefault
        .builder()
        .sseAlgorithm(ServerSideEncryption.AES256)
        .build();
BlockedEncryptionTypes blockedEncryptionTypes = BlockedEncryptionTypes
        .builder()
        .encryptionType(EncryptionType.NONE)
        .build();
ServerSideEncryptionRule rule = ServerSideEncryptionRule.builder()
        .applyServerSideEncryptionByDefault(defaultSse)
        .blockedEncryptionTypes(blockedEncryptionTypes)
        .build();
s3Client.putBucketEncryption(be -> be
        .bucket(bucketName)
        .serverSideEncryptionConfiguration(c -> c.rules(rule)));
```

------
#### [ SDK for Python Boto3 ]

**Exemplo: solicitação PutBucketEncryption que define a configuração de criptografia padrão como SSE-S3 e bloqueia o SSE-C**

```
s3 = boto3.client("s3")
s3.put_bucket_encryption(
    Bucket="amzn-s3-demo-bucket",
    ServerSideEncryptionConfiguration={
        "Rules":[{
            "ApplyServerSideEncryptionByDefault": {
                "SSEAlgorithm": "AES256"
            },
            "BlockedEncryptionTypes": {
                "EncryptionType": ["SSE-C"]
            }
        }]
    }
)
```

**Exemplo: solicitação PutBucketEncryption que define a configuração de criptografia padrão como SSE-S3 e desbloqueia o SSE-C**

```
s3 = boto3.client("s3")
s3.put_bucket_encryption(
    Bucket="amzn-s3-demo-bucket",
    ServerSideEncryptionConfiguration={
        "Rules":[{
            "ApplyServerSideEncryptionByDefault": {
                "SSEAlgorithm": "AES256"
            },
            "BlockedEncryptionTypes": {
                "EncryptionType": ["NONE"]
            }
        }]
    }
)
```

------

## Uso da API REST
<a name="bucket-tag-add-api"></a>

Para ter informações sobre a compatibilidade oferecida pela API REST do Amazon S3 para bloquear ou desbloquear a criptografia SSE-C para um bucket de uso geral, consulte a seguinte seção na *Referência de API do Amazon Simple Storage Service*:
+ Tipo de dados [BlockedEncryptionTypes](https://docs.aws.amazon.com/AmazonS3/latest/API/API_BlockedEncryptionTypes.html) usado no tipo de dados [ServerSideEncryptionRule](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ServerSideEncryptionRule.html) das operações de API [PutBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html) e [GetBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketEncryption.html).

# Perguntas frequentes sobre a configuração padrão do SSE-C para novos buckets
<a name="default-s3-c-encryption-setting-faq"></a>

**Importante**  
A partir de abril de 2026, a AWS desabilitará a criptografia do lado do servidor com chaves fornecidas pelo cliente (SSE-C) para todos os buckets novos. Além disso, a criptografia SSE-C será desabilitada para todos os buckets existentes em Contas da AWS que não tenham dados criptografados por SSE-C. Com essas mudanças, as poucas aplicações que precisam da criptografia SSE-C deverão habilitar deliberadamente o uso do SSE-C por meio da API [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html) após a criação do bucket. Nesses casos, talvez seja necessário atualizar scripts de automação, modelos do CloudFormation ou outras ferramentas de configuração de infraestrutura para definir essas configurações. Para ter mais informações, consulte a publicação do [Blog do AWS Storage](https://aws.amazon.com/blogs/storage/advanced-notice-amazon-s3-to-disable-the-use-of-sse-c-encryption-by-default-for-all-new-buckets-and-select-existing-buckets-in-april-2026/).

As seções a seguir respondem a perguntas sobre essa atualização.

**1. Em abril de 2026, a nova configuração padrão do SSE-C entrará em vigor para todos os buckets recém-criados?**

Sim. Ao longo de abril de 2026, a nova configuração padrão será implementada gradualmente em todas as regiões da AWS.

**2. Quanto tempo vai levar para que esse lançamento abranja todas as regiões da AWS?**

Essa atualização levará várias semanas para ser totalmente lançada. Publicaremos uma postagem em Novidades quando começarmos a implantar essa atualização.

**3. Como saberei que a atualização foi concluída?**

É possível determinar facilmente se a alteração foi concluída em sua região da AWS criando um bucket e chamando a operação de API [GetBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketEncryption.html) para determinar se a criptografia SSE-C está desabilitada. Depois que a atualização for concluída, a criptografia SSE-C será desabilitada automaticamente por padrão em todos os novos buckets de uso geral. Você pode ajustar essas configurações depois de criar o bucket do S3 chamando a operação de API [PutBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html).

**4. O Amazon S3 vai atualizar as configurações dos meus buckets existentes?**

Se sua conta da AWS não tiver nenhum objeto criptografado com SSE-C, a AWS desabilitará a criptografia SSE-C em todos os seus buckets atuais. Se algum bucket na sua conta da AWS tiver objetos criptografados com SSE-C, a AWS não alterará as configurações em nenhum dos buckets dessa conta. Depois que a alteração `CreateBucket` for concluída em sua região da AWS, a nova configuração padrão será aplicada a todos os novos buckets de uso geral. 

 **5. Posso desabilitar a criptografia SSE-C para meus buckets antes que a atualização seja concluída?** 

Sim. Você pode desabilitar a criptografia SSE-C para qualquer bucket chamando a operação de API [PutBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html) e especificando o novo cabeçalho `BlockedEncryptionTypes`. 

**6. Posso usar o SSE-C para criptografar dados em meus novos buckets?**

Sim. A maioria dos casos de uso modernos no Amazon S3 não usa mais o SSE-C porque esse tipo de criptografia não tem a flexibilidade da criptografia do lado do servidor com chaves gerenciadas pelo Amazon S3 (SSE-S3) ou da criptografia do lado do servidor com chaves do AWS KMS (SSE-KMS). Se precisar usar a criptografia SSE-C em um novo bucket, é possível outro bucket e, em seguida, habilitar o uso da criptografia SSE-C em uma solicitação `PutBucketEncryption` separada.

 **Exemplo**

```
aws s3api create-bucket \  
bucket amzn-s3-demo-bucket \ 
region us-east-1 \ 
  
aws s3api put-bucket-encryption \  
-- bucket amzn-s3-demo-bucket \
-- server-side-encryption-configuration \
'{ \Rules\: [{   
   {   
   \ApplyServerSideEncryptionByDefault\: {   
     \SSEAlgorithm\: \AES256\,  
    },   
   \BlockedEncryptionTypes\: [  
     \EncryptionType\:\NONE\]   
   }   
   }]   
}'
```

**nota**  
Para chamar a API `PutBucketEncryption`, é necessário ter a permissão `s3:PutEncryptionConfiguration`. 

**7. Como o bloqueio do SSE-C afeta as solicitações ao meu bucket?**

Quando o SSE-C é bloqueado para um bucket, qualquer solicitação `PutObject`, `CopyObject`, `PostObject`, de multipart upload ou de replicação que especificar a criptografia SSE-C será rejeitada com o erro HTTP 403 `AccessDenied`. 

# Proteger dados usando a criptografia do lado do cliente
<a name="UsingClientSideEncryption"></a>

A *criptografia do lado do cliente* é o ato de criptografar dados localmente para ajudar a garantir sua segurança em trânsito e em repouso. Para criptografar os objetos antes de enviá-los ao Amazon S3, use o cliente de criptografia do Amazon S3. Quando os objetos são criptografados dessa maneira, eles não são expostos a terceiros, inclusive a AWS. O Amazon S3 recebe os objetos já criptografados. O Amazon S3 não atua na criptografia ou descriptografia dos objetos. Você pode usar o cliente de criptografia do Amazon S3 e a [criptografia do lado do servidor](serv-side-encryption.md) para criptografar os dados. Quando você envia objetos criptografados para o Amazon S3, o Amazon S3 não reconhece os objetos como sendo criptografados, ele detecta apenas objetos típicos.

O cliente de criptografia do Amazon S3 funciona como um intermediário entre você e o Amazon S3. Depois de instanciar o cliente de criptografia do Amazon S3, os objetos são automaticamente criptografados e descriptografados como parte do Amazon S3 e das solicitações `PutObject` e `GetObject`. Todos os objetos são criptografados com uma chave de dados exclusiva. O cliente de criptografia do Amazon S3 não usa nem interage com chaves de bucket, mesmo se você especificar uma chave do KMS como a chave de encapsulamento.

O *Guia do desenvolvedor do cliente de criptografia do Amazon S3* concentra-se nas versões 3.0 e posteriores do cliente de criptografia do Amazon S3. Para obter mais informações, consulte [Qual é o cliente de criptografia do Amazon S3?](https://docs.aws.amazon.com//amazon-s3-encryption-client/latest/developerguide/what-is-s3-encryption-client.html) no *Guia do desenvolvedor do cliente de criptografia do Amazon S3*.

Para obter mais informações sobre versões anteriores do cliente de criptografia do Amazon S3, consulte o Guia do desenvolvedor do SDK AWS de acordo com a sua linguagem de programação.
+ [AWS SDK para Java](https://docs.aws.amazon.com//sdk-for-java/v1/developer-guide/examples-crypto.html)
+ [AWS SDK para .NET](https://docs.aws.amazon.com//sdk-for-net/v3/developer-guide/kms-keys-s3-encryption.html)
+ [AWS SDK para Go](https://docs.aws.amazon.com//sdk-for-go/v1/developer-guide/welcome.html)
+ [AWS SDK para PHP](https://docs.aws.amazon.com//sdk-for-php/v3/developer-guide/s3-encryption-client.html)
+ [AWS SDK para Ruby](https://docs.aws.amazon.com//sdk-for-ruby/v3/api/Aws/S3/Encryption.html)
+ [AWS SDK para C\$1\$1](https://docs.aws.amazon.com//sdk-for-cpp/v1/developer-guide/welcome.html)

# Proteger dados em trânsito com criptografia
<a name="UsingEncryptionInTransit"></a>

O Amazon S3 aceita os protocolos HTTP e HTTPS para transmissão de dados. O HTTP transmite dados em texto simples, enquanto o HTTPS adiciona uma camada de segurança ao criptografar dados usando o Transport Layer Security (TLS). O TLS oferece proteção contra espionagem, adulteração de dados e ataques man-in-the-middle. Embora o tráfego HTTP seja aceito, a maioria das implementações usa criptografia em trânsito com HTTPS e TLS para proteger os dados enquanto eles trafegam entre os clientes e o Amazon S3.

## Suporte a TLS 1.2 e TLS 1.3
<a name="UsingEncryptionInTransit.TLS-support"></a>

O Amazon S3 é compatível com o TLS 1.2 e o TLS 1.3 para conexões HTTPS em todos os endpoints de API para todas as Regiões da AWS. O S3 negocia automaticamente a proteção mais forte do TLS permitida pelo software-cliente e pelo endpoint do S3 que você está acessando. Como as ferramentas atuais (2014 ou posteriores) da AWS, inclusive os SDKs da AWS, e a AWS CLI, são automaticamente padronizadas para o TLS 1.3, não é necessária nenhuma ação de sua parte. Você pode substituir essa negociação automática por meio das configurações do cliente para especificar uma versão do TLS se precisar de compatibilidade com versões anteriores do TLS 1.2. Ao usar o TLS 1.3, você tem a opção de configurar a troca de chaves híbrida pós-quântica (ML-KEM) para fazer solicitações pós-quânticas ao Amazon S3. Para obter mais informações, consulte [Configurar o TLS híbrido pós-quântico para seu cliente](pqtls-how-to.md). 

**nota**  
O TLS 1.3 é compatível com todos os endpoints do S3, exceto no AWS PrivateLink para Amazon S3 e nos pontos de acesso multirregionais.

## Monitorar o uso de TLS
<a name="UsingEncryptionInTransit.monitoring"></a>

É possível usar os logs de acesso ao servidor do Amazon S3 ou o AWS CloudTrail para monitorar solicitações aos buckets do Amazon S3. Ambas as opções de registro em log registram a versão do TLS e a suíte de cifras usada em cada solicitação.
+ **Logs de acesso ao servidor do Amazon S3**: o registro em log de acesso ao servidor oferece registros detalhados das solicitações feitas a um bucket. Por exemplo, as informações do log de acesso podem ser úteis em auditorias de segurança e acesso. Para obter mais informações, consulte [Formato dos logs de acesso ao servidor do Amazon S3](LogFormat.md).
+ **AWS CloudTrail**: o [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html) é um serviço que fornece um registro das ações realizadas por um usuário, perfil ou serviço da AWS. O CloudTrail captura todas as chamadas de API para o Amazon S3 como eventos. Para obter mais informações, consulte [Eventos do CloudTrail no Amazon S3](cloudtrail-logging-s3-info.md).

## Aplicar a criptografia em trânsito
<a name="UsingEncryptionInTransit.enforcement"></a>

É uma prática recomendada de segurança impor a criptografia de dados em trânsito para o Amazon S3. É possível impor a comunicação somente por HTTPS ou o uso de uma versão específica do TLS por meio de vários mecanismos de política. Isso inclui políticas baseadas em recurso do IAM para buckets do S3 ([políticas de bucket](bucket-policies.md)), [políticas de controle de serviços](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html) (SCPs), [políticas de controle de recursos](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html) (RCPs) e [políticas de endpoint da VPC](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html).

### Exemplos de política de bucket para aplicar a criptografia em trânsito
<a name="UsingEncryptionInTransit.bucket-policy-example"></a>

É possível usar a [chave de condição `s3:TlsVersion` do S3](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html#amazons3-policy-keys) para restringir o acesso aos buckets do Amazon S3 com base na versão do TLS usada pelo cliente. Para obter mais informações, consulte [Exemplo 6: exigir uma versão mínima do TLS](amazon-s3-policy-keys.md#example-object-tls-version).

**Example de política de bucket que impõe o TLS 1.3 usando a chave de condição `S3:TlsVersion`**  

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "DenyInsecureConnections",
      "Effect": "Deny",
      "Principal": "*",
      "Action": "s3:*",
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket1",
        "arn:aws:s3:::amzn-s3-demo-bucket1/*"
      ],
      "Condition": {
        "NumericLessThan": {
          "s3:TlsVersion": "1.3"
        }
      }
    }
  ]
}
```

É possível usar a [chave de condição global](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) `aws:SecureTransport` em sua política de bucket do S3 para verificar se a solicitação foi enviada por HTTPS (TLS). Diferentemente do exemplo anterior, essa condição não verifica uma versão específica do TLS. Para obter mais informações, consulte [Restringir o acesso somente a solicitações HTTPS](example-bucket-policies.md#example-bucket-policies-use-case-HTTP-HTTPS-1).

**Example de política de bucket que impõe HTTPS usando a chave de condição `aws:SecureTransport`**  

```
{
    "Version":"2012-10-17",		 	 	 		 	 	 
    "Statement": [
     {
        "Sid": "RestrictToTLSRequestsOnly",		 	 	 
        "Action": "s3:*",
        "Effect": "Deny",
        "Resource": [
            "arn:aws:s3:::amzn-s3-demo-bucket1",
            "arn:aws:s3:::amzn-s3-demo-bucket1/*"
        ],
        "Condition": {
            "Bool": {
                "aws:SecureTransport": "false"
            }
        },
        "Principal": "*"
    }
  ]
}
```

**Exemplo de política com base em chaves e mais exemplos**  
É possível usar os dois tipos de chave de condição dos exemplos anteriores em uma política. Para ter mais informações e conhecer abordagens adicionais de imposição, consulte o artigo [Enforcing encryption in transit with TLS1.2 or higher with Amazon S3](https://aws.amazon.com/blogs/storage/enforcing-encryption-in-transit-with-tls1-2-or-higher-with-amazon-s3/) do AWS Storage Blog.

# Usar TLS pós-quântico híbrido com o Amazon S3
<a name="UsingEncryptionInTransit.PQ-TLS"></a>

O Amazon S3 é compatível com a opção de troca de chaves híbrida pós-quântica para o protocolo de criptografia de rede TLS. Você pode usar essa opção de TLS ao fazer solicitações a endpoints do Amazon S3 usando o TLS 1.3. As suítes de cifras clássicas que o S3 permite para sessões TLS tornam inviáveis os ataques de força bruta nos mecanismos de troca de chaves com a tecnologia atual. No entanto, se um computador quântico criptograficamente relevante se tornar possível no futuro, as suítes de cifras clássicas usadas nos mecanismos de troca de chaves TLS serão suscetíveis a esses ataques. No momento, o setor está alinhado com relação à troca de chaves híbrida pós-quântica, que combina elementos clássicos e pós-quânticos para garantir que a conexão TLS seja no mínimo tão forte quanto seria com suítes de cifras clássicas. Agora o Amazon S3 oferece suporte ao PQ-TLS híbrido, em conformidade com a especificação padrão do setor da IANA.

Se você estiver desenvolvendo aplicações que dependem da confidencialidade de longo prazo dos dados transmitidos por uma conexão TLS, deverá considerar um plano para migrar para a criptografia pós-quântica antes que computadores quânticos de grande escala sejam disponibilizados para uso. Como parte do Modelo de Responsabilidade Compartilhada, o S3 oferece criptografia com segurança quântica em nossos endpoints de serviço. À medida que os navegadores e aplicações habilitarem o PQ-TLS do lado deles, o S3 escolherá a configuração mais forte possível para proteger os dados em trânsito.

**Tipos de endpoint e compatíveis Regiões da AWS**

O TLS pós-quântico para o Amazon S3 está disponível em todas as Regiões da AWS. Para ver uma lista de endpoints do S3 para cada Região da AWS, consulte [Endpoints e cotas do Amazon Simple Storage Service](https://docs.aws.amazon.com/general/latest/gr/s3.html) na *Referência geral da Amazon Web Services*.

**nota**  
É possível usar TLS híbrido pós-quântico em todos os endpoints do S3, exceto no AWS PrivateLink para Amazon S3, em pontos de acesso multirregionais e no S3 Vectors.

## Usar TLS pós-quântico híbrido com o Amazon S3
<a name="pqtls-details"></a>

É necessário configurar o cliente que faz solicitações ao Amazon S3 para que aceite o TLS híbrido pós-quântico. Ao configurar um ambiente de teste de cliente HTTP ou ambientes de produção, esteja ciente das seguintes informações:

**Criptografia em trânsito**

O TLS híbrido pós-quântico é usado apenas para criptografia em trânsito. Isso protege seus dados enquanto estes trafegam do cliente para o endpoint do S3. Esse novo suporte, combinado com a criptografia do lado do servidor do Amazon S3, utilizando algoritmos AES-256 por padrão, oferece aos clientes criptografia pós-quântica tanto em trânsito quanto em repouso. Para ter mais informações sobre a criptografia do lado do servidor no Amazon S3, consulte [Proteger os dados usando a criptografia do lado do servidor](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html).

**Clientes compatíveis**

O uso do TLS híbrido pós-quântico requer o uso de um cliente compatível com essa funcionalidade. As ferramentas e os SDKs da AWS têm configurações e recursos criptográficos que diferem de uma linguagem para outra e de um runtime para outro. Para saber mais sobre a criptografia pós-quântica de ferramentas específicas, consulte [Habilitar o TLS híbrido pós-quântico](https://docs.aws.amazon.com/payment-cryptography/latest/userguide/pqtls-details.html).

**nota**  
Os detalhes da troca de chaves PQ-TLS para solicitações ao Amazon S3 não estão disponíveis em eventos do AWS CloudTrail ou logs de acesso ao servidor do S3.

## Saiba mais sobre o TLS pós-quântico.
<a name="pqtls-see-also"></a>

Para ter mais informações sobre como usar o TLS híbrido pós-quântico, consulte os recursos a seguir.
+ Para saber mais sobre a criptografia pós-quântica na AWS e ter acesso a links para publicações de blog e artigos de pesquisa, consulte [Criptografia pós-quântica na AWS](https://aws.amazon.com/security/post-quantum-cryptography/).
+ Para obter informações sobre o s2n-tls, consulte [Apresentação do s2n-tls, uma nova implementação do TLS de código aberto](https://aws.amazon.com/blogs/security/introducing-s2n-a-new-open-source-tls-implementation/) e [Uso do s2n-tls](https://github.com/aws/s2n-tls/tree/main/docs/usage-guide).
+ Para obter informações sobre o cliente HTTP de runtime da AWS, consulte [Configuring the AWS CRT-based HTTP client](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/http-configuration-crt.html) (Configurar o cliente HTTP da baseado em CRT) no *Guia do desenvolvedor do AWS SDK for Java 2.x*.
+ Para obter informações sobre o projeto de criptografia pós-quântica no Instituto Nacional de Padrões e Tecnologia (NIST — National Institute for Standards and Technology), consulte [Criptografia pós-quântica](https://csrc.nist.gov/Projects/Post-Quantum-Cryptography).
+ Para ter informações sobre a padronização da criptografia pós-quântica do NIST, consulte [Post-Quantum Cryptography](https://csrc.nist.gov/Projects/post-quantum-cryptography/post-quantum-cryptography-standardization) no site do NIST.

# Configurar o TLS híbrido pós-quântico para seu cliente
<a name="pqtls-how-to"></a>

Para usar o PQ-TLS com o Amazon S3, é necessário configurar o cliente para aceitar algoritmos de troca de chaves pós-quântica. Além disso, o cliente deve permitir a abordagem híbrida, que combina a criptografia de curva elíptica tradicional com algoritmos pós-quânticos, como o Module-Lattice-Based Key Encapsulation Mechanism (ML-KEM).

A configuração específica depende da biblioteca cliente e da linguagem de programação. Para ter mais informações, consulte [Habilitar o TLS híbrido pós-quântico](https://docs.aws.amazon.com/payment-cryptography/latest/userguide/pqtls-details.html).

## Exemplo de configuração de cliente: AWS SDK para Java 2
<a name="UsingEncryptionInTransit.PQ-TLS.configuration.java2-sdk"></a>

Neste procedimento, adicione uma dependência do Maven para o cliente HTTP de runtime comum da AWS. Em seguida, configure um cliente HTTP com preferência em TLS pós-quântico. Em seguida, crie um cliente do Amazon S3 que use o cliente HTTP.

**nota**  
O cliente HTTP de runtime comum da AWS, que estava disponível como uma prévia, tornou-se disponível para o público em fevereiro de 2023. Nesse lançamento, a classe `tlsCipherPreference` e o parâmetro de método `tlsCipherPreference()` foram substituídos pelo parâmetro de método `postQuantumTlsEnabled()`. Se você estava usando este exemplo durante a prévia, precisará atualizar seu código.

1. Adicione o cliente de runtime comum da AWS às suas dependências do Maven. Recomendamos usar a versão mais recente disponível. 

   Por exemplo, esta instrução adiciona a versão `2.30.22` do cliente de runtime comum da AWS para suas dependências do Maven. 

   ```
   <dependency>
       <groupId>software.amazon.awssdk</groupId>
       <artifactId>aws-crt-client</artifactId>
       <version>2.30.22</version>
   </dependency>
   ```

1. Para habilitar os pacotes de criptografia pós-quântica híbrida, adicione o AWS SDK for Java 2.x ao seu projeto e inicialize-o. Em seguida, habilite os pacotes de codificação pós-quântica híbrida em seu cliente HTTP, conforme mostrado no exemplo a seguir.

   Esse código usa o parâmetro de método `postQuantumTlsEnabled()` para configurar um [cliente HTTP de runtime da AWS](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/http-configuration-crt.html) que prefere o conjunto de cifras híbridas pós-quânticas recomendado, ECDH com ML-KEM. Em seguida, o cliente HTTP configurado é usado para criar uma instância do cliente assíncrono do Amazon S, [https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/s3/S3AsyncClient.html](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/s3/S3AsyncClient.html). Após a conclusão desse código, todas as solicitações de [API do Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/API/) na instância `S3AsyncClient` usarão o TLS híbrido pós-quântico.
**Importante**  
A partir da versão 2.35.11, os chamadores não precisam mais definir `.postQuantumTlsEnabled(true)` para habilitar o TLS híbrido pós-quântico para o cliente. Todas as versões mais recentes que a v2.35.11 têm o TLS pós-quântico habilitado por padrão.

   ```
   // Configure HTTP client
   SdkAsyncHttpClient awsCrtHttpClient = AwsCrtAsyncHttpClient.builder()
             .postQuantumTlsEnabled(true)
             .build();
   
   // Create the Amazon S3 async client
   S3AsyncClient s3Async = S3AsyncClient.builder()
            .httpClient(awsCrtHttpClient)
            .build();
   ```

1. Teste suas chamadas ao Amazon S3 com o TLS híbrido pós-quântico.

   Ao chamar operações de API do Amazon S3 no cliente configurado do Amazon S3, as chamadas são transmitidas ao endpoint do Amazon S3 usando o TLS híbrido pós-quântico. Para testar a configuração, chame uma API do Amazon S3, como `[ListBuckets](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBuckets.html)`.

   ```
   ListBucketsResponse reponse = s3Async.listBuckets();
   ```

### Testar sua configuração TLS pós-quântico híbrido
<a name="pqtls-testing"></a>

Considere a possibilidade de executar os testes a seguir com suítes de cifras híbridas em suas aplicações que chamam o Amazon S3.
+ Execute testes de carga e de comparação. Os pacotes de criptografia híbrida têm uma performance diferente dos algoritmos tradicionais de troca de chaves. Talvez seja necessário ajustar os tempos limite de conexão para permitir os tempos de handshake mais longos. Se você estiver executando dentro de uma função AWS Lambda, estenda a configuração de tempo limite de execução.
+ Tente conectar-se de diferentes locais. Dependendo do caminho de rede que sua solicitação segue, é possível descobrir quais hosts intermediários, proxies ou firewalls com inspeção profunda de pacotes (DPI) bloqueiam a solicitação. Isso pode resultar do uso dos novos pacotes de criptografia na parte [ClientHello](https://tools.ietf.org/html/rfc5246#section-7.4.1.2) do handshake TLS ou das mensagens de troca de chaves maiores. Se você tiver problemas para resolver esses problemas, trabalhe com sua equipe de segurança ou administradores de TI para atualizar a configuração relevante e desbloquear os novos pacotes de criptografia TLS. 

# Privacidade do tráfego entre redes
<a name="inter-network-traffic-privacy"></a>

Este tópico descreve como o Amazon S3 protege conexões do serviço com outros locais.

## Tráfego entre clientes de serviço e on-premises e os aplicativos
<a name="inter-network-traffic-privacy-on-prem"></a>

As seguintes conexões podem ser combinadas com o AWS PrivateLink para fornecer conectividade entre sua rede privada e a AWS: 
+ Uma conexão VPN AWS Site-to-Site. Para obter mais informações, consulte [ O que é o AWS Site-to-Site VPN? ](https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html)
+ Uma conexão Direct Connect. Para ter mais informações, consulte [O que é o Direct Connect?](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html)

O acesso ao Amazon S3 pela rede acontece por meio de APIs publicadas pela AWS. Os clientes devem ser compatíveis com o Transport Layer Security (TLS) 1.2. Recomendamos o uso do TLS 1.3 com a troca de chaves híbrida pós-quântica. Os clientes também devem ter suporte a pacotes de criptografia com sigilo de encaminhamento perfeito (PFS) como Ephemeral Diffie-Hellman (DHE) ou Ephemeral Elliptic Curve Diffie-Hellman (ECDHE). A maioria dos sistemas modernos como Java 7 e versões posteriores oferece suporte a esses modos. Além disso, você deve assinar solicitações usando um ID da chave de acesso e uma chave de acesso secreta associados a uma entidade principal do IAM. Ou você pode usar o [AWS Security Token Service (STS)](https://docs.aws.amazon.com/STS/latest/APIReference/Welcome.html) para gerar credenciais de segurança temporárias para assinar solicitações.

## Tráfego entre recursos da AWS na mesma região
<a name="inter-network-traffic-privacy-within-region"></a>

Um endpoint da Virtual Private Cloud (VPC) para Amazon S3 é uma entidade lógica dentro de uma VPC que permite conectividade apenas com o Amazon S3. A VPC roteia as solicitações para o Amazon S3 e as respostas de volta para a VPC. Para obter mais informações, consulte [Endpoints da VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints.html) no *Guia do usuário da VPC*. Para obter políticas de bucket de exemplo que podem ser usadas para controlar o acesso ao bucket do S3 de VPC endpoints, consulte [Controlar o acesso a partir de VPC endpoints com políticas de bucket](example-bucket-policies-vpc-endpoint.md). 

# AWS PrivateLink for Amazon S3
<a name="privatelink-interface-endpoints"></a>

Com o AWS PrivateLink para o Amazon S3, você pode provisionar *endpoints da VPC de interface* (endpoints de interface) em sua Virtual Private Cloud (VPC). Esses endpoints são diretamente acessíveis a partir de aplicações que estão no local por meio de VPN e Direct Connect, ou em uma Região da AWS diferente por emparelhamento de VPC.

Os endpoints de interface são representados por uma ou mais interfaces de rede elástica (ENIs) que recebem endereços IP privados de sub-redes em sua VPC. As solicitações para o Amazon S3 por meio de endpoints de interface permanecem na rede da Amazon. Você também pode acessar endpoints de interface em sua VPC via aplicações on-premises por meio do AWS Direct Connect ou da AWS Virtual Private Network (Site-to-Site VPN). Para ter mais informações sobre como conectar sua VPC à rede on-premises, consulte o [Guia do usuário do Direct Connect](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html) e o [Guia do usuário do AWS Site-to-Site VPN](https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html).

Para obter informações gerais sobre endpoints de interface, consulte [Endpoints da VPC de interface (AWS PrivateLink)](https://docs.aws.amazon.com/vpc/latest/privatelink/vpce-interface.html) no *Manual do AWS PrivateLink*.

**Topics**
+ [Tipos de VPC endpoints para o Amazon S3](#types-of-vpc-endpoints-for-s3)
+ [Restrições e limitações do AWS PrivateLink do Amazon S3](#privatelink-limitations)
+ [Criar um endpoint da VPC](#s3-creating-vpc)
+ [Acessar endpoints da interface do Amazon S3](#accessing-s3-interface-endpoints)
+ [Tipos de endereço IP para endpoints da VPC](#privatelink-ip-address-types)
+ [Tipos de IP de registro de DNS para endpoints da VPC](#privatelink-dns-record-types)
+ [DNS privado](#private-dns)
+ [Acessar buckets, pontos de acesso e operações de API de controle do Amazon S3 de endpoints de interface do S3](#accessing-bucket-and-aps-from-interface-endpoints)
+ [Atualizar uma configuração de DNS on-premises](#updating-on-premises-dns-config)
+ [Criar uma política de VPC endpoint para o Amazon S3](#creating-vpc-endpoint-policy)

## Tipos de VPC endpoints para o Amazon S3
<a name="types-of-vpc-endpoints-for-s3"></a>

Você pode usar dois tipos de endpoints da VPC para acessar o Amazon S3: *endpoints de gateway* e *endpoints de interface* (usando o AWS PrivateLink). Um *endpoint de gateway* é um gateway que você especifica em sua tabela de rotas para acessar o Amazon S3 da sua VPC pela rede da AWS. Os *endpoints de interface* estendem a funcionalidade dos endpoints de gateway usando endereços IP privados para rotear solicitações para o Amazon S3 de dentro da sua VPC on-premises ou de uma PVC em outra Região da AWS usando emparelhamento da VPC ou o AWS Transit Gateway. Para obter mais informações, consulte [O que é emparelhamento da VPC?](https://docs.aws.amazon.com/vpc/latest/peering/what-is-vpc-peering.html) em [Transit Gateway vs. emparelhamento da VPC](https://docs.aws.amazon.com/whitepapers/latest/building-scalable-secure-multi-vpc-network-infrastructure/transit-gateway-vs-vpc-peering.html).

Os endpoints de interface são compatíveis com os endpoints de gateway. Se você tiver um endpoint de gateway existente na VPC, poderá usar ambos os tipos de endpoints na mesma VPC.


|  Endpoints de gateway para o Amazon S3  |  Endpoints de interface para o Amazon S3  | 
| --- | --- | 
|  Em ambos os casos, o tráfego de rede permanece na rede AWS.  | 
|  Usar endereços IP públicos do Amazon S3  |  Usar endereços IP privados da VPC para acessar o Amazon S3  | 
|  Usar os mesmos nomes DNS do Amazon S3  |  [Exigir nomes DNS do Amazon S3 específicos do endpoint](https://docs.aws.amazon.com/AmazonS3/latest/userguide/privatelink-interface-endpoints.html#accessing-s3-interface-endpoints)  | 
|  Não permita o acesso pelo ambiente on-premises  |  Permitir acesso desde on-premises  | 
|  Não permita o acesso por outra Região da AWS  |  Permitir acesso de uma VPC em outra Região da AWS usando emparelhamento da VPC ou AWS Transit Gateway  | 
|  Não faturado  |  Faturado  | 

Para ter mais informações, consulte [Endpoints de gateway](https://docs.aws.amazon.com/vpc/latest/privatelink/gateway-endpoints.html) e [Endpoints da VPC de interface](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html) no *Guia do AWS PrivateLink*.

## Restrições e limitações do AWS PrivateLink do Amazon S3
<a name="privatelink-limitations"></a>

As limitações da VPC aplicam-se ao AWS PrivateLink do Amazon S3. Para obter mais informações, consulte [Considerações sobre o endpoint de interface](https://docs.aws.amazon.com/vpc/latest/privatelink/vpce-interface.html#vpce-interface-limitations) e [Cotas do AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-limits-endpoints.html) no *Guia do usuário do AWS PrivateLink*. Além disso, aplicam-se as restrições a seguir.

Não é possível usar endpoints de interface do Amazon S3 com o seguinte:
+ [Endpoints do Federal Information Processing Standard (FIPS – Padrões Federais de Processamento de Informações](https://aws.amazon.com/compliance/fips/)
+ [Endpoints de site](WebsiteEndpoints.md)
+ [Endpoints globais herdados](VirtualHosting.md#deprecated-global-endpoint)
+ [Endpoints do S3 traço região ](https://docs.aws.amazon.com/AmazonS3/latest/userguide/VirtualHosting.html)
+ Usar [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html) ou [https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html) entre buckets em diferentes Regiões da AWS
+ Transport Layer Security (TLS) 1.0
+ Transport Layer Security (TLS) 1.1
+ Transport Layer Security (TLS) 1.3
+ Transport Layer Security (TLS) híbrido pós-quântico

## Criar um endpoint da VPC
<a name="s3-creating-vpc"></a>

Para criar um endpoint da VPC de interface, consulte [Create a VPC endpoint](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#create-interface-endpoint-aws) (Criar um endpoint da VPC) no *Guia do AWS PrivateLink*. Para criar um endpoint da VPC de gateway, consulte [Criar um endpoint de gateway](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-s3.html#create-gateway-endpoint-s3) no *Guia do AWS PrivateLink*.

## Acessar endpoints da interface do Amazon S3
<a name="accessing-s3-interface-endpoints"></a>

Quando você cria um endpoint de interface, o Amazon S3 gera dois tipos de nome de DNS do S3 específicos do endpoint: *regional* e *zonal*. 
+ Os nomes DNS *regionais* incluem um ID de endpoint da VPC exclusivo, um identificador de serviço, a Região da AWS e `vpce.amazonaws.com` em seu nome. Por exemplo, para o ID de VPC endpoint `vpce-1a2b3c4d`, o nome de DNS gerado pode ser semelhante a `vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com`.
+ Os nomes DNS *zonais* incluem a zona de disponibilidade. Por exemplo, `vpce-1a2b3c4d-5e6f-us-east-1a.s3.us-east-1.vpce.amazonaws.com`. Você pode usar essa opção se sua arquitetura isola zonas de disponibilidade. Por exemplo, você pode usar para contenção de falhas ou para reduzir os custos regionais de transferência de dados.

Os nomes de DNS do S3 específicos do endpoint podem ser resolvidos a partir do domínio DNS público do S3.

Os endpoints da VPC do Amazon S3 aceitam diferentes tipos de endereçamento IP, como IPv4, IPv6 e pilha dupla. Consulte [Tipos de endereço IP para endpoints da VPC](#privatelink-ip-address-types) e [Tipos de IP de registro de DNS para endpoints da VPC](#privatelink-dns-record-types). 

## Tipos de endereço IP para endpoints da VPC
<a name="privatelink-ip-address-types"></a>

Os endpoints da VPC do Amazon S3 aceitam diferentes tipos de endereçamento IP, como:
+ **IPv4**

  Os endpoints da VPC podem ser configurados para usar somente endereços IPv4 para conectividade.
+ **IPv6**

  Os endpoints da VPC podem ser configurados para usar somente endereços IPv6 para conectividade.
+ **Pilha dupla**

  Os endpoints da VPC podem ser configurados no modo de pilha dupla, caso em que permitem o uso de endereços IPv4 e IPv6 simultaneamente. Isso oferece flexibilidade para acessar o Amazon S3 por redes IPv4 ou IPv6.

O tipo de endereço IP que é possível escolher para o endpoint da VPC dependerá dos requisitos de rede de suas aplicações e infraestrutura. As considerações podem incluir os esquemas de endereçamento IP usados na VPC, em redes on-premises e em toda conectividade da internet com o Amazon S3. Para ter mais informações, consulte os tipos de endereço IP para [endpoints de interface](https://docs.aws.amazon.com/vpc/latest/privatelink/privatelink-access-aws-services.html#aws-service-ip-address-type) e [endpoints de gateway](https://docs.aws.amazon.com/vpc/latest/privatelink/gateway-endpoints.html#gateway-endpoint-ip-address-type) no *Guia da Amazon Virtual Private Cloud*.

## Tipos de IP de registro de DNS para endpoints da VPC
<a name="privatelink-dns-record-types"></a>

Dependendo do tipo de endereço IP, ao chamar um endpoint da VCP, o AWS service (Serviço da AWS) pode exibir registros `A`, registros `AAAA` ou registros `A` e `AAAA`. Você pode personalizar quais tipos de registro o serviço da AWS retorna modificando o tipo de IP do registro DNS. A seguinte tabela mostra os tipos de IP de registro de DNS compatíveis e os tipos de endereço IP:


| Tipos de endereço IP compatíveis | Tipos de IP de registro de DNS | 
| --- | --- | 
| IPv4 | IPv4 | 
| IPv6 | IPv6 | 
| Dualstack | Pilha dupla, IPv4, IPv6, definido pelo serviço | 

### Configurar o tipo de IP de registro de DNS definido pelo serviço para o Amazon S3
<a name="privatelink-dns-record-types-configure"></a>

Se você criar um endpoint de gateway para o Amazon S3, configurar o tipo de IP de registro de DNS como definido pelo serviço e usar o endpoint de serviço regional (como o `s3.us-east-2.amazonaws.com`), o Amazon S3 exibirá registros `A` aos seus clientes. Em contraposição, se você criar um endpoint de gateway, estiver usando um endpoint de serviço de pilha dupla (como o `s3.dualstack.us-east-2.amazonaws.com`) e definir o tipo de IP de registro de DNS como `service-defined`, o Amazon S3 exibirá os registros `A` e `AAAA` aos seus clientes.

Da mesma forma, se você criar um endpoint de interface com o DNS privado habilitado e escolher definido pelo serviço como o tipo de registro de DNS para o endpoint de serviço regional (como o `s3.us-east-2.amazonaws.com`), o Amazon S3 exibirá registros `A` aos seus clientes. Já para um endpoint de serviço de pilha dupla (como o `s3.dualstack.us-east-2.amazonaws.com`), o Amazon S3 exibirá os registros `A` e `AAAA`. Para ter mais informações, consulte o tipo de IP de registro de DNS para [endpoints de interface](https://docs.aws.amazon.com/vpc/latest/privatelink/privatelink-access-aws-services.html#aws-services-dns-record-ip-type) e [endpoints de gateway](https://docs.aws.amazon.com/vpc/latest/privatelink/gateway-endpoints.html#gateway-endpoint-dns-record-ip-type) no *Guia de usuário da VPC*.

A seguinte tabela mostra o tipo de IP de registro de DNS compatível para endpoints de gateway e de interface:


| Tipo de endereço IP | Tipos de IP de registro de DNS compatíveis para endpoints de gateway do S3 | Tipos de IP de registro de DNS compatíveis para endpoints de interface do S3  | 
| --- | --- | --- | 
| IPv4 | IPv4, definido pelo serviço\$1 | IPv4 | 
| IPv6 | IPv6, definido pelo serviço\$1 | IPv6 | 
| Dualstack | IPv4, IPv6, Pilha dupla, definido pelo serviço\$1 | Pilha dupla\$1, IPv4, IPv6, definido pelo serviço | 

\$1 Representa o tipo de IP de registro DNS padrão.

Para habilitar a conectividade IPv6 em um endpoint de gateway ou de interface existente do S3, atualize o tipo de endereço IP do endpoint para **Dualstack**. Quando atualizado, o Amazon S3 atualiza automaticamente as tabelas de roteamento com endereços IPv6 para endpoints de gateway. Em seguida, é possível usar o endpoint de serviço de pilha dupla, como o `s3.dualstack.us-east-2.amazonaws.com`, caso em que o Amazon S3 exibirá os registros `A` e `AAAA` para consultas ao DNS de pilha dupla do S3. Se você quiser usar IPV6 com o endpoint de serviço regional (por exemplo, `s3.us-east-2.amazonaws.com`), mude o tipo de endereço IP do endpoint para **Dualstack** e o tipo de IP de registro de DNS para **Dualstack**. Em seguida, o Amazon S3 exibirá os registros `A` e `AAAA` para as consultas ao DNS regionais do S3.

**Considerações**  
Se o endpoint de gateway usar a configuração padrão de tipo de endereço IP (`IPv4`) e tiver o tipo de IP de registro de DNS definido como `service-defined`, ao chamar um endpoint de serviço de pilha dupla (como o `s3.dualstack.us-east-2.amazonaws.com`), o tráfego que usar registros `AAAA` não será roteado pelo endpoint de gateway. Em vez disso, esse tráfego será descartado ou roteado por um caminho compatível com IPv6, se houver um. Por exemplo, se a nuvem privada virtual (VPC) tiver um gateway da internet, o tráfego IPv6 será roteado pelo gateway da internet na VPC nesse cenário. Se você quiser garantir que o tráfego seja sempre roteado por um endpoint da VPC, é possível usar uma política de bucket do Amazon S3 que restrinja o acesso a um bucket específico se um endpoint da VPC específico não for usado. Para ter mais informações, consulte [Restringir o acesso um endpoint da VPC específico](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies-vpc-endpoint.html#example-bucket-policies-restrict-accesss-vpc-endpoint).
Se o endpoint de interface tiver a configuração padrão do tipo de endereço IP, que é IPv4, e tiver o tipo IP de registro de DNS definido como IPv4, não será possível usar endpoints de serviço de pilha dupla, como o `ass3.dualstack.us-east-2.amazonaws.com`. O tráfego que usar os registros `A` ou `AAAA` dos endpoints de serviço de pilha dupla não será roteado pelo endpoint de interface. Em vez disso, esse tráfego será descartado ou roteado por um caminho compatível, se houver um.
Para criar ou modificar um endpoint de gateway com um tipo de IP de registro de DNS diferente do definido pelo serviço, os atributos `enableDnsSupport` e `enableDnsHostnames` da VPC devem ser definidos como true.

## DNS privado
<a name="private-dns"></a>

As opções de DNS privado para endpoints da VPC de interface simplificam o roteamento do tráfego do S3 pelos endpoints da VPC e ajudam você a aproveitar o caminho de rede de menor custo disponível para a aplicação. Você pode usar opções de DNS privadas para rotear o tráfego regional do S3 sem atualizar seus clientes do S3 para usar os nomes DNS específicos dos endpoints de interface ou gerenciar a infraestrutura de DNS. Com os nomes DNS privados ativados, as consultas ao DNS regionais do S3 são resolvidas para os endereços IP privados de AWS PrivateLink dos seguintes endpoints:
+ Endpoints regionais de bucket (por exemplo, `s3.us-east-1.amazonaws.com`)
+ Endpoints de controle (por exemplo, `s3-control.us-east-1.amazonaws.com`)
+ Endpoints de pontos de acesso (por exemplo, `s3-accesspoint.us-east-1.amazonaws.com`)

Se você tiver um endpoint de gateway na VPC, poderá rotear automaticamente as solicitações na VPC pelo endpoint do gateway do S3 existente e as solicitações on-premises pelo endpoint da interface. Essa abordagem permite que você otimize os custos da rede usando endpoints de gateway, que não são cobrados, para o tráfego na VPC. As aplicações on-premises podem usar AWS PrivateLink com a ajuda do endpoint de resolvedor de entrada. A Amazon fornece um servidor de DNS à VPC, o Route 53 Resolver. Um endpoint do Resolver de entrada encaminha consultas de DNS da rede on-premises para o Route 53 Resolver.

**Importante**  
Para aproveitar o caminho de rede de menor custo ao usar **Habilitar DNS privado somente para endpoints de entrada**, um endpoint de gateway deve estar presente na VPC. A presença de um endpoint de gateway ajuda a garantir que o tráfego na VPC sempre seja roteado pela rede privada da AWS quando a opção **Habilitar DNS privado somente para endpoints de entrada** é selecionada. Você deve manter esse endpoint de gateway enquanto estiver com a opção **Habilitar DNS privado somente para endpoints de entrada** selecionada. Se você quiser excluir o endpoint de gateway, primeiro desmarque **Habilitar DNS privado somente para endpoints de entrada**.   
Se você quiser atualizar um endpoint de interface existente para **Habilitar DNS privado somente para endpoints de entrada**, primeiro confirme se a VPC tem um endpoint de gateway do S3. Para obter mais informações sobre endpoints de gateway e gerenciamento de nomes DNS privados, consulte [Gateway de endpoints da VPC](https://docs.aws.amazon.com//vpc/latest/privatelink/vpce-gateway.html) e [Gerenciar nomes DNS](https://docs.aws.amazon.com//vpc/latest/privatelink/manage-dns-names.html), respectivamente, no *Guia do AWS PrivateLink*.  
Ao habilitar o **DNS privado somente para o resolvedor de entrada**, o `dnsRecordIpType` do endpoint de gateway deverá corresponder ao do endpoint de interface ou ser **definido pelo serviço**.

A opção **Habilitar DNS privado somente para endpoints de entrada** está disponível somente para serviços compatíveis com endpoints de gateway.

Para obter mais informações sobre a criação de um endpoint da VPC que usa **Habilitar DNS privado somente para endpoints de entrada**, consulte [Criar um endpoint de interface](https://docs.aws.amazon.com//vpc/latest/privatelink/create-interface-endpoint.html) no *Guia do AWS PrivateLink*.

**Usar o console da VPC**

No console, você tem duas opções: **Habilitar nome DNS** e **Habilitar DNS privado somente para endpoints de entrada**. **Habilitar nome DNS** é uma opção compatível com AWS PrivateLink. Ao usar a opção **Habilitar nome de DNS**, você pode usar a conectividade privada da Amazon com o Amazon S3, enquanto faz solicitações aos nomes DNS de endpoints públicos padrão. Quando essa opção é ativada, os clientes podem aproveitar o caminho de rede de menor custo disponível para a aplicação.

Quando você habilita nomes DNS privados em um endpoint da VPC de interface existente ou novo para o Amazon S3, a opção **Habilitar DNS privado somente para endpoints de entrada** é selecionada por padrão. Se essa opção for selecionada, as aplicações usarão somente endpoints de interface para o tráfego on-premises. Esse tráfego na VPC usa automaticamente os endpoints de gateway de menor custo. Como alternativa, você pode desmarcar **Habilitar DNS privado somente para endpoints de entrada** para rotear todas as solicitações do S3 pelo endpoint de interface.

**Como usar o AWS CLI**

Se você não especificar um valor para `PrivateDnsOnlyForInboundResolverEndpoint`, o padrão será `true`. No entanto, antes da VPC aplicar as configurações, ela realiza uma verificação para garantir que você tenha um endpoint de gateway presente na VPC. Se um endpoint de gateway estiver presente na VPC, a chamada será bem-sucedida. Caso contrário, você receberá a seguinte mensagem de erro: 

Para definir PrivateDnsOnlyForInboundResolverEndpoint como verdadeiro, a VPC *vpce\$1id* deve ter um endpoint de gateway para o serviço.

**Para um novo endpoint da VPC de interface**

Use os atributos `private-dns-enabled` e `dns-options` para habilitar o DNS privado por meio da linha de comando. A opção `PrivateDnsOnlyForInboundResolverEndpoint` no atributo `dns-options` deve ser definida como `true`. Substitua `user input placeholders` por suas próprias informações.

```
aws ec2 create-vpc-endpoint \
--region us-east-1 \
--service-name s3-service-name \
--vpc-id client-vpc-id \
--subnet-ids client-subnet-id \ 
--vpc-endpoint-type Interface  \
--private-dns-enabled  \
--ip-address-type ip-address-type \ 
--dns-options PrivateDnsOnlyForInboundResolverEndpoint=true \
--security-group-ids client-sg-id
```

**Para um endpoint da VPC existente**

Se você quiser usar o DNS privado para um endpoint da VPC existente, use o comando de exemplo a seguir e substitua `user input placeholders` por suas próprias informações.

```
aws ec2 modify-vpc-endpoint \
--region us-east-1 \
--vpc-endpoint-id client-vpc-id \
--private-dns-enabled \
--dns-options PrivateDnsOnlyForInboundResolverEndpoint=false
```

Se você quiser atualizar um endpoint da VPC existente para habilitar o DNS privado somente para o resolvedor de entrada, use o exemplo a seguir e substitua os valores de amostra pelos seus próprios valores.

```
aws ec2 modify-vpc-endpoint \
--region us-east-1 \
--vpc-endpoint-id client-vpc-id \
--private-dns-enabled \
--dns-options PrivateDnsOnlyForInboundResolverEndpoint=true
```

## Acessar buckets, pontos de acesso e operações de API de controle do Amazon S3 de endpoints de interface do S3
<a name="accessing-bucket-and-aps-from-interface-endpoints"></a>

Você pode usar a AWS CLI ou AWS SDKs para acessar buckets, pontos de acesso do S3 e operações de API de controle do Amazon S3 por meio de endpoints de interface do S3. 

A imagem a seguir mostra a guia **Detalhes** do console da VPC, onde você pode encontrar o nome de DNS de um VPC endpoint. Neste exemplo, o *ID do VPC endpoint (vpce-id)* é `vpce-0e25b8cdd720f900e` e o *nome de DNS* é `*.vpce-0e25b8cdd720f900e-argc85vg.s3.us-east-1.vpce.amazonaws.com`. 







![\[A guia Detalhes no console da VPC.\]](http://docs.aws.amazon.com/pt_br/AmazonS3/latest/userguide/images/vpc-console-details-tab.png)


Ao usar o nome DNS para acessar um recurso, substitua *\$1* pelo valor apropriado. Os valores apropriados a serem usados no lugar de `*` são os seguintes: 
+ `bucket`
+ `accesspoint`
+ `control`

Por exemplo, para acessar um bucket, use um *nome DNS* como este:

 `bucket.vpce-0e25b8cdd720f900e-argc85vg.s3.us-east-1.vpce.amazonaws.com`

Para obter exemplos de como usar nomes DNS para acessar buckets, pontos de acesso e operações da API de controle do Amazon S3, consulte as seções a seguir de [Exemplos da AWS CLI](#privatelink-aws-cli-examples) e [AWSExemplos de SDK](#privatelink-aws-sdk-examples).

Para obter mais informações sobre como visualizar os nomes de DNS específicos do endpoint, consulte [Visualizar a configuração de nome de DNS privado do serviço de endpoint](https://docs.aws.amazon.com/vpc/latest/privatelink/view-vpc-endpoint-service-dns-name.html) no *Guia do usuário da VPC*.

### Exemplos da AWS CLI
<a name="privatelink-aws-cli-examples"></a>

Para acessar os buckets do S3, os pontos de acesso do S3 ou as operações de API de controle do Amazon S3 por meio de endpoints de interface do S3 em comandos AWS CLI, use os parâmetros `--region` e `--endpoint-url`. 

**Exemplo: usar um URL de endpoint para listar objetos no bucket**  
No exemplo a seguir, substitua o nome do bucket `my-bucket`, a região `us-east-1` e o nome de DNS do ID do endpoint da VPC `vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com` por suas próprias informações.

```
aws s3 ls s3://my-bucket/ --region us-east-1 --endpoint-url https://bucket.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com
```

**Exemplo: usar um URL de endpoint para listar objetos de um ponto de acesso**
+ **Método 1**: usar o nome do recurso da Amazon (ARN) do ponto de acesso com o endpoint do ponto de acesso

  Substitua o ARN `us-east-1:123456789012:accesspoint/accesspointexamplename`, a região `us-east-1` e o ID do endpoint da VPC `vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com` por suas próprias informações.

  ```
  aws s3api list-objects-v2 --bucket arn:aws:s3:us-east-1:123456789012:accesspoint/accesspointexamplename --region us-east-1 --endpoint-url https://accesspoint.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com
  ```

  Se você não conseguir executar o comando com êxito, atualize a AWS CLI para a versão mais recente e tente novamente. Para obter mais informações sobre as instruções de atualização, consulte [Instalar ou atualizar a versão mais recente da AWS CLI](https://docs.aws.amazon.com//cli/latest/userguide/getting-started-install.html#getting-started-install-instructions) no *Guia do usuário do AWS Command Line Interface*.
+ **Método 2**: usar o alias do ponto de acesso com o endpoint do bucket regional

  No exemplo a seguir, substitua o alias do ponto de acesso `accesspointexamplename-8tyekmigicmhun8n9kwpfur39dnw4use1a-s3alias`, a região `us-east-1` e o ID do endpoint da VPC `vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com` por suas próprias informações.

  ```
  aws s3api list-objects-v2 --bucket accesspointexamplename-8tyekmigicmhun8n9kwpfur39dnw4use1a-s3alias --region us-east-1 --endpoint-url https://bucket.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com
  ```
+ **Método 3**: usar o alias do ponto de acesso com o endpoint do ponto de acesso

  Primeiro, para construir um endpoint S3 com o bucket incluído como parte do nome do host, defina o estilo de endereçamento como `virtual` para `aws s3api` para uso. Para obter mais informações sobre `AWS configure`, consulte [Arquivos de configuração e credencial](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html) no *Guia do usuário do AWS Command Line Interface*. 

  ```
  aws configure set default.s3.addressing_style virtual
  ```

  Depois, no exemplo a seguir, substitua o alias do ponto de acesso `accesspointexamplename-8tyekmigicmhun8n9kwpfur39dnw4use1a-s3alias`, a região `us-east-1` e o ID do endpoint da VPC `vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com` por suas próprias informações. Consulte mais informações sobre alias de ponto de acesso em [Alias de ponto de acesso](access-points-naming.md#access-points-alias).

  ```
  aws s3api list-objects-v2 --bucket accesspointexamplename-8tyekmigicmhun8n9kwpfur39dnw4use1a-s3alias --region us-east-1 --endpoint-url https://accesspoint.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com
  ```

**Exemplo: usar um URL de endpoint para listar trabalhos com uma operação de API de controle do S3**  
No exemplo a seguir, substitua a região `us-east-1`, o ID do endpoint da VPC `vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com` e o ID da conta `12345678` por suas próprias informações.

```
aws s3control --region us-east-1 --endpoint-url https://control.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com list-jobs --account-id 12345678
```

### AWSExemplos de SDK
<a name="privatelink-aws-sdk-examples"></a>

Para acessar buckets do S3, pontos de acesso do S3 ou operações da API de controle do Amazon S3 por meio de endpoints de interface do S3 ao usar os AWS SDKs, atualize os SDKs para a versão mais recente. Depois, configure seus clientes para usar um URL de endpoint para acessar um bucket, ponto de acesso ou operações de API de controle do Amazon S3 por meio de endpoints de interface do S3. 

------
#### [ SDK for Python (Boto3) ]

**Exemplo: use um URL de endpoint para acessar um bucket do S3**  
No exemplo a seguir, substitua a região `us-east-1` e o ID do endpoint da VPC `vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com` por suas próprias informações. 

```
s3_client = session.client(
service_name='s3',
region_name='us-east-1',
endpoint_url='https://bucket.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com'
)
```

**Exemplo: use um URL de endpoint para acessar um ponto de acesso do S3**  
No exemplo a seguir, substitua a região `us-east-1` e o ID do endpoint da VPC `vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com` por suas próprias informações. 

```
ap_client = session.client(
service_name='s3',
region_name='us-east-1',
endpoint_url='https://accesspoint.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com'
)
```

**Exemplo: use um URL de endpoint para acessar a API de controle do Amazon S3**  
No exemplo a seguir, substitua a região `us-east-1` e o ID do endpoint da VPC `vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com` por suas próprias informações. 

```
control_client = session.client(
service_name='s3control',
region_name='us-east-1',
endpoint_url='https://control.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com'
)
```

------
#### [ SDK for Java 1.x ]

**Exemplo: use um URL de endpoint para acessar um bucket do S3**  
No exemplo a seguir, substitua o ID do endpoint da VPC `vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com` por suas próprias informações. 

```
// bucket client
final AmazonS3 s3 = AmazonS3ClientBuilder.standard().withEndpointConfiguration(
        new AwsClientBuilder.EndpointConfiguration(
                "https://bucket.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com",
                Regions.DEFAULT_REGION.getName()
        )
).build();
List<Bucket> buckets = s3.listBuckets();
```

**Exemplo: use um URL de endpoint para acessar um ponto de acesso do S3**  
No exemplo a seguir, substitua o ID do endpoint da VPC `vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com` e o ARN `us-east-1:123456789012:accesspoint/prod` por suas próprias informações. 

```
// accesspoint client
final AmazonS3 s3accesspoint = AmazonS3ClientBuilder.standard().withEndpointConfiguration(
        new AwsClientBuilder.EndpointConfiguration(
                "https://accesspoint.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com",
                Regions.DEFAULT_REGION.getName()
        )
).build();
ObjectListing objects = s3accesspoint.listObjects("arn:aws:s3:us-east-1:123456789012:accesspoint/prod");
```

**Exemplo: usar um URL de endpoint para acessar uma operação de API de controle do Amazon S3**  
No exemplo a seguir, substitua o ID do endpoint da VPC `vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com` por suas próprias informações. 

```
// control client
final AWSS3Control s3control = AWSS3ControlClient.builder().withEndpointConfiguration(
        new AwsClientBuilder.EndpointConfiguration(
                "https://control.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com",
                Regions.DEFAULT_REGION.getName()
        )
).build();
final ListJobsResult jobs = s3control.listJobs(new ListJobsRequest());
```

------
#### [ SDK for Java 2.x ]

**Exemplo: use um URL de endpoint para acessar um bucket do S3**  
No exemplo a seguir, substitua o ID do endpoint da VPC `vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com` e a região `Region.US_EAST_1` por suas próprias informações.

```
// bucket client
Region region = Region.US_EAST_1;
s3Client = S3Client.builder().region(region)
                   .endpointOverride(URI.create("https://bucket.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com"))
                   .build()
```

**Exemplo: use um URL de endpoint para acessar um ponto de acesso do S3**  
No exemplo a seguir, substitua o ID do endpoint da VPC `vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com` e a região `Region.US_EAST_1` por suas próprias informações.

```
// accesspoint client
Region region = Region.US_EAST_1;
s3Client = S3Client.builder().region(region)
                   .endpointOverride(URI.create("https://accesspoint.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com"))
                   .build()
```

**Exemplo: use um URL de endpoint para acessar a API de controle do Amazon S3**  
No exemplo a seguir, substitua o ID do endpoint da VPC `vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com` e a região `Region.US_EAST_1` por suas próprias informações.

```
// control client
Region region = Region.US_EAST_1;
s3ControlClient = S3ControlClient.builder().region(region)
                                 .endpointOverride(URI.create("https://control.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com"))
                                 .build()
```

------

## Atualizar uma configuração de DNS on-premises
<a name="updating-on-premises-dns-config"></a>

Ao usar nomes de DNS específicos do endpoint para acessar os endpoints de interface do Amazon S3, você não precisa atualizar seu resolvedor de DNS on-premises. Você pode resolver o nome de DNS específico do endpoint com o endereço IP privado do endpoint de interface do domínio DNS público do Amazon S3. 

### Usar endpoints de interface para acessar o Amazon S3 sem um endpoint de gateway ou um gateway da Internet na VPC
<a name="using-interface-endpoints"></a>

Os endpoints de interface na VPC podem rotear aplicativos na VPC e on-premises para o Amazon S3 pela rede da Amazon, conforme ilustrado no diagrama a seguir.

![\[Diagrama de fluxo de dados que mostra o acesso ao Amazon S3 usando um endpoint de interface e o AWS PrivateLink.\]](http://docs.aws.amazon.com/pt_br/AmazonS3/latest/userguide/images/interface-endpoints.png)


O diagrama ilustra o seguinte: 
+ Sua rede on-premises usa Direct Connect ou Site-to-Site VPN para se conectar à VPC A.
+ Seus aplicativos on-premises e na VPC A usam nomes de DNS específicos do endpoint para acessar o Amazon S3 por meio do endpoint de interface do S3.
+ As aplicações on-premises enviam dados ao endpoint de interface na VPC via Direct Connect (ou Site-to-Site VPN). O AWS PrivateLink move os dados do endpoint de interface para o Amazon S3 por meio da rede da AWS.
+ As aplicações na VPC também enviam o tráfego ao endpoint de interface. O AWS PrivateLink move os dados do endpoint de interface para o Amazon S3 por meio da rede da AWS.

### Usar endpoints de gateway e de interface juntos na mesma VPC para acessar o Amazon S3
<a name="using-gateway-and-interface-endpoints"></a>

Você pode criar endpoints de interface e reter o endpoint de gateway existente na mesma VPC, como mostra o diagrama a seguir. Ao adotar essa abordagem, você permite que as aplicações na VPC continuem acessando o Amazon S3 por meio do endpoint de gateway, que não é cobrado. Depois, apenas as aplicações on-premises usariam endpoints de interface para acessar o Amazon S3. Para acessar o Amazon S3 dessa maneira, você deve atualizar as aplicações on-premises para usar nomes de DNS específicos do endpoint para Amazon S3.

![\[Diagrama de fluxo de dados que mostra o acesso ao Amazon S3 usando endpoints de gateway e de interface.\]](http://docs.aws.amazon.com/pt_br/AmazonS3/latest/userguide/images/interface-and-gateway-endpoints.png)


O diagrama ilustra o seguinte: 
+ As aplicações on-premises usam nomes de DNS específicos do endpoint para enviar dados ao endpoint de interface dentro da VPC via Direct Connect (ou Site-to-Site VPN). O AWS PrivateLink move os dados do endpoint de interface para o Amazon S3 por meio da rede da AWS.
+ Usando nomes regionais padrão do Amazon S3, as aplicações na VPC enviam dados ao endpoint de gateway que se conecta ao Amazon S3 pela rede da AWS.

Para obter mais informações sobre endpoints de gateway, consulte [Endpoints da VPC de gateway](https://docs.aws.amazon.com/vpc/latest/privatelink/vpce-gateway.html) no *Guia do usuário da VPC*. 

## Criar uma política de VPC endpoint para o Amazon S3
<a name="creating-vpc-endpoint-policy"></a>

É possível anexar uma política de endpoint ao VPC endpoint que controla o acesso ao Amazon S3. Essa política especifica as seguintes informações: 
+ A entidade principal do AWS Identity and Access Management (IAM) que pode executar ações 
+ As ações que podem ser executadas 
+ Os recursos nos quais as ações podem ser executadas 

Você também pode usar políticas de bucket do Amazon S3 para restringir o acesso a buckets específicos de um endpoint da VPC específico usando a condição `aws:sourceVpce` na política de bucket. Os exemplos a seguir mostram políticas que restringem o acesso a um bucket ou a um endpoint.

**Topics**
+ [Exemplo: restringir o acesso a um bucket específico a partir de um endpoint da VPC](#privatelink-example-restrict-access-to-bucket)
+ [Exemplo: restringir o acesso a buckets em uma conta específica a partir de um endpoint da VPC](#privatelink-example-access-bucket-in-specific-account-only)
+ [Exemplo: restringir o acesso a um endpoint da VPC específico na política de bucket do S3](#privatelink-example-restrict-access-to-vpc-endpoint)

### Exemplo: restringir o acesso a um bucket específico a partir de um endpoint da VPC
<a name="privatelink-example-restrict-access-to-bucket"></a>

Você pode criar uma política de endpoint que restringe o acesso apenas a buckets específicos do Amazon S3. Esse tipo de política será útil se houver outros Serviços da AWS em sua VPC que usem buckets. A política de bucket a seguir restringe o acesso somente a `amzn-s3-demo-bucket1`. Para usar essa política de endpoint, substitua `amzn-s3-demo-bucket1` pelo nome do bucket.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Id": "Policy1415115909151",
  "Statement": [
    { "Sid": "Access-to-specific-bucket-only",
      "Principal": "*",
      "Action": [
        "s3:GetObject",
        "s3:PutObject"
      ],
      "Effect": "Allow",
      "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket1",
                   "arn:aws:s3:::amzn-s3-demo-bucket1/*"]
    }
  ]
}
```

------

### Exemplo: restringir o acesso a buckets em uma conta específica a partir de um endpoint da VPC
<a name="privatelink-example-access-bucket-in-specific-account-only"></a>

Você pode criar uma política de endpoint que restrinja o acesso apenas aos buckets do S3 em uma Conta da AWS específica. Para impedir que os clientes dentro da VPC acessem buckets que você não possui, use a declaração a seguir na política de endpoint. O exemplo a seguir cria uma política que restringe o acesso a recursos pertencentes a um único ID de Conta da AWS, *`111122223333`*.

```
{
  "Statement": [
    {
      "Sid": "Access-to-bucket-in-specific-account-only",
      "Principal": "*",
      "Action": [
        "s3:GetObject",
        "s3:PutObject"
      ],
      "Effect": "Deny",
      "Resource": "arn:aws:s3:::*",
      "Condition": {
        "StringNotEquals": {
          "aws:ResourceAccount": "111122223333"
        }
      }
    }
  ]
}
```

**nota**  
Para especificar o ID da Conta da AWS do recurso que está sendo acessado, você pode usar a chave `aws:ResourceAccount` ou `s3:ResourceAccount` na política do IAM. No entanto, saiba que alguns Serviços da AWS dependem do acesso a buckets gerenciados pela AWS. Portanto, usar a chave `aws:ResourceAccount` ou `s3:ResourceAccount` em sua política do IAM também pode afetar o acesso a esses recursos.

### Exemplo: restringir o acesso a um endpoint da VPC específico na política de bucket do S3
<a name="privatelink-example-restrict-access-to-vpc-endpoint"></a>

A política de bucket do Amazon S3 a seguir permite o acesso a um bucket específico, `amzn-s3-demo-bucket2`, apenas pelo endpoint da VPC `vpce-1a2b3c4d`. Essa política negará todo acesso ao bucket se o endpoint especificado não estiver sendo usado. A condição `aws:sourceVpce` especifica o endpoint e não requer um nome do recurso da Amazon (ARN) para o recurso de endpoint da VPC, apenas o ID do endpoint. Para usar essa política de bucket, substitua `amzn-s3-demo-bucket2` e `vpce-1a2b3c4d` pelo nome e endpoint do bucket. 

**Importante**  
Ao aplicar as políticas de bucket do Amazon S3 a seguir para restringir o acesso somente a certos endpoints da VPC, você pode bloquear o acesso ao bucket inadvertidamente. As políticas de bucket destinadas especificamente a limitar o acesso do bucket às conexões originadas do endpoint da VPC podem bloquear todas as conexões ao bucket. Para obter informações sobre como corrigir esse problema, consulte [Minha política de bucket tem o ID da VPC ou do endpoint da VPC incorreto. Como corrigir a política para que eu possa acessar o bucket? na ](https://aws.amazon.com/premiumsupport/knowledge-center/s3-regain-access/)Central de conhecimento do *Suporte*.
Antes de usar a política de exemplo a seguir, substitua o ID do VPC endpoint por um valor apropriado para o caso de uso. Caso contrário, não será possível acessar o bucket. 
Essa política desabilita o acesso do *console* ao bucket especificado, pois as solicitações do console não se originam do VPC endpoint especificado. 

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Id": "Policy1415115909152",
  "Statement": [
    { "Sid": "Access-to-specific-VPCE-only",
      "Principal": "*",
      "Action": "s3:*",
      "Effect": "Deny",
      "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket2",
                   "arn:aws:s3:::amzn-s3-demo-bucket2/*"],
      "Condition": {"StringNotEquals": {"aws:sourceVpce": "vpce-1a2b3c4d"}}
    }
  ]
}
```

------

Para obter mais exemplos de políticas, consulte [Endpoints para o Amazon S3](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-s3.html#vpc-endpoints-policies-s3) no *Guia do usuário da VPC*.

Para obter mais informações sobre conectividade de VPC, consulte [Network-to-VPC connectivity options](https://docs.aws.amazon.com/whitepapers/latest/aws-vpc-connectivity-options/network-to-amazon-vpc-connectivity-options.html) (Opções de conectividade entre rede e VPC) no whitepaper da AWS [Amazon Virtual Private Cloud Connectivity Options](https://docs.aws.amazon.com/whitepapers/latest/aws-vpc-connectivity-options/welcome.html) (Opções de conectividade do Amazon Virtual Private Cloud).

# Validação de conformidade para o Amazon S3
<a name="s3-compliance"></a>

Auditores terceiros avaliam a segurança e a compatibilidade do Amazon S3 como parte de vários programas de compatibilidade da AWS, incluindo o seguinte:
+ Controles do Sistema e da Organização (CSO)
+ Padrão de segurança de dados do setor de cartão de pagamento (PCI DSS – Payment Card Industry Data Security Standard)
+ Federal Risk and Authorization Management Program (FedRAMP)
+ Health Insurance Portability and Accountability Act (HIPAA)

A AWS fornece uma lista atualizada com frequência de serviços da AWS no escopo de programas de conformidade específicos em [Serviços da AWS no escopo do programa de conformidade](https://aws.amazon.com/compliance/services-in-scope/). 

Os relatórios de auditoria de terceiros estão disponíveis para download por meio do AWS Artifact. Para obter mais informações, consulte [Fazer o download de Relatórios no AWS Artifact](https://docs.aws.amazon.com/artifact/latest/ug/downloading-documents.html). 

Para obter mais informações sobre programas de conformidade da AWS, consulte [Programas de conformidade da AWS](https://aws.amazon.com/compliance/programs/).

Sua responsabilidade de conformidade ao usar o Amazon S3 é determinada pela confidencialidade de seus dados, pelas metas de conformidade da sua organização e pelas regulamentações e leis aplicáveis. Caso o uso do Amazon S3 esteja sujeito à compatibilidade com padrões como HIPAA, PCI ou FedRAMP, a AWS fornecerá os recursos para ajudar:
+ [Guias de início rápido de segurança e compatibilidade](https://aws.amazon.com/quickstart/?awsf.quickstart-homepage-filter=categories%23security-identity-compliance) que discutem as considerações de arquitetura e fornecem etapas para a implantação de ambientes de linha de base focados em conformidade e segurança na AWS. 
+ O whitepaper [Architecting for HIPAA Security and Compliance](https://docs.aws.amazon.com/whitepapers/latest/architecting-hipaa-security-and-compliance-on-aws/architecting-hipaa-security-and-compliance-on-aws.html) descreve como as empresas usam a AWS para ajudá-las a atender aos requisitos da HIPAA.
+ [Recursos de conformidade da AWS](https://aws.amazon.com/compliance/resources/) fornecem vários guias e manuais que podem se aplicar ao seu setor e local.
+ [AWS Config](https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config.html) O pode ser usado para avaliar até que ponto suas configurações de recursos atendem adequadamente a práticas internas e a diretrizes e regulamentações do setor.
+ [O Security Hub da AWS](https://docs.aws.amazon.com/securityhub/latest/userguide/what-is-securityhub.html) fornece uma visão abrangente do seu estado de segurança na AWS que ajuda você a verificar a conformidade com os padrões e as melhores práticas do setor de segurança. 
+ [Bloquear objetos com o Bloqueio de Objetos](object-lock.md)O pode ajudar a atender os requisitos de reguladores de serviços financeiros (como o SEC, FINRA e CFTC) que exigem armazenamento de dados WORM (Write Once, Read Many) para determinados tipos de informações gravadas. 
+ [Catalogar e analisar seus dados com o Inventário S3](storage-inventory.md)O pode ajudar você a auditar e gerar relatórios sobre o status da replicação e da criptografia de seus objetos para suas necessidades comerciais, de conformidade e regulatórias.

# Resiliência no Amazon S3
<a name="disaster-recovery-resiliency"></a>

A infraestrutura global da AWS é construída em torno de regiões e zonas de disponibilidade. As Regiões da AWS oferecem várias zonas de disponibilidade separadas e isoladas fisicamente que são conectadas com baixa latência, alto throughput e redes altamente redundantes. As zonas de disponibilidade oferecem a você uma forma eficiente para criar e operar aplicativos e bancos de dados. Elas são mais altamente disponíveis, tolerantes a falhas e escaláveis que infraestruturas com único data center ou infraestruturas com vários datacenters tradicionais. Se for necessário replicar seus dados especificamente em distâncias geográficas maiores, você poderá usar o [Replicar objetos dentro de uma região e entre regiões](replication.md), que permite a cópia automática e assíncrona de objetos entre buckets de diferentes Regiões da AWS.

Cada Região da AWS tem várias zonas de disponibilidade. Você pode implantar suas aplicações em diversas zonas de disponibilidade na mesma região para tolerância de falha e baixa latência. As zonas de disponibilidade são conectadas umas as outras com redes de fibra ótica rápidas e privadas, que permitem o desenvolvimento de aplicações submetidas a failover automaticamente entre as zonas de disponibilidade, sem interrupções.

Para saber mais sobre Regiões da AWS e zonas de disponibilidade, consulte [Infraestrutura global da AWS](https://aws.amazon.com/about-aws/global-infrastructure/).

Além da infraestrutura global da AWS, o Amazon S3 oferece vários recursos para oferecer suporte às suas necessidades de resiliência e backup de dados.

**Configuração do ciclo de vida**  
Uma configuração de ciclo de vida é um conjunto de regras que definem as ações aplicadas pelo Amazon S3 a um grupo de objetos. Com regras de configuração de ciclo de vida, é possível solicitar que o Amazon S3 faça a transição de objetos para classes de armazenamento menos caras, arquive-os ou exclua-os. Para obter mais informações, consulte [Gerenciar o ciclo de vida dos objetos](object-lifecycle-mgmt.md).

**Versionamento**  
Versionamento é um meio de manter diversas variantes de um objeto no mesmo bucket. O versionamento pode ser usado para preservar, recuperar e restaurar todas as versões de cada objeto armazenado no bucket do Amazon S3. Com o versionamento, você pode se recuperar, facilmente, de ações não intencionais do usuário e de falhas de aplicativo. Para obter mais informações, consulte [Reter várias versões de objetos com o Versionamento do S3](Versioning.md).

**Bloqueio de objetos do S3**  
Você pode usar o bloqueio de objetos do S3 para armazenar objetos usando um modelo *gravar uma vez, ler muitas* (WORM, write once read many). Ao usar o bloqueio de objetos do S3, você pode evitar que um objeto seja excluído ou substituído por um período fixo ou indefinidamente. O bloqueio de objetos do S3 permite atender aos requisitos regulamentares que exigem armazenamento WORM, ou simplesmente adicionar uma camada extra de proteção contra alterações e exclusões de objetos. Para obter mais informações, consulte [Bloquear objetos com o Bloqueio de Objetos](object-lock.md).

**Classes de armazenamento**  
O Amazon S3 oferece uma variedade de classes de armazenamento para escolher, de acordo com os requisitos da workload. As classes de armazenamento S3 Standard – IA e S3 One Zone – IA foram desenvolvidas para dados que você acessa cerca de uma vez por mês e precisam de acesso de milissegundos. A classe de armazenamento S3 Glacier Instant Retrieval foi projetada para dados de arquivo de longa duração com acesso de milissegundos que você acessa cerca de uma vez por trimestre. Para dados de arquivo que não necessitam de acesso imediato, como backups, use as classes de armazenamento S3 Glacier Flexieval ou S3 Glacier Deep Archive. Para obter mais informações, consulte [Compreender e gerenciar classes de armazenamento do Amazon S3](storage-class-intro.md).

As melhores práticas de segurança a seguir também abordam resiliência:
+ [Enable versioning](security-best-practices.md#versioning)
+ [Consider Amazon S3 cross-region replication](security-best-practices.md#cross-region)
+ [Identify and audit all your Amazon S3 buckets](security-best-practices.md#audit)

## Criptografia de backups do Amazon S3
<a name="backup-encryption"></a>

Se estiver armazenando backups usando o Amazon S3, a criptografia dos backups dependerá da configuração desses buckets. O Amazon S3 fornece uma forma de configurar o comportamento de criptografia padrão para um bucket do S3. Você pode configurar a criptografia padrão em um bucket para que todos os objetos sejam criptografados quando forem armazenados nele. A criptografia padrão oferece suporte a chaves armazenadas no AWS KMS (SSE-KMS). Para obter mais informações, consulte [Definir o comportamento padrão da criptografia para os buckets do Amazon S3](bucket-encryption.md).

Para obter mais informações sobre versionamento e bloqueio de objetos, consulte os seguintes tópicos: [Reter várias versões de objetos com o Versionamento do S3](Versioning.md) [Bloquear objetos com o Bloqueio de Objetos](object-lock.md) 

# Segurança da infraestrutura no Amazon S3
<a name="network-isolation"></a>

Como um serviço gerenciado, o Amazon S3 é protegido pelo procedimento de segurança de redes global da AWS que são descritos no pilar de segurança do [AWS Well-Architected Framework](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/welcome.html).

O acesso ao Amazon S3 pela rede acontece por meio de APIs publicadas pela AWS. Os clientes devem ser compatíveis com o Transport Layer Security (TLS) 1.2. Recomendamos também o suporte ao TLS 1.3 e a troca de chaves híbrida pós-quântica. Para saber mais sobre a criptografia pós-quântica na AWS e ter acesso a links para publicações de blog e artigos de pesquisa, consulte [Criptografia pós-quântica na AWS](https://aws.amazon.com/security/post-quantum-cryptography/).

**nota**  
O TLS 1.3 é compatível com todos os endpoints do S3, exceto no AWS PrivateLink para Amazon S3 e nos pontos de acesso multirregionais.

Os clientes também devem ter suporte a pacotes de criptografia com sigilo de encaminhamento perfeito (PFS) como Ephemeral Diffie-Hellman (DHE) ou Elliptic Curve Diffie-Hellman Encaminhamento (ECDHE). Além disso, as solicitações devem ser assinadas usando o AWS Signature V4 ou AWS Signature V2, o que exige o fornecimento de credenciais válidas.

Essas APIs podem ser chamadas de qualquer local da rede. No entanto, o Amazon S3 não oferece suporte a políticas de acesso com base em recursos, que podem incluir restrições com base no endereço IP de origem. Você também pode usar políticas de bucket do Amazon S3 para controlar o acesso a buckets a partir de endpoints específicos da virtual private cloud (VPC) ou de VPCs específicas. Efetivamente, isso isola o acesso à rede para um determinado bucket do Amazon S3 somente da VPC específica dentro da rede da AWS. Para obter mais informações, consulte [Controlar o acesso a partir de VPC endpoints com políticas de bucket](example-bucket-policies-vpc-endpoint.md).

As melhores práticas de segurança a seguir também abordam a segurança de infraestrutura no Amazon S3:
+ [Consider VPC endpoints for Amazon S3 access](security-best-practices.md#end-points)
+ [Identify and audit all your Amazon S3 buckets](security-best-practices.md#audit)

# Análise de configuração e vulnerabilidade no Amazon S3
<a name="vulnerability-analysis-and-management"></a>

AWSA se encarrega das tarefas básicas de segurança, como aplicação de patches a bancos de dados e sistemas operacionais (SOs) convidados, configuração de firewalls e recuperação de desastres. Esses procedimentos foram revisados e certificados por terceiros certificados. Para obter mais detalhes, consulte os recursos a seguir:
+ [Validação de conformidade para o Amazon S3](s3-compliance.md)
+ [Modelo de responsabilidade compartilhada](https://aws.amazon.com/compliance/shared-responsibility-model/)
+ [Amazon Web Services: visão geral dos processos de segurança](https://d0.awsstatic.com/whitepapers/Security/AWS_Security_Whitepaper.pdf)

As seguintes melhores práticas de segurança também abordam a análise de configuração e vulnerabilidade no Amazon S3:
+ [Identify and audit all your Amazon S3 buckets](security-best-practices.md#audit)
+ [Habilitar AWS Config](security-best-practices.md#config)

# Gerenciamento de acesso
<a name="security-access-management"></a>

O Amazon S3 fornece uma variedade de ferramentas de gerenciamento de acesso. Veja a seguir uma lista desses recursos e ferramentas. Você não precisa de todas essas ferramentas de gerenciamento de acesso, mas deve usar uma ou mais para conceder acesso a buckets e objetos do Amazon S3, além de outros [Recursos do S3](access-management.md#access-management-resources). A aplicação adequada dessas ferramentas pode ajudar a garantir que seus recursos só possam ser acessados pelos usuários pretendidos. 

A ferramenta de gerenciamento de acesso mais usada é a *política de acesso*. Uma política de acesso pode ser uma *política baseada em recurso* vinculada a um recurso da AWS, como uma política de bucket para um bucket. Uma política de acesso também pode ser uma *política baseada em identidade* anexada a uma identidade do AWS Identity and Access Management (IAM), como um usuário, grupo ou perfil do IAM. A política de acesso descreve quem tem acesso a quê. Escreva uma política de acesso para conceder a Contas da AWS e usuários, grupos e perfis do IAM permissão para realizar operações em um recurso. Por exemplo, você pode conceder a permissão `PUT Object` para outra Conta da AWS de modo que o usuário possa fazer upload de objetos em seu bucket.

Veja a seguir as ferramentas de gerenciamento de acesso disponíveis no Amazon S3. Consulte um guia mais abrangente sobre o controle de acesso ao Amazon S3 em [Controle de acesso no Amazon S3](access-management.md).

**Política de bucket**  
Uma política de bucket do Amazon S3 é uma [política baseada em recurso do AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html), formatada em JSON, que é anexada a determinado bucket. Use políticas de bucket para conceder a outras Contas da AWS ou identidades do IAM permissões de acesso ao bucket e aos objetos contidos nele. Muitos casos de uso de gerenciamento de acesso do S3 podem ser atendidos usando uma política de bucket. Com as políticas de bucket, é possível personalizar o acesso ao bucket para ajudar a garantir que somente as identidades que você aprovou possam acessar recursos e executar ações neles. Para obter mais informações, consulte [Políticas de bucket para o Amazon S3](bucket-policies.md). 

**Política baseada em identidade**  
Uma política de usuário do IAM ou baseada em identidade é um tipo de política do [AWS Identity and Access Management(IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html). Uma política baseada em identidade é uma política em formato JSON anexada a usuários, grupos ou perfis do IAM em sua conta da AWS. Você pode usar políticas baseadas em identidade para conceder a uma identidade do IAM acesso a buckets ou objetos. É possível criar usuários, grupos e perfis do IAM em sua conta e anexar políticas de acesso a eles. Depois, você pode conceder acesso a recursos da AWS, incluindo recursos do Amazon S3. Para obter mais informações, consulte [Políticas baseadas em identidade do Amazon S3](security_iam_id-based-policy-examples.md). 

**Concessão de Acesso do S3**  
Use a funcionalidade Concessões de Acesso do S3 para criar concessões de acesso aos seus dados do Amazon S3 para identidades em diretórios de identidades corporativas, como Active Directory, e para identidades do AWS Identity and Access Management (IAM). A funcionalidade Concessões de Acesso do S3 ajuda você a gerenciar permissões de dados em grande escala. Além disso, a funcionalidade Concessões de Acesso do S3 registra a identidade do usuário final e a aplicação usada para acessar os dados do S3 em logs do AWS CloudTrail. Isso fornece um histórico de auditoria detalhado até a identidade do usuário final para todos os acessos aos dados em seus buckets do S3. Para obter mais informações, consulte [Gerenciar o acesso com a funcionalidade Concessões de Acesso do S3](access-grants.md).

**Pontos de acesso**  
A funcionalidade Pontos de Acesso Amazon S3 simplifica o gerenciamento do acesso a dados em escala para aplicações que usam conjuntos de dados compartilhados no S3. Os pontos de acesso são endpoints de rede nomeados que são anexados a um bucket. Você pode usar os pontos de acesso para executar operações em objetos do S3 em grande escala, como fazer upload e recuperar objetos. Um bucket pode ter até 10.000 pontos de acesso anexados, e é possível impor permissões distintas e controles de rede a cada ponto de acesso para fornecer controle detalhado sobre o acesso aos objetos do S3. A funcionalidade Pontos de Acesso do S3 pode ser associada a buckets na mesma conta ou em outra conta confiável. As políticas de pontos de acesso são políticas baseadas em recurso que são avaliadas em conjunto com a política de bucket correspondente. Para obter mais informações, consulte [Gerenciar o acesso a conjuntos de dados compartilhados com pontos de acesso](access-points.md).

**Lista de controle de acesso (ACL)**  
Uma ACL é uma lista de concessões que identifica o concessionário e a permissão concedida. As ACLs concedem permissões básicas de leitura ou gravação a outras Contas da AWS. As ACLs usam um esquema XML específico do Amazon S3. Uma ACL é um tipo de [política do AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html). Uma ACL de objeto é usada para gerenciar o acesso a um objeto, e uma ACL de bucket é usada para gerenciar o acesso a um bucket. No caso das políticas de bucket, há uma única política para o bucket todo, mas as ACLs de objeto são especificadas por objeto. Recomendamos manter as ACLs desabilitadas, exceto em circunstâncias em que seja necessário controlar o acesso para cada objeto individualmente. Para obter mais informações sobre como usar ACLs, consulte [Controlar a propriedade de objetos e desabilitar ACLs para seu bucket](about-object-ownership.md).

**Atenção**  
A maioria dos casos de uso modernos no Amazon S3 não exige o uso de ACLs. 

**Propriedade de Objeto**  
Para gerenciar o acesso a um objeto, você precisa ser o proprietário desse objeto. Você pode usar a configuração Propriedade de Objeto ao nível do bucket para controlar a propriedade de objetos carregados no bucket. Além disso, use a Propriedade de Objeto para ativar as ACLs. Por padrão, “Propriedade do objeto” está definida com a configuração *Imposto pelo proprietário do bucket* e todas as ACLs estão desabilitadas. Quando as ACLs estão desativadas, o proprietário do bucket possui todos os objetos do bucket e gerencia exclusivamente o acesso aos dados. Para gerenciar o acesso, o proprietário do bucket usa políticas ou outra ferramenta de gerenciamento de acesso, excluindo as ACLs. Para obter mais informações, consulte [Controlar a propriedade de objetos e desabilitar ACLs para seu bucket](about-object-ownership.md).

Consulte um guia mais abrangente sobre o controle de acesso ao Amazon S3 e práticas recomendadas adicionais em [Controle de acesso no Amazon S3](access-management.md).

# Inventário de dados do Amazon Simple Storage Service
<a name="s3-data-inventory"></a>

## Amazon S3
<a name="s3-intro"></a>

O Amazon S3 oferece armazenamento escalável de objetos na Nuvem AWS. Ele permite armazenar e recuperar qualquer quantidade de dados, de qualquer lugar na web. Com base em sua arquitetura exclusiva, o S3 foi projetado para exceder 99,999999999% (11 noves) de durabilidade de dados. Além disso, o S3 armazena dados de forma redundante no mínimo em três zonas de disponibilidade por padrão, fornecendo resiliência integrada contra desastres generalizados. Os clientes podem armazenar dados em uma única zona de disponibilidade para minimizar o custo ou a latência de armazenamento, em várias zonas de disponibilidade para ter resiliência contra a perda permanente de um data center inteiro ou em várias Regiões da AWS para atender aos requisitos de resiliência geográfica. Características principais

Localização geográfica  
O Amazon S3 está hospedado em vários locais ao redor do mundo. Selecione locais para seus dados que estejam próximos de seus clientes.

Buckets  
Um bucket é um contêiner para objetos armazenados no Amazon S3. Cada objeto está contido em um bucket.

Objetos  
Os objetos são as entidades fundamentais armazenadas no Amazon S3. Os objetos consistem em metadados e dados de objeto.

Classes de armazenamento  
O Amazon S3 oferece diferentes classes de armazenamento otimizadas para diferentes casos de uso.

Gerenciamento de armazenamento  
O Amazon S3 tem recursos de gerenciamento de armazenamento que você pode usar para gerenciar custos e atender aos requisitos de conformidade. 

Gerenciamento de acesso e segurança  
O Amazon S3 fornece recursos para auditoria e gerenciamento de acesso a seus buckets e objetos.

## Localização geográfica
<a name="s3-geographic-location"></a>

O Amazon S3 é disponibilizado por toda Região da AWS ao redor do mundo. Cada região é uma área geográfica separada.

### A importância deste aspecto
<a name="s3-geographic-location-why"></a>

Depois de determinar onde deseja armazenar seus dados, você poderá decidir se quer implantar um armazenamento com funcionalidades equivalentes nos mesmos locais ou em locais diferentes, dependendo de suas necessidades.

### Como obter um resumo dos buckets do Amazon S3 em todas as regiões
<a name="s3-geographic-location-how"></a>

Use o seguinte comando AWS CLI:

```
   aws s3api list-buckets /
    --max-items 100 / 
    --page-size 100
```

Para ter mais informações, consulte [list-buckets](https://docs.aws.amazon.com/cli/latest/reference/s3api/list-buckets.html) na “Referência de comandos da AWS CLI”.

## Buckets
<a name="s3-buckets"></a>

Os buckets do Amazon S3 são contêineres para objetos. Cada bucket tem um nome exclusivo em toda a AWS. O Amazon S3 comporta quatro tipos de bucket: de uso geral, de diretório, de tabela e de vetores. Cada tipo de bucket oferece um conjunto exclusivo de recursos para diferentes casos de uso. Para ter mais informações sobre os diferentes tipos de bucket, consulte [Buckets](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html#BasicsBucket) no “Guia do usuário do Amazon S3”.

### Por que isso é importante
<a name="s3-buckets-why"></a>

Depois de listar seus buckets, você pode validar as respectivas configurações para sistemas de armazenamento funcionalmente equivalentes analisando as várias configurações de bucket. 

### Como listar as configurações de bucket
<a name="s3-buckets-how"></a>

```
aws s3api get-bucket-versioning --bucket amzn-s3-demo-bucket1
aws s3api get-bucket-encryption --bucket amzn-s3-demo-bucket1
aws s3api get-bucket-logging --bucket amzn-s3-demo-bucket1
```

Para ter mais informações, consulte [get-bucket-versioning](https://docs.aws.amazon.com/cli/latest/reference/s3api/get-bucket-versioning.html) na “Referência de comandos da AWS CLI”.

## Objetos
<a name="s3-objects"></a>

Os objetos são as entidades fundamentais armazenadas no Amazon S3. Cada objeto consiste em dados, uma chave (nome) e metadados.

### Por que isso é importante
<a name="s3-objects-why"></a>

Compreender as características do objeto ajuda você a se preparar para atender a requisitos equivalentes de capacidade de armazenamento e de desempenho em sistemas funcionalmente equivalentes.

### Como listar objetos e as respectivas propriedades
<a name="s3-objects-how"></a>

```
aws s3api list-objects-v2 --bucket amzn-s3-demo-bucket1 /
    --query 'Contents[].{Key: Key, Size: Size, LastModified: LastModified}'
```

Para ter mais informações, consulte [list-objects-v2](https://docs.aws.amazon.com/cli/latest/reference/s3api/list-objects-v2.html) na “Referência de comandos da AWS CLI”.

## Classes de armazenamento
<a name="s3-storage-classes"></a>
+ Amazon S3 Standard
+ Amazon S3 Intelligent-Tiering
+ Amazon S3 Standard-IA
+ Amazon S3 One Zone-IA
+ Amazon S3 Glacier Instant Retrieval
+ Amazon S3 Glacier Flexible Retrieval
+ Amazon S3 Glacier Deep Archive
+ Amazon S3 Express One Zone

### Por que isso é importante
<a name="s3-storage-classes-why"></a>

Saber como a classe de armazenamento é usada ajuda a determinar os níveis de armazenamento apropriados em sistemas funcionalmente equivalentes. Para ter mais informações, consulte [Compreender e gerenciar classes de armazenamento do Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-class-intro.html) no “Guia do usuário do Amazon S3”.

### Para analisar a seleção e o uso da classe de armazenamento
<a name="s3-storage-classes-how"></a>

Você pode usar a Lente de Armazenamento do Amazon S3 para analisar a seleção e o uso da classe de armazenamento. Para ter mais informações, consulte [Compreender e gerenciar classes de armazenamento do Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-class-intro.html) no “Guia do usuário do Amazon S3”.

## Gerenciamento de armazenamento
<a name="s3-storage-management"></a>

### A importância deste aspecto
<a name="s3-storage-management-why"></a>

Saber como o gerenciamento de armazenamento é usado ajuda a planejar recursos equivalentes para gerenciar custos e cumprir os requisitos de conformidade em sistemas funcionalmente equivalentes.

### Como analisar a seleção e o uso dos recursos de gerenciamento de armazenamento
<a name="s3-storage-management-how"></a>

Você pode usar a Lente de Armazenamento do Amazon S3 para analisar o uso dos recursos de gerenciamento de armazenamento. Para ter mais informações, consulte [Glossário de métricas de lente de armazenamento do Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage_lens_metrics_glossary.html) no “Guia do usuário do Amazon S3”. 

## Gerenciamento de acesso e segurança
<a name="s3-access-management"></a>

### Por que isso é importante
<a name="s3-access-management-why"></a>

Compreender suas configurações de gerenciamento de acesso e segurança ajuda você a planejar recursos equivalentes para gerenciar os requisitos de acesso e segurança em sistemas funcionalmente equivalentes.

### Como analisar suas configurações de gerenciamento de acesso e segurança
<a name="s3-access-management-how"></a>

Depois de listar os buckets, você pode validar as respectivas configurações de segurança e acesso para sistemas de armazenamento funcionalmente equivalentes analisando as várias configurações de bucket.

```
aws s3api get-public-access-block --bucket amzn-s3-demo-bucket1 
aws s3api get-bucket-acl --bucket amzn-s3-demo-bucket1 
aws s3api get-bucket-encryption --bucket amzn-s3-demo-bucket1
aws s3api get-bucket-policy --bucket amzn-s3-demo-bucket1
```

## Transferência de dados
<a name="s3-data-transfer"></a>

É possível transferir dados do Amazon S3 usando vários métodos:
+ AWS CLI
+ AWS SDK
+ API REST do Amazon S3
+ Ferramentas de terceiros

### Exemplo usando  AWS CLI
<a name="s3-data-transfer-examples"></a>

Para baixar um bucket inteiro:

```
aws s3 sync s3://amzn-s3-demo-bucket1 /local/path
```

Para ter mais informações, consulte [sync](https://docs.aws.amazon.com/cli/latest/reference/s3/sync.html) na “Referência de comandos da AWS CLI”.

Para baixar objetos específicos:

```
aws s3 cp s3://amzn-s3-demo-bucket1/path/to/object /local/path
```

Para ter mais informações, consulte [cp](https://docs.aws.amazon.com/cli/latest/reference/s3/cp.html) na “Referência de comandos da AWS CLI”.

## Recursos relacionados
<a name="s3-related-resources"></a>

Estas são as características adicionais do Amazon S3:
+ [Controle de acesso no Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-management.html)
+ [Segurança no Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/security.html)
+ [Proteção de dados no Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/data-protection.html)
+ [Registrar em log e monitorar no Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/monitoring-overview.html)