Pular para o conteúdo principal

Vault Connector

1. Visão Geral​

O componente Vault Connector (vault) permite ler ou gravar segredos em um mecanismo Key-Value (KV) do HashiCorp Vault ou OpenBao.

Ele suporta tanto o motor KV v1 (estático) quanto o KV v2 (versionado), lidando com as diferenças de API de forma transparente. O componente funciona apenas como ação de saída, ou seja, não pode ser usado como gatilho de entrada.

Use quando o fluxo precisa recuperar credenciais sensíveis (senhas de banco, chaves de API) ou armazenar informações protegidas de forma segura.

2. Pré-requisitos​

  • Uma instância do Vault ou OpenBao acessível pela plataforma.
  • Um motor de segredos do tipo Key-Value (KV) habilitado no Vault.
  • Credenciais (Token ou AppRole) com permissões adequadas no caminho (path) desejado.

3. Autenticação e Conexão​

O conector suporta dois métodos de autenticação: AppRole (recomendado para serviços) e Token.

CampoObrigatórioTipoDescriçãoExemplo
addressSimTextoURL completa da instância do Vault/OpenBao."https://vault.exemplo.com"
authMethodNãoTextoMétodo de autenticação: approle ou token. Padrão: "approle"."approle"
tokenSim*TextoToken do Vault. Obrigatório se authMethod for token."hvs.CAES..."
roleIdSim**TextoRole ID do AppRole. Obrigatório se authMethod for approle."0a52..."
secretIdSim**TextoSecret ID do AppRole. Obrigatório se authMethod for approle."1e2b..."
tlsSkipVerifyNãoTextoSe "true", ignora a validação do certificado SSL (não recomendado em produção)."false"
caCertNãoTextoCertificado CA em formato PEM para validar conexões HTTPS."-----BEGIN CERTIFICATE-----..."

Dica: Utilize os segredos (secrets) da plataforma para armazenar tokens e credenciais do AppRole, referenciando-os no componente com {$.secrets.nome_do_segredo}.

4. Configuração / Operações Suportadas​

O componente possui duas operações principais: read (leitura) e write (escrita).

Parâmetros Comuns​

CampoObrigatórioTipoDescriçãoExemplo
operationNãoTextoOperação a realizar: read ou write. Padrão: "read"."read"
mountSimTextoPonto de montagem do engine KV no Vault."secret"
pathSimTextoCaminho do segredo dentro do mount."myapp/config"
kvVersionNãoTextoVersão do motor KV: v1 ou v2. Padrão: "v2"."v2"

Operação: Read (Leitura)​

Recupera um segredo do Vault.

CampoObrigatórioTipoDescriçãoExemplo
keyNãoTextoSe preenchido, retorna apenas o valor desta chave. Se vazio, retorna todo o objeto do segredo."password"
cacheTtlNãoNúmeroTempo em segundos para cachear o valor lido, evitando chamadas repetitivas ao Vault.60

Operação: Write (Escrita)​

Cria ou atualiza chaves em um segredo. Importante: A escrita no conector é não-destrutiva por padrão (não remove chaves que não foram listadas).

CampoObrigatórioTipoDescriçãoExemplo
overwriteNãoTextoSe "true", atualiza chaves existentes. Se "false", falha se alguma chave listada já existir. Padrão: "false"."true"
dataModeNãoTextoModo de envio dos dados: fields (objeto) ou raw (string JSON). Padrão: "fields"."fields"
dataSim***ObjetoMapa de chave/valor para gravar (usado no modo fields).{"api_key": "123"}
dataRawSim***TextoString JSON representando o objeto a ser gravado (usado no modo raw).{"db_user": "admin"}

*** Obrigatório dependendo do dataMode escolhido.

5. Exemplos Práticos​

Leitura de uma senha de banco de dados​

Busca a chave password no segredo localizado em secret/myapp/database.

Configuração do componente:

{
"componentName": "vault",
"configurations": {
"operation": "read",
"authMethod": "approle",
"address": "https://vault.internal:8200",
"roleId": "{$.secrets.vaultRoleId}",
"secretId": "{$.secrets.vaultSecretId}",
"mount": "secret",
"path": "myapp/database",
"key": "password",
"kvVersion": "v2"
}
}

Resposta:

{
"data": {
"password": "senha-super-segura"
},
"metadata": {
"version": 3,
"created_time": "2024-08-20T15:00:00Z"
}
}

Escrita de múltiplos campos (Upsert)​

Atualiza ou cria as chaves token e expires_at no caminho secret/myapp/integration, preservando outras chaves que já existam no mesmo segredo.

Configuração do componente:

{
"componentName": "vault",
"configurations": {
"operation": "write",
"overwrite": "true",
"authMethod": "token",
"address": "{$.env.vault_url}",
"token": "{$.secrets.vaultToken}",
"mount": "secret",
"path": "myapp/integration",
"dataMode": "fields",
"data": {
"token": "{$.body.newToken}",
"expires_at": "2024-12-31"
}
}
}

6. Erros Comuns e Troubleshooting​

Erro / SintomaCausa provávelComo resolver
Vault is sealed or unavailableO Vault está no estado "sealed" ou inacessível via rede.Verificar o status do Vault e a conectividade.
Permission deniedO Token ou AppRole não possui capacidades (read, create, update, patch) no path.Revisar as políticas (policies) associadas à credencial. Para overwrite: true no KV v2, a permissão patch é necessária.
Key(s) [...] already existTentativa de escrita com overwrite: false em chaves já existentes.Mudar overwrite para "true" ou garantir que a chave é nova.
Configuration 'address' is requiredFalta preencher um dos parâmetros obrigatórios (address, mount ou path).Revisar a configuração do componente.
A write operation requires at least one key/valueTentativa de escrita sem fornecer dados em data ou dataRaw.Fornecer os campos a serem gravados.