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

著者が明示的に 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

関連情報