Ir para o conteúdo principal

Conhecendo a ferramente Vault Hashicorp

Data: 03/05/22

Autores:

  1. João Batista da Silva Junior (Assessor)
  2. Michel Farias Ferreira (Assessor)

1. Objetivo

Realizar um estudo para conhecer melhor a ferramenta Vault Hashicorp e como ela pode ser melhor aplicada na SETIC.

 

2. Introdução

Com a necessidade de sempre melhorar a segurança do ambiente e das aplicações, se faz necessário encontrar uma ferramenta para guardar os segredos, tokens e ao mesmo tempo gerar valores aleatórios para acessos. Dessa forma foi sugerido pela liderança técnica o estudo da ferramenta vault que possivelmente trará uma segurança maior para o  ambiente.


3. Desenvolvimento

3.1 O QUE É VAULT

O Vault é uma ferramenta de gerenciamento de segredos projetada especificamente para controlar o acesso a credenciais confidenciais em um ambiente de baixa confiança. Ele pode ser usado para armazenar valores sensíveis e, ao mesmo tempo, gerar dinamicamente acesso para serviços/aplicativos específicos em leasing.

A proposta inicial do estudo será em conhecer melhor a ferramente através da documentação, vídeos e até mesmo teste de instalação que será realizado localmente e no Openshift

3.2 TESTE DO VAULT LOCALMENTE

Para entender melhor a ferramenta e sua configuração foi realizada a implantação do container no docker desktop do vault server e cliente localmente em imagem linux

Foram necessário criar três arquivos dentro de uma pasta denominada docker-vault

  • Dockerfile

  • docker-compose.yml

  • run.sh


Segue os exemplos abaixo:


Primeiro foi criado um docker-compose.yml


Para detalhar esse arquivo docker-compose.yml, temos dois contêineres sendo compostos além de uma rede local.

  1. Servidor de cofre
  • Usa a imagem do cofre mais recente

  • expõe a porta 8200

  • Define a variável de ambiente VAULT_ADDR conforme recomendado na inicialização do servidor e define a variável de ambiente VAULT_DEV_ROOT_TOKEN_ID para inicializar o token raíz a ser usado pelo contêiner do cliente de cofre.

  • Configura o cap_add IPC_LOCK para permitir que o vault bloqueie a memória.

  • Adicione o servidor de cofre à rede local.

  • Cliente de cofre
  • Builds de um Dockerfile no mesmo diretório. Isso será detalhado a seguir.

  • Define a variável de ambiente VAULT_ADDR para se comunicar com o servidor do vault.

  • Adicione o cliente do vault à rede local.

  • Crie uma rede local para execução do vault-client e vault-server.
  • Depois foi criado um Dockerfile com permissão no root (USER 0)




O Dockerfile acima criará um contêiner a partir da imagem do Ubuntu 20.04 e instalará as dependências necessárias para executar como um cliente de cofre. O Dockerfile então instrui um COPY e CMD de run.sh, detalhado abaixo.



O run.sh é o script que está sendo executado como cliente do vault.


No mesmo diretório dos três arquivos criados acima, execute o script docker-compose.

docker-compose up

Ao completar o build docker-compose up, o código da saída deve ser (0)




Duas imagens foram criadas


Um container com dois serviços (server e cliente)


Dessa forma a aplicação ficou disponível localmente na url: http://localhost:8200/

O Teste local foi importante para entender a configuração da ferramenta e a maneira como ela funciona e fica disponível.


A partir dessa etapa passamos para a análise de como a ferramenta Vault Hashicorp deveria ser configurada on premise em alta disponibilidade no ambiente da SETIC.


3.3 VAULT DISPONÍVEL NO OPENSHIFT


A instalação segue o mesmo princípio do Vault local, configurando containers em Docker. Utilizando o mesmo docker-compose como modelo, possuindo dois DeploymentConfigs, o vault-server e vault-client.





As configurações de variáveis do vault-server são:



As configurações de variáveis do vault-cliente ficaram definidas como:

Foi definido um volume persistente para o armazenamento redundante

4. Conclusão

Tal estudo baseia-se nas informações documentais da aplicação e também nos testes de instalação da ferramenta que foram realizados.

Está sendo realizado teste para validar se a implementação precisa de alguma configuração atual.

Inicialmente a ferramenta está disponível para testes pelo time e a liderança técnica, novos Cards para configuração do SSH e LDAP estão sendo criados para realizar a configuração no Vault.