Hashicorp Vault Como faço login sem cabeça no STDIN usando Bash Shell?

Hashicorp Vault Como faço login sem cabeça no STDIN usando Bash Shell?

Dado um Bash Shell em um contêiner Docker em execução no Gitlab, por exemplo, como eu faria para que a senha fosse transmitida?

Quando eu faço login com isso:

 $ vault login -method=ldap username=myusername

Ele me pede uma senha.

Como faço para que o prompt não pare e a senha seja passada como variável?

Pretendo usar variáveis ​​​​do Gitlab para passar minha senha.

Responder1

Você deve considerar o uso de JWT (JSON Web Token)autenticação mútuaentre Gitlab e Vault. Dessa forma, não há necessidade de salvar nenhuma senha em qualquer lugar (incluindo variáveis), ou seja, você primeiro obtém um token temporário do Vault via JWT Auth assim:

export VAULT_TOKEN="$(vault write -field=token auth/jwt/login role=builder jwt=$CI_JOB_JWT)"

E então você pode acessar os segredos necessários como este:

export VCENTER_USER="$(vault kv get -field=username /kv/builder/vcenter-auth)"
export VCENTER_PASSWORD="$(vault kv get -field=password /kv/builder/vcenter-auth)"

E quando terminar, você pode revogar este token temporário:

vault token revoke -self

Responder2

Como o autor solicitou explicitamente o método userpass, sugiro como resposta fazer assim:

vault login -method=userpass username=myusername password=$userpass

onde $userpass é sua variável gitlab.

De acordo com a ajuda oficial do utilitário CLI, vault auth help userpass não há opção semelhante à que você conhece de outras ferramentas, por exemploecho $password | docker login ghcr.io -u myusername --password-stdin

informação relacionada