DEV Community

Rodrigo Fernandes
Rodrigo Fernandes

Posted on

AWS S3 - Encryption

Anotações sobre o AWS S3 - Encryption para ajudar na preparação das certificações AWS.

Até o momento as anotações são para as certificações abaixo:

Image description


Anotações gerais

  • AES-256
  • Os metadados não são encryptados, para isso coloque-os em uma tabela do Dynamodb e criptografe com KMS
  • "s3:x-amz-server-side-encryption": "AES256"
  • Para encryptar um bucket - AWS SSE-S3 + AWS KMS CMK
  • aws:SecureTransport
  • Para criptografar os dados do Amazon S3 em trânsito, você pode usar os endpoint (endpoints) da API do Amazon S3 Secure Sockets Layer (SSL).
  • Isso garante que todos os dados enviados para e do Amazon S3 sejam criptografados enquanto estiver em trânsito usando o protocolo HTTPS.
  • Para criptografar os dados do Amazon S3 em repouso, você pode usar várias variações de SSE (Server-Side Encryption).
  • O Amazon S3 criptografa seus dados no nível do objeto enquanto os grava em discos em seus datacenters e os descriptografa para você quando você os acessa.
  • Todo o SSE executado pelo Amazon S3 e pelo AWS Key Management Service (Amazon KMS) usa o Advanced Encryption Standard (AES) de 256 bits.
  • Você também pode criptografar os dados do Amazon S3 em repouso usando o lado do cliente, criptografando seus dados no cliente antes de enviá-los para o Amazon S3.

Server Side Encryption (Criptografia no lado do servidor)

Documentação oficial

Server Side Encryption é a criptografia de dados em seu destino pela aplicação ou serviço que os recebe.

  • Criptografa os dados no nível do objeto no momento em que os grava em discos nos datacenters e descriptografa-os quando você os acessa.
  • Peça que o Amazon S3 criptografe o objeto antes de salvá-lo em discos em seus datacenters e descriptografe-o ao fazer download dos objetos.

Image description

Você tem três opções, dependendo de como escolhe gerenciar as chaves de criptografia.

SSE-S3 (Chaves gerenciadas pela AWS)
Documentação oficial

Quando usar Server Side Encryption com as chaves gerenciadas pelo Amazon S3 (SSE-S3), cada objeto será criptografado com uma chave exclusiva. Como uma proteção adicional, ela criptografa a própria chave utilizando uma chave-raiz que alterna regularmente.

  • Não fornecem uma trilha de auditoria que mostre quando sua CMK foi usada e por quem
  • Essa é uma solução de criptografia "estilo caixa de seleção" totalmente integrada, na qual a AWS lida com o gerenciamento e a proteção de chaves do Amazon S3. Cada objeto é criptografado com uma chave exclusiva.
  • A própria chave do objeto é então criptografada por uma chave mestra separada.
  • Uma nova chave mestra é emitida pelo menos mensalmente, com a AWS rotacionando as chaves.
  • Dados criptografados, chaves de criptografia e chaves mestras são todos armazenados separadamente em hosts seguros, aumentando ainda mais a proteção.

SSE-KMS (KMS Key)
Documentação oficial

A Server Side Encryption com AWS KMS keys (SSE-KMS) é semelhante a SSE-S3, mas com alguns benefícios adicionais e cobranças para usar esse serviço. Há outras permissões para uso de uma chave do KMS que fornece maior proteção contra acesso não autorizado de seus objetos no Amazon S3.

  • Esta é uma solução totalmente integrada em que a Amazon lida com o gerenciamento e a proteção de chaves do Amazon S3, mas onde você gerencia as chaves.
  • O SSE-KMS oferece vários benefícios adicionais em comparação com o SSE-S3.
  • Usando o SSE-KMS, existem permissões separadas para o uso da chave mestra, que fornecem proteção contra acesso não autorizado aos seus objetos armazenados no Amazon S3 e uma camada adicional de controle.
  • *O AWS KMS também fornece auditoria, para que você possa ver quem usou sua chave para acessar qual objeto e quando eles tentaram acessar esse objeto. *
  • O AWS KMS também permite exibir quaisquer tentativas falhas de acessar dados de usuários que não tinham permissão para descriptografar os dados.

SSE-C (customer-managed keys)
Documentação oficial

A Server Side Encryption envolve a proteção de dados em repouso. A Server Side Encryption criptografa somente os dados de objeto, não os metadados de objeto. Ao usar criptografia do lado do servidor com chaves fornecidas pelo cliente (SSE-C), você pode armazenar suas próprias chaves de criptografia

  • Criptografa somente os dados de objeto, não os metadados de objeto
  • Não fornecem uma trilha de auditoria que mostre quando sua CMK foi usada e por quem
  • É usado para criptografar os dados no storage externo antes de enviar.
  • É usado quando você deseja manter suas próprias chaves de criptografia, mas não deseja gerenciar ou implementar sua própria biblioteca de criptografia do lado do cliente.
  • Com o SSE-C, a AWS faz a criptografia/descriptografia de seus objetos enquanto você mantém controle total das chaves usadas para criptografar/descriptografar os objetos no Amazon S3.
  • É possível ter diferentes Keys de criptografia para diferentes versões do mesmo objeto.

Client Side Encryption (Criptografia do lado do cliente)

Documentação oficial

A Client Side Encryption é o ato de criptografar dados localmente para garantir sua segurança à medida que eles são transmitidos ao serviço do Amazon S3.

  • Recebe os dados criptografados. Ele não atua na criptografia ou descriptografia desses dados
  • Client Side Encryption e faça upload dos dados criptografados no Amazon S3. Nesse caso, você gerencia o processo de criptografia, as chaves de criptografia e as ferramentas relacionadas.
  • Ao usar a Client Side Encryption, você mantém o controle ponta a ponta do processo de criptografia, incluindo o gerenciamento das chaves de criptografia.
  • Para máxima simplicidade e facilidade de uso, use a criptografia do servidor com chaves gerenciadas pela AWS (SSE-S3 ou SSE-KMS).
  • Client Side Encryption refere-se à criptografia de dados no lado do cliente do seu aplicativo antes de enviá-los ao Amazon S3.

Para habilitar a Client Side Encryption, você tem as seguintes opções:

  • Use AWS KMS-managed customer master key.
  • Use client-side master key.

AWS S3 c/ AWS KMS
Deve ter permissão ao fazer upload ou download de um objeto no S3 criptografado com uma chave AWS KMS

  • kms:Decrypt
  • kms:Encrypt
  • kms:ReEncrypt*
  • kms:GenerateDataKey*
  • kms:DescribeKey

Referências

AWS GenAI LIVE image

How is generative AI increasing efficiency?

Join AWS GenAI LIVE! to find out how gen AI is reshaping productivity, streamlining processes, and driving innovation.

Learn more

Top comments (0)

Billboard image

Create up to 10 Postgres Databases on Neon's free plan.

If you're starting a new project, Neon has got your databases covered. No credit cards. No trials. No getting in your way.

Try Neon for Free →

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay