Hashicorp Vault: Wie melde ich mich mit der Bash-Shell von STDIN aus ohne Headless-Eingabe an?

Hashicorp Vault: Wie melde ich mich mit der Bash-Shell von STDIN aus ohne Headless-Eingabe an?

Wie kann ich beispielsweise bei einer Bash-Shell in einem Docker-Container, der auf Gitlab ausgeführt wird, das zu übergebende Kennwort erhalten?

Wenn ich mich damit anmelde:

 $ vault login -method=ldap username=myusername

Ich werde nach einem Passwort gefragt.

Wie erreiche ich, dass die Eingabeaufforderung nicht anhält und das Kennwort als Variable übergeben wird?

Ich plane, Gitlab-Variablen zu verwenden, um mein Passwort weiterzugeben.

Antwort1

Sie sollten die Verwendung von JWT (JSON Web Token) in Betracht ziehengegenseitige Authentifizierungzwischen Gitlab und Vault. Auf diese Weise müssen keine Passwörter irgendwo gespeichert werden (auch keine Variablen), d. h. Sie erhalten zunächst ein temporäres Vault-Token über JWT Auth wie folgt:

export VAULT_TOKEN="$(vault write -field=token auth/jwt/login role=builder jwt=$CI_JOB_JWT)"

Und dann können Sie auf die erforderlichen Geheimnisse wie diese zugreifen:

export VCENTER_USER="$(vault kv get -field=username /kv/builder/vcenter-auth)"
export VCENTER_PASSWORD="$(vault kv get -field=password /kv/builder/vcenter-auth)"

Und wenn Sie fertig sind, können Sie dieses temporäre Token wie folgt widerrufen:

vault token revoke -self

Antwort2

Da der Autor explizit nach der Userpass-Methode gefragt hat, schlage ich als Antwort vor, es folgendermaßen zu machen:

vault login -method=userpass username=myusername password=$userpass

wobei $userpass Ihre Gitlab-Variable ist.

Laut der offiziellen Hilfe des CLI-Dienstprogramms vault auth help userpass gibt es keine Option, wie Sie sie vielleicht von anderen Tools kennen, z. B.echo $password | docker login ghcr.io -u myusername --password-stdin

verwandte Informationen