2016-10-28 9 views
0

Я изучаю использование Hashicorp's Vault программного обеспечения для управления паролями базы данных Postgres с использованием VaultSharp postgresql secret backend в моих приложениях веб-сервисов C#.Обновление соединений пула npgsql с паролем Hashcorp Vault

Эти приложения подключаются к серверу PostgreSql, используя пул базы данных с постоянными подключениями.

Я понимаю, что в этой установке Vault будет динамически генерировать и аннулировать имена пользователей и пароли, которые были предоставлены моему приложению.

Однако, что я не понимаю, существует ли автоматическая возможность для моего приложения динамически повторно аутентифицироваться на сервере базы данных до истечения срока аренды? Или мне нужно вручную управлять моими постоянными подключениями к базе данных и вручную отключать/повторно подключать их до истечения срока аренды?

Я надеюсь, что это будет функция в npgsql или аналогичный драйвер базы данных, который может справиться с этим для меня, или если есть способ повторно аутентифицироваться с новым именем пользователя и паролем в существующем соединении.

ответ

0

Протокол PostgreSQL не позволяет повторно аутентифицировать существующее соединение. Аутентификация происходит только при первом открытии соединения в пакете запуска. Для получения дополнительной информации см. the protocol docs. Таким образом, вам придется закрыть текущие соединения и открыть новые.

Вы можете заставить Npgsql удалить все существующие простоя в пуле, позвонив по номеру NpgsqlConnection.ClearPool() или ClearAllPools(). Однако это не повлияет на какие-либо соединения, которые в настоящее время используются в вашем приложении, - нет возможности закрыть их на лету (это может вызвать исключение при следующем подключении).

Теоретически возможно разработать функцию, которая «заменит» информацию аутентификации для существующих соединений. Это установит флаг для всех подключаемых подключений, которые будут запускать прозрачное закрытие и повторно подключаться при следующем подключении. Однако это будет довольно сложная и подверженная ошибкам функция.

 Смежные вопросы

  • Нет связанных вопросов^_^