Was macht dieses Tool?
pg_vault_rotate rotiert die aktiven Datenbank-Credentials einer bestehenden Vault-Verbindung. Es widerruft die alte Lease in Vault, bezieht frische Credentials über die Database Secret Engine und baut den Connection Pool mit dem neuen Benutzer automatisch neu auf. Da dabei aktive Verbindungen getrennt werden, erfordert das Tool eine explizite Bestätigung (confirm: true).
Wie wird es aufgerufen?
Schritt 1: Vault-Verbindung herstellen
Bevor Credentials rotiert werden können, muss eine Vault-Verbindung bestehen. Der MCP-Server unterstützt mehrere gleichzeitige Verbindungen:
▶ Calling tools...
→ pg_vault_connect { "profile": "production" }
Verbindung über Vault hergestellt:
Status: connected
Profil: production
Vault-Rolle: pg-readonly
Username: v-approle-pg-readon-x9k2m
Schritt 2: Claude CLI (natürliche Sprache)
▶ Calling tools...
→ pg_vault_rotate { "profile": "production", "confirm": true }
Credentials rotiert:
Rotiert: ja
Alte Lease: revoked
Neuer Username: v-approle-pg-readon-m7j4p
Neue Lease-TTL: 3600s
Pool reconnected: ja
MCP Protocol (programmatisch)
Die folgende Ausgabe ist repräsentativ für die Vault E2E-Tests — die Struktur entspricht dem echten Tool-Output-Format (Vault-Tests laufen separat mit VAULT_ADDR):
const result = await client.callTool("pg_vault_rotate", { "profile": "production", "confirm": true });
// Response:
{
"rotated": true,
"old_lease": "revoked",
"new_username": "v-approle-pg-readon-m7j4p",
"new_lease_ttl": 3600,
"pool_reconnected": true
}
Was passiert unter der Haube?
Wie pg_vault_connect führt auch dieses Tool kein SQL aus. Der gesamte Ablauf besteht aus Vault-API-Aufrufen und Pool-Management:
- Lease widerrufen —
PUT /v1/sys/leases/revokemit der aktiven Lease-ID. Vault löscht den dynamischen PostgreSQL-User sofort. - Neue Credentials beziehen —
GET /v1/database/creds/{role}. Vault erstellt einen neuen dynamischen User. - Pool trennen —
pool.end()beendet alle aktiven Verbindungen im alten Pool. - Pool neu aufbauen —
new Pool()mit dem neuen Username und Passwort. Verbindung wird mitSELECT 1verifiziert.
Warum confirm: true? Die Rotation ist eine destruktive Operation. Aktive Queries werden abgebrochen, wenn der alte Pool geschlossen wird. In Produktionsumgebungen sollte die Rotation nur während geplanter Wartungsfenster oder bei Sicherheitsvorfällen durchgeführt werden.
Ausgabe im Detail
- rotated —
truewenn die Rotation erfolgreich war - old_lease — Status der alten Lease (
revoked) - new_username — Der frisch generierte PostgreSQL-Benutzername
- new_lease_ttl — Gültigkeitsdauer der neuen Credentials in Sekunden
- pool_reconnected —
truewenn der neue Pool erfolgreich verifiziert wurde
Was testet die Testsuite?
Die Testsuite validiert pg_vault_rotate mit einer aktiven Vault-Lease aus pg_vault_connect:
✓ pg_vault_rotate > rotates credentials with confirm (new username, old lease revoked)
Test Files 1 passed (1)
Tests 2 passed (2)
Duration 1204ms
Testdaten-Szenario
Die Testumgebung setzt eine bestehende Vault-Verbindung voraus:
- Aktive Vault-Lease — Hergestellt durch vorherigen
pg_vault_connect-Aufruf - Database Secret Engine — Vault-Rolle
pg-readonlymit dynamischer User-Erzeugung - PostgreSQL — Zieldatenbank mit Vault-verwalteten Benutzern
Die Tests validieren, dass:
- Ohne
confirm: truedie Rotation mit einer klaren Fehlermeldung abgelehnt wird — kein versehentliches Rotieren - Mit
confirm: trueein neuer Username erzeugt wird, die alte Lease den Statusrevokedhat und der Pool neu verbunden ist
Zusammenfassung
pg_vault_rotate ist das Notfall-Werkzeug bei kompromittierten Credentials und das Routine-Werkzeug für geplante Rotationen. In Kombination mit pg_vault_connect bildet es einen vollständigen Credential-Lifecycle ohne statische Passwörter.
Zusammen mit pg_vault_connect (→ Erstverbindung) und pg_hba_analyze (→ Authentifizierungs-Audit) gehört es zum /pg-security Workflow-Skill.