Hashicorp Vault. Как войти в систему без использования Headless из STDIN с помощью оболочки Bash?

Hashicorp Vault. Как войти в систему без использования Headless из STDIN с помощью оболочки Bash?

Например, если Bash Shell находится в контейнере Docker, запущенном на Gitlab, как мне получить пароль для передачи?

Когда я вхожу в систему с помощью этого:

 $ vault login -method=ldap username=myusername

Он запрашивает у меня пароль.

Как сделать так, чтобы запрос не останавливался и пароль передавался в качестве переменной?

Я планирую использовать переменные Gitlab для передачи своего пароля.

решение1

Вам следует рассмотреть возможность использования JWT (JSON Web Token)взаимная аутентификациямежду Gitlab и Vault. Таким образом, нет необходимости сохранять какие-либо пароли где-либо (включая переменные), то есть вы сначала получаете временный токен Vault через JWT Auth, например так:

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

Связанный контент