Vault | Arquitetura
- Vault | Arquitetura
HashiCorp Vault | SIL, ANSIL
O mecanismo do HashiCorp Vault que exige várias chaves para “desbloquear” o Vault — isso se chama oficialmente:
🗝️ Shamir’s Secret Sharing (e às vezes as pessoas se referem informalmente a isso como “SIL” ou “ANSIL”, por confusão com esse processo de unseal keys)
🧩 O que é o Unseal Process do Vault
Quando o Vault é inicializado pela primeira vez, ele cria uma Master Key, que é usada para criptografar e descriptografar todos os segredos armazenados no banco de dados interno (chamado de “storage backend”).
Mas, por motivos de segurança, essa Master Key nunca é armazenada diretamente. Em vez disso, o Vault a divide em várias partes (chaves) usando o algoritmo de Shamir’s Secret Sharing (SSS).
🔑 Shamir’s Secret Sharing (o “mecanismo de várias chaves”)
Esse é o sistema que define:
- Quantas chaves são geradas no total
- Quantas são necessárias para “abrir” (unseal) o Vault
Exemplo típico:
Unseal Key 1: s.a1b2c3d4...
Unseal Key 2: s.e5f6g7h8...
Unseal Key 3: s.i9j0k1l2...
Unseal Key 4: s.m3n4o5p6...
Unseal Key 5: s.q7r8s9t0...
E a configuração:
Key shares: 5
Key threshold: 3
👉 Isso significa:
- Foram criadas 5 chaves únicas;
- É preciso qualquer 3 delas para reconstruir a Master Key e “destravar” o Vault (fazer o unseal).
🔓 O que é “Unseal”
O Vault começa em estado selado (sealed) — criptograficamente bloqueado. Enquanto está sealed:
- Nenhum segredo pode ser lido ou gravado;
- Somente o comando
vault operator unsealpode liberá-lo.
Exemplo:
vault operator unseal
Enter key 1: <coloque a primeira unseal key>
Enter key 2: <coloque a segunda unseal key>
Enter key 3: <coloque a terceira unseal key>
Depois que atinge o número mínimo de chaves (threshold), o Vault é desbloqueado (unsealed) e fica operacional.
🧠 Por que isso existe
Esse mecanismo evita que uma única pessoa tenha poder absoluto sobre o acesso aos segredos — é um tipo de controle de múltiplas partes (multi-person control).
Benefícios:
- Protege contra comprometimento de um administrador;
- Garante que acesso ao Vault exige colaboração entre partes confiáveis;
- Pode ser integrado a HSMs (Hardware Security Modules) ou auto-unseal com KMS (em nuvens como AWS, GCP, Azure).
⚙️ Auto-Unseal (sem precisar digitar várias chaves)
Em ambientes corporativos modernos, o Vault pode ser configurado para auto-unseal, usando:
- AWS KMS, GCP KMS, Azure Key Vault, ou HSM;
- Assim, o processo é automático (sem interação humana).
Exemplo de configuração no vault.hcl:
seal "awskms" {
region = "us-east-1"
kms_key_id = "arn:aws:kms:..."
}
Isso elimina a necessidade de digitar as várias chaves manualmente, mas mantém a segurança criptográfica.
🧩 Resumo
| Conceito | Nome no Vault | O que faz |
|---|---|---|
| Várias chaves para abrir o Vault | Shamir’s Secret Sharing | Divide a Master Key em partes |
| Processo de destravar o Vault | Unseal | Recompõe a Master Key com o número mínimo de partes |
| Quantidade de chaves necessárias | Threshold | Número mínimo de shares para unseal |
| Evitar necessidade manual | Auto-Unseal (KMS/HSM) | Usa serviço externo de chaves |