2016-10-28 3 views
0

Ich bin in der Verwendung von Hashicorp's Vault Software zur Verwaltung von Postgres-Datenbank-Passwörter unter Verwendung der VaultSharp postgresql secret backend in meinen C# -Webdienst-Anwendungen.Aktualisierung npgsql Pool-Verbindungen mit Hashcorp Vault-Passwort

Diese Anwendungen verbinden sich mit einem PostgreSql-Server unter Verwendung eines Datenbankpools mit persistenten Verbindungen.

Mein Verständnis ist, dass Vault in dieser Konfiguration Benutzernamen und Kennwörter dynamisch generiert und widerruft, die meiner Anwendung zur Verfügung gestellt wurden.

Aber was ist mir nicht klar, gibt es einen automatisierten Weg für meine Anwendung dynamisch auf den Datenbankserver neu zu authentifizieren, bevor der Mietvertrag abläuft? Oder muss ich meine persistenten Datenbankverbindungen manuell verwalten und die Verbindung manuell trennen/wiederherstellen, bevor die Lease abläuft?

Ich hoffe, dass dies eine Funktion in npgsql oder einen ähnlichen Datenbanktreiber wäre, der dies für mich behandeln kann, oder wenn es eine Möglichkeit gibt, mit einem neuen Benutzernamen und einem neuen Kennwort für eine bestehende Verbindung erneut zu authentifizieren.

Antwort

0

Das PostgreSQL-Protokoll erlaubt keine erneute Authentifizierung einer bestehenden Verbindung - die Authentifizierung erfolgt nur beim ersten Öffnen einer Verbindung im Startup-Paket. Weitere Informationen finden Sie unter the protocol docs. Sie müssen also Ihre aktuellen Verbindungen schließen und neue öffnen.

Sie können Npgsql zwingen, alle bestehenden inaktiven Verbindungen im Pool zu löschen, indem Sie NpgsqlConnection.ClearPool() oder ClearAllPools() aufrufen. Dies hat jedoch keine Auswirkungen auf Verbindungen, die derzeit in Ihrer Anwendung verwendet werden. Es gibt keine Möglichkeit, sie während des Betriebs zu schließen (dies würde beim nächsten Verbindungsaufbau zu einer Ausnahme führen).

Theoretisch ist es möglich, eine Funktion zu entwickeln, die die Authentifizierungsinformationen für bestehende Verbindungen "ersetzt". Dies würde ein Flag für alle in Benutzung befindlichen Verbindungen setzen, die ein transparentes Schließen und erneutes Verbinden beim nächsten Verbindungsaufbau auslösen würden. Dies wäre jedoch ein ziemlich kompliziertes und fehleranfälliges Merkmal.

Verwandte Themen