Skip to main content

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 unseal pode 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

ConceitoNome no VaultO que faz
Várias chaves para abrir o VaultShamir’s Secret SharingDivide a Master Key em partes
Processo de destravar o VaultUnsealRecompõe a Master Key com o número mínimo de partes
Quantidade de chaves necessáriasThresholdNúmero mínimo de shares para unseal
Evitar necessidade manualAuto-Unseal (KMS/HSM)Usa serviço externo de chaves