Vault Cheatsheet

Vault CheatsheetKapitel 02 von 10

Vault Secrets Engines

Stand Vault 2.2 · Edition 2026.11 · Release-Daten geprüft am 30. Oktober 2026

KV v2: versionierte Secrets

Jeder Key trägt Versionen (max_versions pro Mount/Key). Soft Delete macht eine Version unzugänglich, aber wiederherstellbar (undelete); destroy löscht Versionsdaten endgültig. cas (Check-and-Set) verhindert Lost Updates.

API-Pfade je Mount: data/, metadata/, delete/, undelete/, destroy/, subkeys/, wichtig für Policies!

vault secrets enable -path=secret kv-v2
vault kv put    -mount=secret app/db user=svc pass=s3
vault kv get    -mount=secret -version=2 app/db
vault kv patch  -mount=secret app/db pass=neu
vault kv undelete -mount=secret -versions=2 app/db
vault kv destroy  -mount=secret -versions=1 app/db

Database: dynamische Credentials

Vault erzeugt DB-Accounts on demand: Jede App-Instanz bekommt eigene, kurzlebige Credentials mit Lease/TTL; nach Ablauf revoked Vault den Account. Role mappt auf creation_statements mit {{username}}/{{password}}-Platzhaltern.

Static Roles rotieren bestehende Accounts nach Zeitplan. Nach dem Setup rotate-root: das Bootstrap-Passwort kennt danach nur noch Vault.

vault read database/creds/readonly  # user+pass+lease
vault write -force database/rotate-root/pg

PKI: Zertifikate on demand

X.509-Zertifikate ohne manuellen CSR-Prozess, pro Workload-Instanz ein eigenes, kurzlebiges Zertifikat. Kurze TTLs statt Revocation: hält CRLs klein.

Aufbau: Root-CA und Intermediate-CA getrennt aufsetzen, Issuance läuft über die Intermediate. Roles begrenzen allowed_domains. ACME wird als Protokoll unterstützt; ab 2.1 liefert die PKI-Engine mit format=pkcs12_bundle bzw. jks_bundle base64-kodierte Bundles, Default-Passwort changeit, also pkcs12_password/jks_password setzen.

ACME-Server: Ab 2.1.2 (Enterprise 1.19.23, 1.20.17, 1.21.12; HCSEC-2026-40) weist sign-verbatim CSRs mit URI-, E-Mail- und Other-SANs ab, denn ACME prüft nur DNS-Namen und IPs. Altverhalten nur mit default_directory_policy=sign-verbatim-unsafe in config/acme; besser Role-Policy und EAB.

eMudhra-Sperre (10/2026): Zertifikate aus Vault-PKI hängen an eigenen Roots und sind nicht betroffen. Betroffen ist Vault nur als Client mit System-Trust, etwa oidc_discovery_url und jwks_url ohne oidc_discovery_ca_pem bzw. jwks_ca_pem. Cert-Auth vertraut nur den im Mount hinterlegten CAs. Fix ab 2.2.1 (Enterprise 1.21.13, 1.19.24): Go 1.27.3 bzw. 1.26.10 und bereinigter Trust Store der Alpine- und UBI-Images.

Transit: Encryption as a Service

Ver-/Entschlüsselung als API, Vault speichert die Daten nicht. Ciphertext trägt die Key-Version als Prefix (vault:v1:...).

rotate erzeugt eine neue Key-Version, rewrap hebt Ciphertext ohne Plaintext-Zugriff auf die neue Version, min_decryption_version sperrt Alt-Versionen. Dazu: sign/verify, HMAC, Datakeys für Envelope Encryption.

vault write transit/encrypt/app \
  plaintext=$(printf %s geheim | base64)
vault write -f transit/keys/app/rotate
vault write transit/rewrap/app ciphertext=vault:v1:...