
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