Como integrar HashiCorp Vault a Kubernetes para injeção dinâmica de segredos
Guia prático para injetar segredos do HashiCorp Vault diretamente em pods Kubernetes, eliminando armazenamento estático e melhorando segurança com segredos dinâmicos.

Integrando HashiCorp Vault com Kubernetes para injeção dinâmica de segredos em pods
Introdução
Em ambientes Kubernetes, gerenciar segredos de forma segura e dinâmica é um desafio constante. O HashiCorp Vault surge como uma solução robusta para armazenamento, controle de acesso e rotação de segredos, mas integrá-lo ao Kubernetes de maneira eficiente pode ser complexo. Este artigo explica como injetar segredos do Vault diretamente em pods, eliminando a necessidade de armazenar informações sensíveis em imagens ou configurações estáticas.
Conceitos Fundamentais
O que é o HashiCorp Vault?
O HashiCorp Vault é uma ferramenta de gerenciamento de segredos que oferece: - Armazenamento seguro de senhas, chaves API e certificados - Controle de acesso baseado em políticas (RBAC) - Rotação automática de segredos - Auditoria detalhada de acessos
Ele funciona como um cofre digital, onde os segredos são armazenados e acessíveis apenas mediante autenticação e autorização adequadas.
Injeção de Segredos no Kubernetes
A injeção de segredos no Kubernetes tradicionalmente é feita por meio de: - Secrets estáticos (montados como volumes) - Variáveis de ambiente (via ConfigMaps ou Secrets)
No entanto, esses métodos apresentam limitações: - Segredos estáticos não são rotacionados automaticamente - ConfigMaps e Secrets básicos não oferecem controle de acesso fino - Segredos podem ser expostos em logs ou depuração
A integração com o Vault resolve esses problemas ao fornecer segredos dinâmicos e gerenciados centralizadamente.
Arquitetura da Solução
A arquitetura envolve: 1. Vault Server: Armazena e gerencia os segredos 2. Vault Agent Injector: Webhook admission controller que injeta o Vault Agent nos pods 3. Vault Agent Sidecar: Responsável por buscar e renovar os segredos 4. Pod: Recebe os segredos como variáveis de ambiente ou arquivos
Pré-requisitos
Antes de iniciar, certifique-se de ter: - Um cluster Kubernetes funcional - Helm instalado (para facilitar a instalação do Vault) - Permissões de cluster-admin para instalar o Vault - Um servidor Vault configurado e acessível do cluster
Passo a Passo: Configuração da Integração
1. Instalar o HashiCorp Vault no Kubernetes
A forma mais simples é usando o Helm:
bash
helm repo add hashicorp https://helm.releases.hashicorp.com
helm repo update
helm install vault hashicorp/vault --set "server.dev.enabled=true"
Nota: Em produção, substitua server.dev.enabled=true por uma configuração adequada com persistência e alta disponibilidade.
2. Habilitar o Vault Agent Injector
O Vault Agent Injector é um componente que injeta automaticamente o Vault Agent nos pods que solicitam segredos.
bash
helm install vault-agent-injector hashicorp/vault --set "injector.enabled=true"
Verifique a instalação:
bash
kubectl get pods -l app.kubernetes.io/instance=vault-agent-injector
3. Configurar o Vault para Autenticação Kubernetes
O Vault precisa autenticar pods Kubernetes. Para isso, configure o método de autenticação Kubernetes:
bash
vault auth enable kubernetes
Configure a role que define quais pods podem acessar quais segredos:
bash
vault write auth/kubernetes/role/my-app \
bound_service_account_names=my-app \
bound_service_account_namespaces=default \
policies=my-app-policy \
ttl=1h
4. Criar uma Política de Acesso no Vault
Defina quais segredos um pod pode acessar:
```bash vault policy write my-app-policy - <