Пул соединений Postgres с несколькими схемами и пользователями - PullRequest
1 голос
/ 21 марта 2020

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

Попытка использовать пул подключений на уровне приложений ( Hikari ), но я не вижу возможности эффективно объединять пулы между схемами. , Не хотите выходить за пределы количества соединений Postgress растущим числом соединений на схему / пользователя. И вообще это не кажется наиболее эффективным способом объединения соединений, если они растут как фактор схем.

Также пробовал pgbouncer , но не уверен, как его эффективно настроить для этой цели. Пытался использовать Hikari на стороне приложения для каждого клиента и pgbouncer, чтобы сопоставить их с меньшим количеством postgres соединений. В режиме сеанса pgbouncer, кажется, просто действует как прокси, и число соединений растет в соответствии с каждым соединением из Hikari. В режиме транзакции pgbouncer и Hikari как-то выходят из строя c, и я получаю сообщения об ошибках протокола от Postgres.

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

Таким образом, потенциально имея довольно много схем, в зависимости от клиента, вопрос заключается в том, как правильно сделать пул соединений для Postgres при использовании нескольких схем и пользователей?

1 Ответ

1 голос
/ 21 марта 2020

Другой пользователь для каждой схемы ограничивает доступ.

Действительно ли это эффективно? Разве вашему серверу приложений не нужно знать, как подключаться к каждому пользователю, чтобы выполнять свою работу? Если я могу заставить сервер приложений показывать мне данные из неправильной схемы, разве я не могу так же легко обмануть его, как неверный пользователь, прежде чем сделать это?

Если это так, я думаю, что эти два "слоя «безопасности на самом деле не зависят друг от друга, поэтому они на самом деле не два уровня.

...