Доступ к приложению PostgreSQL - PullRequest
1 голос
/ 20 мая 2011

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

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

Ответы [ 3 ]

2 голосов
/ 20 мая 2011

Не существует способа защиты от дурака, но самый простой способ - использовать имя пользователя и пароль для соединения, которое вы не предоставляете своим пользователям.Сохраните пароль в зашифрованном файле конфигурации.Разумеется, ключ шифрования может быть извлечен из приложения умным человеком.

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

1 голос
/ 20 мая 2011

СУБД представлена ​​в ситуации Catch-22:

  • Когда пользователь запускает определенную программу JDBC для доступа к базе данных, пусть он делает свое дело.
  • Когда пользователь запускает любую другую программу JDBC для доступа к базе данных, не позволяйте ей делать свое дело.

Как СУБД может определить разницу между двумя программами? Что касается этого, то они оба являются клиентами, которые используют правильный протокол для связи с СУБД и идентифицировали себя как законного пользователя базы данных.

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

Есть клуджи, но нет чистого решения. Это общая проблема, с которой сталкивается любая СУБД, когда проблема представлена ​​в вопросе.

0 голосов
/ 20 мая 2011

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

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