
たとえば、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