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:...