Hashicorp Vault Bash 쉘을 사용하여 STDIN에서 헤드리스로 어떻게 로그인합니까?

Hashicorp Vault Bash 쉘을 사용하여 STDIN에서 헤드리스로 어떻게 로그인합니까?

예를 들어 Gitlab에서 실행되는 Docker 컨테이너에서 Bash Shell이 ​​말하는 경우 비밀번호를 전달하려면 어떻게 해야 합니까?

이것으로 로그인하면 :

 $ vault login -method=ldap username=myusername

비밀번호를 묻는 메시지가 표시됩니다.

중지하지 않고 비밀번호를 변수로 전달하라는 메시지를 표시하려면 어떻게 해야 합니까?

Gitlab 변수를 사용하여 비밀번호를 전달할 계획입니다.

답변1

JWT(JSON 웹 토큰) 사용을 고려해야 합니다.상호인증Gitlab과 Vault 사이. 이렇게 하면 어디에든 비밀번호(변수 포함)를 저장할 필요가 없습니다. 즉, 먼저 다음과 같이 JWT 인증을 통해 임시 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

관련 정보