Criptografando dados usando o AWS KMS

Neste artigo vamos ver como é fácil gerar chaves de criptografias dos dados e atrelar a alguns recursos da AWS de forma que seus dados sejam criptografados.

O AWS KMS, além de criar uma chave de criptografia também faz toda a gestão de acesso, gestão de segurança da chave e a gestão de uso da mesma, pois após criar esta chave, a AWS facilita a utilização da chave em diversos recursos da mesma categoria, facilitando a centralização dos dados e tornando a nossa vida fácil, sem precisar configurar nada a mais.

O AWS KMS facilita a auditoria do uso desta chave, pelo AWS Cloud Trail, você tem todas as utilizações realizadas da chave e por qual recurso, bastando apenas consultar neste recurso pelo ID da sua chave.

O AWS KMS tem uma quantidade de utilização gratuitas que são 20.000 solicitações de criptografia/descriptografia mês e cobra 1 dolar por mês pela criação da chave, não cobrando o tempo de armazenamento. Ao passar da quantidade gratuita é cobrado 0,03 USD por solicitação

Os recursos que o AWS KMS permite criptografar são diversos, mas vamos focar em apenas um aqui no artigo, vamos demonstrar o uso do KMS junto ao S3.

S3 com KMS (Criptografia Server-Side)

Para que você possa encriptar todos os arquivos enviados e descriptografar os que forem baixados, você precisa primeiro ter uma chave no AWS KMS.

Procure no console por S3, se não encontrar no console, você pode digitar o nome do recurso para encontrar facilmente:

Figura 2 - S3 Console
Figura 2 – S3 Console

Na segunda tela você precisa encontrar o S3 o qual você quer que os arquivos sejam criptografados.

Figura 3 - Pesquisa por nome do bucket
Figura 3 – Pesquisa por nome do bucket

Agora dentro do S3 Bucket, entre nas propriedades, neste ponto você tem diversas opções para trabalhar com o seu S3 Bucket como: versionamento dos arquivos, logging, definir o S3 como host de um website estático, tags, criptografia entre outros.

Figura 4 - Algumas das opções
Figura 4 – Algumas das opções

Agora falando da parte de criptografia, nós devemos acessar a propriedade de Padrão de Criptografia.

Nesta opção, a tela nos possibilita gerar a chave diretamente pelo S3 que será criada e armazenada no KMS e já deixá-la atribuída ao S3 bucket.

Figura 5 - Criptografia Padrão
Figura 5 – Criptografia Padrão

Antes disso, ao clicar na opção acima a tela que irá abrir trará a opções de criptografias, sendo elas AES-256 e o AWS-KMS.

Neste artigo viemos falar apenas do AWS-KMS, mas vale ressalstar que o padrão de criptografia AES-256 é um algortimo de criptografia padrão utilizado pelo governo norte-americano, inclusive escolhido para os arquivos ultrassecretos e temos a opção de usá-lo no s3, quando esta opção é selecionada, todos os arquivos enviados são criptografados com uma chave mestra e esta chave também é criptografada e é totalmente gerenciado pela AWS.

O algoritmo de criptografia do AWS KMS, também é o padrão AES-256, porém você tem maior controle nas politicas a partir do CMK (Client Master Key), além da própria criptografia.

Esta chave fica exclusiva para sua conta e região, permitindo usá-la para outros recursos compatíveis.

Então clique em Default Encryption e selecione o AWS-KMS e o CMK aws/s3.

Figura 6 - Configuração AWS/S3
Figura 6 – Configuração AWS/S3

Após clicar em Salvar, as propriedades do S3 Bucket, ficarão da seguinte forma.

Figura 7 - Criptografia padrão
Figura 7 – Criptografia padrão

A partir de agora todo novo objeto enviado para o S3 será criptografado nos servidores internos da AWS.

É necessário informar o tipo de criptografia e informações no Header do request, para que a Api da AWS aceite o envio do arquivo e faça o processo de criptografia interno

No ponto em que você desejar remover esta regra de criptografia padrão, basta entrar na mesma opção e colocar como None.

Caso prefira, você pode assistir esse vídeo que eu mostro na tela como acessar o KMS e configurar no S3:

Outra vantagem do KMS padrão da AWS é a utilização dessas chaves em outros recursos, segue o link dos demais recurso.

Abraços.