
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