Esse projeto é resultado de um trabalho acadêmico na disciplina de Segurança da Informação da Faculdade de Tecnologia de São José dos Campos - Professor Jessen Vidal.
Professor responsável: Eduardo Sakaue
"Como garantir acesso aos dados criptogragados no Banco de Dados?"
Com a nova LGPD, é possível que os dados sensíveis precisem ser criptografados no banco, sendo assim é preciso uma rotina que automatize e torne viável essa pratica.
Nossa solução é dividida em 3 grandes etapas:
-
Associar uma chave única na criptografia dos dados sensíveis de cada usuário;
-
Armazenar essas chaves em algum lugar para futura consulta;
-
Quando preciso, nas Querys com dados criptografados, buscar a chave e descriptografar o que for necessário.
Para demonstrar o funcionamento, será gerado um relatório em PDF, com os dados criptografados de um usuário.
Nome | Github | |
---|---|---|
Leandro Lopes Bueno (Scrum Master) | acessar | acessar |
Guilherme Rodrigo Cursino | acessar | acessar |
Murilo Leme | acessar | acessar |
Mônica Torres | acessar | acessar |
Matheus Rothstein | acessar | acessar |
Acessando dados criptografados do banco
Gerando PDF com os dados descriptografados para o usuário
-
Todo o projeto está "dockerizado", logo só é necessário ter instalada um versão recente do Docker e Docker Compose.
-
Realize um build para construir o ambiente e instalar as dependencias
$ docker-compose build
-
Crie um arquivo
.env
com base no arquivoenv-sample
. -
Suba o vault para depois configurarmos
$ docker-compose up -d vault
Configurando o vault...
-
Entre no container para configurar o vault (esse processo só será necessário 1 vez)
$ docker exec -it seg_info_vault /bin/sh
-
Inicie o vault, isso gerará as chaves e o Token, é importante salvá-los.
vault operator init -key-shares=6 -key-threshold=3
-
Escolha 3 das 6 chaves e execute o comando de "unseal" para cada uma delas. Por exemplo:
vault operator unseal RntjR...DQv
-
Faça login utilizando o Token. Por exemplo:
vault login s.tdlEqsfzGbePVlke5hTpr9Um
-
Por último habilite o sistema de segredos do vault
vault secrets enable -version=1 -path=secret kv
-
-
Pegue o Token gerado e mais 3 chaves e edite o seu
.env
. -
Agora já possível executar a aplicação
$ docker-compose run --service-ports --rm python
-
(18/03) Estrutura genérica do banco de dados com o requisitos necessários, dentro das normas da LGPD, contendo um algoritmo de conexão;
-
(13/05) Integração da Criptografia com o gerador de dados, salvando inicialmente as chaves em um arquivo
.key
; -
(27/05) Integração com o Vault. As chaves serão salvas e recuperadas de um servidor Vault;
-
(10/06) Gerador de relatório em formato pdf implementado, consumindo dados reais do banco;
-
(24/06) Aprimoramento do código e integração das tecnologias utilizadas;
-
(08/07) Entrega funcional com exemplo simulando ambiente real, conclusão da documentação e criação do vídeo explicando o projeto.
A sexta e última entrega foi destina à documentação e elaboração do vídeo de entrega, a parte técnica já havia sido concluída.
Conclusão: A expectativa final foi obtida, conseguimos garantir acesso a dados sensíveis que foram criptografados.
O maior astro da nossa solução foi o Vault, graças a ele conseguimos estruturar um ambiente seguro para guardar as chaves de criptografia que geramos para cada usuário e resgatá-las através da API que o Vault disponiliza.
Outro ponto importante a se destacar foi o tempo de resposta das nossas querys, que permaneceram extremamente rápidos mesmo com a descriptografia dos dados, isso só foi possível graças ao modelo AES de Criptografia que utiliza chaves simétricas e possuí um algoritmo bem rápido.