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

Top comments (0)