Primeiros passos com o Vault da HashiCorp
O Vault é uma ferramenta de código aberto desenvolvida pela HashiCorp e projetada para ajudar na gestão de segredos e proteção de informações sensíveis em ambientes de computação modernos.
Ele é especialmente útil em sistemas distribuídos e na infraestrutura de nuvem, já que oferece uma maneira segura de armazenar, acessar e distribuir senhas, chaves de API, certificados e outros dados confidenciais, garantindo que essas informações não fiquem expostas. Os principais recursos e funcionalidades do Vault incluem:
Armazenamento Seguro de Segredos: armazenar segredos de forma segura, criptografando-os e controlando o acesso a esses segredos com políticas de acesso granulares;
Geração Dinâmica de Credenciais: gerar credenciais temporárias e dinâmicas para sistemas de banco de dados, serviços na nuvem e outros, ajudando a reduzir o risco de vazamento de credenciais permanentes;
Autenticação Multi-Fator (MFA): suporte para autenticação multi-fator, melhorando a segurança no acesso aos segredos;
Controle de Acesso Baseado em Políticas: definir políticas de acesso que determinam quem pode acessar quais segredos e operações específicas que podem ser realizadas com eles;
Auditoria e Registro: registrar todas as ações realizadas no Vault, fornecendo uma trilha de auditoria completa para conformidade e monitoramento de segurança;
Integração com Ambientes Modernos: compatível com contêineres, orquestradores de contêineres, ambientes de nuvem pública e infraestruturas locais, facilitando sua adoção em ambientes diversos;
Suporte a Diversos Backends: flexível e facilmente configurável para usar vários backends de armazenamento, como bancos de dados, serviços de nuvem e sistemas de arquivos;
Escalabilidade: escalar horizontalmente para lidar com cargas de trabalho crescentes e oferecer alta disponibilidade.
Instalação
A instalação é um processo que depende do seu sistema operacional e requisitos específicos. Confira, a seguir, uma visão geral dos passos para instalação em sistemas Linux, mas certifique-se de verificar a documentação oficial para obter instruções detalhadas e atualizadas, já que as versões e procedimentos podem mudar com o tempo.
Passos gerais para instalação:
- Baixar o Vault: visite a página de download do Vault em https://www.vaultproject.io/downloads.html e selecione a versão adequada para o seu sistema operacional. Geralmente, você pode usar um comando wget ou “`curl“““ para baixar o arquivo binário.
Exemplo para baixar a versão Linux de 64 bits:
wget https://releases.hashicorp.com/vault/VAULT_VERSION/vault_VAULT_VERSION_linux_amd64.zip
- Extrair o arquivo ZIP: use o comando unzip para extrair o arquivo ZIP que você baixou.
unzip vault_VAULT_VERSION_linux_amd64.zip
- Mover o executável para um diretório no PATH: mova o arquivo binário Vault para um diretório no seu PATH, a fim de executá-lo de qualquer lugar.
sudo mv vault /usr/local/bin/
- Verificar a instalação: verifique se o Vault foi instalado corretamente, executando o comando vault no terminal. Você deve ver a saída do Vault, indicando que ele está pronto para ser configurado.
- Configurar e Inicializar: antes de usar o Vault, você precisará configurá-lo e inicializá-lo. Isso envolve definir o armazenamento, autenticação e políticas. Consulte a documentação oficial para obter detalhes sobre como fazer: https://learn.hashicorp.com/vault/getting-started
- Usar: depois de configurar e inicializar o Vault, você pode começar a usá-lo para armazenar segredos, gerenciar políticas de acesso e muito mais. A documentação oficial é um ótimo recurso para aprender a usá-lo em detalhes.
Lembre-se de que, para ambientes de produção, é importante seguir as melhores práticas de segurança, configurando de acordo com as necessidades específicas. Certifique-se também de manter o Vault atualizado, verificando regularmente as atualizações disponíveis no site oficial.
Inicialização
Para inicializar, você pode executar o seguinte comando no terminal:
vault operator init
Isso gerará um conjunto de chaves de descriptografia e um token raiz. Anote essas informações com segurança, pois você precisará delas para desbloquear o Vault e acessar as operações de gerenciamento.
Desbloqueio
Use as chaves de descriptografia geradas durante a inicialização para desbloquear o Vault. Você precisará de um mínimo de três chaves para desbloqueá-lo.
vault operator unseal
O comando acima solicitará que você insira uma das chaves de descriptografia geradas durante a inicialização. Repita o processo até que esteja totalmente desbloqueado.
Autenticação
Após desbloquear o Vault, você pode usar o token raiz gerado durante a inicialização para autenticar-se:
vault login <seu-token-raiz>
O token raiz é poderoso e deve ser usado com cautela. Recomenda-se criar políticas e tokens personalizados para o acesso de usuários e aplicativos, em vez de usar o token raiz para operações normais.
Exemplo prático
Após a instalação, inicialização e desbloqueio, vamos realizar um exemplo prático como uma chave SSH.
- Configurar o Secrets Engine SSH
Primeiro, você precisa configurar o Secrets Engine SSH. Use o seguinte comando para habilitar o Secrets Engine SSH:
vault secrets enable ssh
- Configurar uma Role SSH:
Uma “role SSH” define como as chaves SSH serão geradas e associadas a usuários ou servidores. Vamos criar uma role SSH simples, chamada “my-ssh-role”, que permite acesso a um usuário chamado “my-user”:
vault write ssh/roles/my-ssh-role \
key_type=rsa \
default_user=my-user \
ttl=30m
Neste exemplo, estamos configurando a role para usar chaves RSA e definindo um usuário padrão “my-user”. A chave pública SSH gerada terá uma duração de vida (TTL) de 30 minutos.
- Gerar uma Chave SSH:
Agora, é possívelgerar uma chave SSH usando a role que configuramos:
vault read -field=public_key ssh/sign/my-ssh-role
Isso gerará uma chave pública SSH, e você pode armazenar essa chave onde for necessário.
- Configurar Políticas de Acesso:
Da mesma forma que no exemplo anterior, é importante configurar políticas de acesso para controlar quem pode acessar as chaves SSH. Você pode criar uma política que permite a leitura das chaves SSH, semelhante ao exemplo anterior.
- Criar Token com Base na Política:
Crie um token para sua aplicação com base na política que permite o acesso às chaves SSH:
vault token create -policy=my-ssh-policy
- Acesso à Chave SSH com o Token da Aplicação:
Sua aplicação pode usar esse token para acessar a chave SSH:
vault read -field=public_key ssh/sign/my-ssh-role -token=<seu-token-de-aplicação>
Dessa forma, a aplicação pode recuperar a chave SSH gerada e usá-la para autenticação em servidores ou sistemas remotos.
Artigo originalmente publicado em Blog 4 Linux