O que aconteceria se alguem interceptasse seu arquivo enquanto ele e enviado pela internet? A criptografia e a pratica de transformar dados em uma forma ilegivel para evitar isso. A AWS gerencia essas chaves de criptografia com seguranca atraves de um servico chamado KMS.
As perguntas do exame DVA-C02 nessa area focam em qual metodo de criptografia usar e como gerenciar chaves.
O que e AWS KMS (Key Management Service)?
O KMS e um servico da AWS para criar e gerenciar chaves de criptografia. Pense nele como um deposito de chaves de cofre digital. Ele guarda com seguranca as chaves que bloqueiam seus dados, permitindo que sejam usadas apenas quando necessario.
Tipos de chave KMS
Existem tres tipos dependendo de quem gerencia a chave.
Chaves gerenciadas pela AWS: A AWS cuida de tudo automaticamente. Sem custo extra. A rotacao de chaves e automatica. Usada para a maioria dos servicos padrao. Chaves gerenciadas pelo cliente (CMK): Voce gerencia diretamente politicas de chave, ciclos de rotacao e exclusao. Usada quando e necessario controle de acesso mais granular. Custa $1/mes mais taxas de chamadas de API. Chaves de propriedade da AWS: Chaves usadas apenas internamente pela AWS. Nao sao visiveis para os clientes.
Criptografia de envelope (Envelope Encryption)
O KMS so pode criptografar diretamente dados de ate 4KB de cada vez. Mas os dados do mundo real sao muito maiores. A criptografia de envelope resolve esse problema.
Pense nisso como colocar uma carta em um envelope e depois guardar esse envelope em um cofre.
Chame a API GenerateDataKey para criar uma chave de dados (a chave que bloqueia sua carta). Criptografe seus dados reais localmente usando essa chave de dados. Criptografe a propria chave de dados usando a chave mestra do KMS (a chave do cofre). Armazene os dados criptografados junto com a chave de dados criptografada.
Essa abordagem minimiza a quantidade de dados enviados diretamente ao KMS, ao mesmo tempo que permite criptografar dados grandes com seguranca.
Criptografia do lado do servidor no S3 (SSE)
Este e o metodo pelo qual a AWS criptografa automaticamente os arquivos ao armazena-los no S3. Ha tres opcoes dependendo de qual chave e usada.
| Opcao | Quem gerencia a chave | Caracteristica | |-------|----------------------|----------------| | SSE-S3 | S3 gerencia | Padrao. Sem configuracao necessaria. Opcao mais simples. | | SSE-KMS | KMS gerencia | Quem usou a chave e quando pode ser rastreado via CloudTrail. Usado quando auditoria de seguranca e necessaria. | | SSE-C | Voce fornece a chave | Para quando voce tem sua propria infraestrutura de gerenciamento de chaves. Voce envia a chave nos cabecalhos de cada requisicao. |
Nota importante: SSE-KMS chama a API do KMS a cada requisicao do S3. Com trafego intenso, isso pode atingir os limites de throughput do KMS (throttling). Habilitar o S3 Bucket Key reduz drasticamente o numero de chamadas ao KMS e atenua esse problema.
Criptografia do lado do cliente vs do lado do servidor
Criptografia do lado do servidor: A AWS cuida da criptografia e descriptografia. Este e o metodo usado na maioria dos casos. SSE-S3 e SSE-KMS se enquadram nessa categoria. Criptografia do lado do cliente: Seu app criptografa os dados primeiro e depois os envia para a AWS. Pense nisso como colocar o cadeado antes de meter no cofre. Como nem mesmo a AWS pode ver os dados em texto simples, e usado em ambientes com requisitos de conformidade rigorosos.
!Criptografia no lado do cliente vs no lado do servidor
Criptografia em transito
Os dados tambem precisam de criptografia durante a transmissao pela internet. Usar HTTPS/TLS evita que os dados fiquem expostos durante a transmissao. Adicionar a condicao aws:SecureTransport a uma politica de bucket S3 pode rejeitar diretamente requisicoes que usem HTTP (sem criptografia).
Pontos-chave do exame
"Criptografar dados grandes acima de 4KB" -- Criptografia de envelope (GenerateDataKey)
"Trilha de auditoria do uso de chaves de criptografia (CloudTrail)" -- SSE-KMS
"Criptografia S3 padrao, sem configuracao necessaria" -- SSE-S3
"Criptografia S3 com chave propria" -- SSE-C
"Mitigar throttling do SSE-KMS" -- S3 Bucket Key
"Impedir que a AWS veja o texto simples" -- Criptografia do lado do cliente
"Negar acesso HTTP" -- condicao aws:SecureTransport
Nucleo da criptografia de envelope: criptografar dados com chave de dados, criptografar chave de dados com chave mestra