Pular para o conteúdo principal

Documentação oficial desta página · v0.20.6

Segredos por comando auxiliar

Resolva credenciais rodando um comando seu na inicialização — qualquer cofre com linha de comando serve: keepassxc-cli, secret-tool (Chaveiro do GNOME), pass, gpg, a CLI do Vaultwarden, ou um script que despeja um arquivo de ambiente num tmpfs. O comando imprime linhas CHAVE=VALOR na saída padrão; o Hermes as aplica pelo mesmo orquestrador do Bitwarden e do 1Password, então dá para ligar qualquer combinação de fontes ao mesmo tempo.

Como funciona​

  1. Você configura o comando no config.yaml (nunca no .env — o comando é configuração, o .env guarda valores).
  2. Na inicialização, depois de carregar o .env, o Hermes roda o comando UMA vez, via /bin/sh -c, e interpreta a saída como um bloco no formato dotenv.
  3. As chaves entram na escada de precedência padrão: .env e o shell vencem, a menos que override_existing: true; fontes mapeadas vencem esta fonte em massa nas variáveis disputadas; a primeira reivindicação vence.
secrets:
command:
enabled: true
command: "cat /run/user/1000/hermes-secrets.env"
# ou qualquer CLI de cofre que despeje linhas CHAVE=VALOR:
# command: "pass show hermes/env"
# command: "secret-tool lookup service hermes-env"

Configuração​

ChavePadrãoO que faz
enabledfalseInterruptor principal.
command""Comando rodado por /bin/sh -c; precisa imprimir linhas CHAVE=VALOR na saída padrão.
helper_timeout_seconds3Tempo limite de uma execução. Apertado de propósito — o comando precisa ser rápido e NÃO interativo (sem pedir desbloqueio, sem toque ou PIN).
override_existingfalseOs valores do comando sobrescrevem o .env e o shell. Desligado por padrão (diferente do Bitwarden e do 1Password), já que um auxiliar local não é uma autoridade central de rotação.

Modelo de segurança​

  • A linha de comando é configuração SUA — mesmo nível de confiança do .env que você controla.
  • A saída tem teto rígido de 1 MiB; um comando desgovernado não trava a inicialização (o grupo de processos é morto no tempo limite).
  • A saída de erro do comando é descartada — diagnósticos de CLI de cofre podem carregar segredo, então nunca chegam à saída do Hermes. As falhas registram só campos estruturados (código de saída, sinal, errno), nunca a linha de comando.
  • Valores só com espaço em branco contam como "sem valor" — uma entrada de espaço reservado nunca vira um cabeçalho de autorização.
  • Só POSIX (precisa de /bin/sh). No Windows a fonte se declara não configurada e a inicialização segue.

Modos de falha​

A inicialização nunca é bloqueada. Os erros imprimem uma linha mais uma dica de correção, com →:

SintomaCausaCorreção
secrets.command.command is emptyHabilitado sem comandoDefina secrets.command.command no config.yaml
helper command failedSaída diferente de zero, tempo esgotado, falha ao criar o processoRode o comando na mão, num shell, para ver o erro real (o Hermes descarta a saída de erro de propósito)
helper output was not a KEY=VALUE mapO comando imprimiu um valor solto ou lixoFaça o comando emitir linhas no formato dotenv

Quando usar isto em vez de um plugin​

A fonte por comando é a saída de emergência para cofres sem integração pronta. Se você se pegar embrulhando uma dança complexa de CLI num script longo, considere um plugin de fonte de segredos de verdade — plugins ganham cache, rótulos de procedência e configuração tipada.