
例如,假設在 Gitlab 上執行的 Docker 容器中存在 Bash Shell,我該如何取得要傳入的密碼?
當我用這個登入時:
$ vault login -method=ldap username=myusername
它要求我輸入密碼。
如何讓提示不停止並將密碼傳入為變數?
我計劃使用 Gitlab 變數來傳遞我的密碼。
答案1
您應該考慮使用 JWT(JSON Web 令牌)相互認證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
由於作者明確要求使用 userpass 方法,我建議作為答案來做:
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