2016-10-28 12 views
0

私のC#WebサービスアプリケーションでVaultSharp postgresql secret backendを利用してPostgresデータベースのパスワードを管理するためにHashicorp's Vaultソフトウェアを使用しています。Hashcorp Vaultパスワードを使用してnpgsqlプール接続を更新する

これらのアプリケーションは、永続接続を持つデータベースプールを使用してPostgreSQLサーバに接続します。

この設定では、Vaultはアプリケーションに提供されたデータベースユーザー名とパスワードを動的に生成して取り消します。

私は明確ではないが、私のアプリケーションがリース期限が切れる前にデータベースサーバに動的に再認証するための自動化された方法はありますか?または、永続的なデータベース接続を手動で管理し、リース期限が切れる前にそれらを手動で切断または再接続する必要がありますか?

これは、これがnpgsqlやこれに対応するデータベースドライバの機能、あるいは既存の接続で新しいユーザー名とパスワードで再認証する方法があることを望んでいます。

答えて

0

PostgreSQLプロトコルでは、既存の接続の再認証が許可されていません。認証は、起動パケットに最初に接続を開いたときにのみ発生します。詳細はthe protocol docsを参照してください。したがって、現在の接続を閉じて新しい接続を開く必要があります。

NpgsqlConnection.ClearPool()またはClearAllPools()を呼び出すことで、Npgsqlにプール内の既存のすべてのアイドル状態の接続をクリアすることができます。ただし、これはアプリケーションで現在使用されている接続には影響しません。その接続をすぐに終了する方法はありません(接続が次に使用されたときに例外が発生します)。

理論上、既存の接続の認証情報を「置き換える」機能を開発することは可能です。これにより、使用中のすべての接続にフラグが設定され、次に接続が使用されたときに透過的なクローズと再接続がトリガーされます。しかし、これはかなり複雑で誤りがちな機能になります。

関連する問題