Hashicorp Vault 如何使用 Bash Shell 从 STDIN 无头登录?

Hashicorp Vault 如何使用 Bash Shell 从 STDIN 无头登录?

例如,给定一个在 Gitlab 上运行的 Docker 容器中的 Bash Shell,我如何获取要传递的密码?

当我用这个登录时:

 $ vault login -method=ldap username=myusername

它要求我输入密码。

如何让提示不停止并将密码作为变量传递?

我计划使用 Gitlab 变量来传递我的密码。

答案1

您应该考虑使用 JWT(JSON Web Token)相互认证在 Gitlab 和 Vault 之间。这样就不需要在任何地方保存任何密码(包括变量),也就是说,您首先通过 JWT Auth 获取一个临时的 Vault 令牌,如下所示:

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

然后您可以像这样访问必要的秘密:

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

完成后,您可以通过以下方式撤销此临时令牌:

vault token revoke -self

答案2

由于作者明确要求使用用户密码方法,我建议按照如下方式回答:

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

其中 $userpass 是您的 gitlab 变量。

根据 CLI 实用程序的官方帮助,vault auth help userpass 没有像其他工具那样熟悉的选项,例如echo $password | docker login ghcr.io -u myusername --password-stdin

相关内容