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 令牌)相互認證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

相關內容