Hashicorp Vault ¿Cómo inicio sesión sin cabeza desde STDIN usando Bash Shell?

Hashicorp Vault ¿Cómo inicio sesión sin cabeza desde STDIN usando Bash Shell?

Dado un Bash Shell, por ejemplo, en un contenedor Docker que se ejecuta en Gitlab, ¿cómo obtendría la contraseña para pasarla?

Cuando inicio sesión con esto:

 $ vault login -method=ldap username=myusername

Me pide una contraseña.

¿Cómo consigo que el mensaje no se detenga y que la contraseña se pase como una variable?

Planeo usar Variables de Gitlab para pasar mi contraseña.

Respuesta1

Deberías considerar el uso de JWT (JSON Web Token)autenticacion mutuaentre Gitlab y Vault. De esta manera, no es necesario guardar ninguna contraseña en ningún lugar (incluidas las variables), es decir, primero obtiene un token de Vault temporal a través de JWT Auth de esta manera:

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

Y luego podrás acceder a secretos necesarios 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)"

Y cuando termine, puede revocar este token temporal de la siguiente manera:

vault token revoke -self

Respuesta2

Como el autor ha solicitado explícitamente el método de contraseña de usuario, sugiero como respuesta hacerlo así:

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

donde $userpass es tu variable de gitlab.

Según la ayuda oficial de la utilidad CLI, vault auth help userpass no existe ninguna opción con la que podría estar familiarizado en otras herramientas, por ejemploecho $password | docker login ghcr.io -u myusername --password-stdin

información relacionada