← Zurück zum Blog
Security

pg_vault_rotate — Datenbank-Credentials rotieren ohne Downtime

ITUNIFIED • 2026-03-25 • 7 min Lesezeit

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:

● ● ●   Claude CLI — Vault-Verbindung
claude> Verbinde dich über Vault mit der Produktionsdatenbank

▶ 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)

● ● ●   Claude CLI — Credential-Rotation
claude> Rotiere die Datenbank-Credentials für Produktion

▶ 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):

● ● ●   MCP Protocol — Credential-Rotation
// Programmatic invocation via MCP SDK
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:

  1. Lease widerrufen — PUT /v1/sys/leases/revoke mit der aktiven Lease-ID. Vault löscht den dynamischen PostgreSQL-User sofort.
  2. Neue Credentials beziehen — GET /v1/database/creds/{role}. Vault erstellt einen neuen dynamischen User.
  3. Pool trennen — pool.end() beendet alle aktiven Verbindungen im alten Pool.
  4. Pool neu aufbauen — new Pool() mit dem neuen Username und Passwort. Verbindung wird mit SELECT 1 verifiziert.

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 — true wenn 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 — true wenn 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:

● ● ●   vitest run — Testsuite
✓ pg_vault_rotate > rejects rotation without confirm flag
✓ 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-readonly mit dynamischer User-Erzeugung
  • PostgreSQL — Zieldatenbank mit Vault-verwalteten Benutzern

Die Tests validieren, dass:

  1. Ohne confirm: true die Rotation mit einer klaren Fehlermeldung abgelehnt wird — kein versehentliches Rotieren
  2. Mit confirm: true ein neuer Username erzeugt wird, die alte Lease den Status revoked hat und der Pool neu verbunden ist

Zusammenfassung

Vault API
Datenquelle
5
Ausgabefelder
2
Tests
destructive
Typ

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.

#postgresql#security#vault#rotation#credentials#mcp

Bereit, PostgreSQL-Betrieb zu automatisieren?

Starten Sie mit dem Open-Source-Server oder kontaktieren Sie uns für die Enterprise-Plattform.