Gerenciamento de segredos: HashiCorp Vault vs AWS Secrets Manager
1. Introdução ao Gerenciamento de Segredos em Ambientes Modernos
1.1. O que são segredos e por que o gerenciamento centralizado é crítico
Segredos são informações sensíveis que concedem acesso a sistemas, bancos de dados, APIs e infraestrutura. Exemplos incluem senhas, chaves de API, tokens de autenticação, certificados TLS e chaves SSH. Em ambientes modernos, com dezenas ou centenas de microsserviços, o gerenciamento manual desses segredos torna-se inviável e perigoso.
O gerenciamento centralizado de segredos resolve problemas como:
- Eliminação de segredos hardcoded em código-fonte
- Rotação automatizada sem downtime
- Auditoria centralizada de quem acessou o quê
- Revogação rápida em caso de comprometimento
1.2. Desafios comuns: vazamento de credenciais, rotação manual e compliance
Vazamento de credenciais é uma das principais causas de violações de segurança. Estudos mostram que credenciais expostas em repositórios Git respondem por milhares de incidentes anualmente. A rotação manual de segredos, além de propensa a erros, raramente é feita com a frequência necessária. Compliance com regulamentações como PCI-DSS, HIPAA e GDPR exige controles rigorosos de acesso e auditoria.
1.3. Visão geral do cenário: HashiCorp Vault vs AWS Secrets Manager
HashiCorp Vault é uma ferramenta open-source que oferece gerenciamento de segredos com suporte a múltiplos backends, segredos dinâmicos e criptografia como serviço. Pode ser executado on-premise, em qualquer cloud ou como serviço gerenciado (HCP Vault).
AWS Secrets Manager é um serviço gerenciado nativo da AWS, projetado para ambientes que já operam integralmente no ecossistema AWS. Oferece rotação automática integrada com serviços gerenciados da AWS.
2. Arquitetura e Modelo de Deploy
2.1. HashiCorp Vault: arquitetura cliente-servidor
O Vault opera com uma arquitetura cliente-servidor. O servidor Vault gerencia o armazenamento e acesso aos segredos, enquanto clientes (aplicações, serviços) se autenticam e solicitam segredos via API REST.
Exemplo de configuração básica do Vault com backend Raft:
storage "raft" {
path = "/opt/vault/data"
node_id = "node1"
}
listener "tcp" {
address = "0.0.0.0:8200"
tls_disable = false
tls_cert_file = "/opt/vault/tls/cert.pem"
tls_key_file = "/opt/vault/tls/key.pem"
}
api_addr = "https://vault.example.com:8200"
cluster_addr = "https://vault.example.com:8201"
seal "awskms" {
region = "us-east-1"
kms_key_id = "alias/vault-unseal"
}
Para alta disponibilidade, utiliza-se clustering com Raft ou Consul como backend de storage.
2.2. AWS Secrets Manager: serviço gerenciado
AWS Secrets Manager é totalmente gerenciado pela AWS. Não requer provisionamento de servidores, configuração de clusters ou manutenção. A integração com IAM, KMS e CloudTrail é nativa.
Exemplo de criação de segredo via AWS CLI:
aws secretsmanager create-secret \
--name "prod/db-password" \
--description "Database password for production" \
--secret-string "MySuperSecretP@ssw0rd!" \
--kms-key-id "arn:aws:kms:us-east-1:123456789012:key/abc123" \
--tags '[{"Key":"Environment","Value":"Production"}]'
2.3. Comparação de modelos de implantação
| Característica | HashiCorp Vault | AWS Secrets Manager |
|---|---|---|
| Modelo | Autogerenciado ou SaaS (HCP) | SaaS gerenciado |
| Custos operacionais | Alto (manutenção, patches, HA) | Baixo (zero manutenção) |
| Escalabilidade | Configuração manual de clusters | Escalabilidade automática |
| Flexibilidade de deploy | On-premise, qualquer cloud | Apenas AWS |
3. Funcionalidades Principais e Armazenamento de Segredos
3.1. Tipos de segredos suportados
Ambas as soluções suportam segredos estáticos (senhas, chaves de API), mas o Vault se destaca com segredos dinâmicos e certificados.
3.2. HashiCorp Vault: motores de segredos
O Vault possui motores de segredos especializados. Exemplo de configuração do motor de banco de dados PostgreSQL:
# Habilitar o motor de banco de dados
vault secrets enable database
# Configurar conexão com PostgreSQL
vault write database/config/postgres-db \
plugin_name=postgresql-database-plugin \
allowed_roles="readonly" \
connection_url="postgresql://{{username}}:{{password}}@postgres.example.com:5432/mydb" \
username="vault_user" \
password="vault_password"
# Criar role que gera credenciais dinâmicas
vault write database/roles/readonly \
db_name=postgres-db \
creation_statements="CREATE USER \"{{name}}\" WITH PASSWORD '{{password}}' VALID UNTIL '{{expiration}}'; GRANT SELECT ON ALL TABLES IN SCHEMA public TO \"{{name}}\";" \
default_ttl="1h" \
max_ttl="24h"
3.3. AWS Secrets Manager: rotação automática integrada
O AWS Secrets Manager oferece rotação automática para bancos de dados gerenciados (RDS, Redshift, DocumentDB). Exemplo de configuração de rotação:
aws secretsmanager rotate-secret \
--secret-id "prod/db-password" \
--rotation-rules '{"AutomaticallyAfterDays": 30}' \
--rotation-lambda-arn "arn:aws:lambda:us-east-1:123456789012:function:rotate-db-secret"
4. Segurança, Criptografia e Controle de Acesso
4.1. HashiCorp Vault: criptografia e políticas ACL
O Vault criptografa dados em trânsito (TLS) e em repouso (AES-256-GCM). O processo de unseal requer múltiplas chaves compartilhadas. Políticas ACL controlam acesso granular:
path "database/creds/readonly" {
capabilities = ["read"]
}
path "secret/data/prod/*" {
capabilities = ["create", "read", "update", "delete", "list"]
}
4.2. AWS Secrets Manager: criptografia via KMS
A criptografia é feita via AWS KMS, podendo usar chaves gerenciadas pela AWS ou pelo cliente. Políticas IAM controlam acesso:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "secretsmanager:GetSecretValue",
"Resource": "arn:aws:secretsmanager:us-east-1:123456789012:secret:prod/*"
}
]
}
4.3. Comparação de auditoria
O Vault oferece audit devices que registram todas as requisições e respostas. O AWS Secrets Manager integra-se com CloudTrail e CloudWatch Logs para auditoria completa.
5. Integração com Ecossistemas e Automação
5.1. HashiCorp Vault: Kubernetes e CI/CD
O Vault integra-se com Kubernetes via CSI Driver e Sidecar Injector. Exemplo de anotação para injeção automática:
metadata:
annotations:
vault.hashicorp.com/agent-inject: "true"
vault.hashicorp.com/agent-inject-secret-db-creds: "database/creds/readonly"
vault.hashicorp.com/role: "app-role"
5.2. AWS Secrets Manager: integração nativa AWS
Integração direta com Lambda, ECS, EKS e CloudFormation. Exemplo de referência em CloudFormation:
Resources:
MyApp:
Type: AWS::ECS::TaskDefinition
Properties:
ContainerDefinitions:
- Name: my-app
Secrets:
- Name: DB_PASSWORD
ValueFrom: arn:aws:secretsmanager:us-east-1:123456789012:secret:prod/db-password
5.3. Casos de uso híbridos
Para ambientes multi-cloud, o Vault é a escolha natural. O External Secrets Operator (ESO) permite sincronizar segredos entre AWS Secrets Manager e Kubernetes, oferecendo um meio-termo.
6. Performance, Custos e Licenciamento
6.1. HashiCorp Vault: open source vs enterprise
A versão Community é gratuita, mas sem suporte oficial. A versão Enterprise (licenciamento por nó) adiciona HSM, performance standby e replicação.
6.2. AWS Secrets Manager: pay-per-use
Cobrança de $0,40 por segredo por mês + $0,05 por 10.000 chamadas de API. Sem custo inicial.
6.3. Trade-offs de performance
O Vault autogerenciado pode atingir latências menores em ambientes controlados, mas exige tuning. O AWS Secrets Manager escala automaticamente, mas pode ter latência adicional em chamadas cross-region.
7. Casos de Uso e Critérios de Escolha
7.1. Quando escolher HashiCorp Vault
- Ambientes multi-cloud ou on-premise
- Necessidade de segredos dinâmicos (bancos, cloud providers)
- Requisitos de compliance rigorosos (PCI-DSS, HIPAA)
- Equipes com expertise em operação de infraestrutura
7.2. Quando escolher AWS Secrets Manager
- Workloads 100% AWS
- Equipes pequenas sem capacidade operacional
- Necessidade de rotação automática simplificada
- Baixa complexidade de integração
7.3. Estratégias híbridas
Uma abordagem comum: usar Vault para segredos críticos e dinâmicos (credenciais de banco de dados, certificados) e AWS Secrets Manager para chaves de API e credenciais de serviços AWS.
8. Conclusão e Próximos Passos
8.1. Resumo das principais diferenças
HashiCorp Vault oferece flexibilidade, controle granular e segredos dinâmicos, mas exige investimento operacional. AWS Secrets Manager oferece simplicidade e integração nativa, mas limita-se ao ecossistema AWS.
8.2. Recomendações práticas
Para iniciar:
1. Faça um inventário de todos os segredos atuais
2. Identifique padrões de acesso e rotação
3. Execute uma prova de conceito com a ferramenta escolhida
4. Migre gradualmente, começando por segredos não críticos
8.3. Ferramentas complementares
O External Secrets Operator (ESO) permite usar ambas as soluções simultaneamente, sincronizando segredos para Kubernetes de forma declarativa.
Referências
- HashiCorp Vault Documentation — Documentação oficial completa do Vault, incluindo instalação, configuração e todos os motores de segredos
- AWS Secrets Manager User Guide — Guia oficial da AWS com exemplos de criação, rotação e integração com serviços AWS
- External Secrets Operator Documentation — Documentação do operador Kubernetes que sincroniza segredos de múltiplas fontes (Vault, AWS, Azure, GCP)
- Comparing HashiCorp Vault and AWS Secrets Manager — Artigo da HashiCorp comparando as duas soluções em cenários reais
- AWS Secrets Manager vs HashiCorp Vault: A Detailed Comparison — Artigo técnico no Dev.to com análise aprofundada de custos, performance e casos de uso
- HashiCorp Vault Enterprise Features — Página oficial comparando recursos das versões Community e Enterprise do Vault
- AWS Secrets Manager Pricing — Página oficial de preços do AWS Secrets Manager com calculadora de custos