Запретить приложениям входить в базу данных Oracle - PullRequest
3 голосов
/ 11 августа 2010

Кто-нибудь знает, как я мог сделать триггер или что-то еще, чтобы запретить людям подключаться к моей базе данных с любыми приложениями, кроме моих?

Обратите внимание, что супер-старый и незащищенный триггер блокируетнесколько .exe, таких как TOAD или что-то, что НЕ действительно работает, так как вы можете просто переименовать EXE в MyApplication.exe.

Подсказки?

Ответы [ 5 ]

5 голосов
/ 11 августа 2010

Более простым способом было бы перевести систему безопасности на роль, которую может включить только ваше приложение - см. Мой предыдущий ответ здесь

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

2 голосов
/ 11 августа 2010

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

Учебное пособие по его развертыванию можно найти здесь здесь , хотя для его защиты вам нужно будет создать роль с паролем, и ваше приложение должно будет знать пароль при выдачеSET ROLE rolename IDENTIFIED BY rolepassword; заявление.

1 голос
/ 11 августа 2010

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

0 голосов
/ 11 августа 2010

Когда ваше приложение входит в систему, вы вызываете хранимую процедуру, которая связывает текущий сеанс Oracle с «доверенным» сеансом.Сделайте это, создав таблицу доверенных сессий с полем для sessionID и доверенного бита (и, необязательно, случайный хеш для предотвращения вмешательства пользователя).

Создайте общесистемный триггер , который проверяет ваштекущий идентификатор сеанса (и случайный хэш), чтобы определить, является ли он доверенным.Если сеанс не существует в таблице, вы не разрешаете запрос и выходите из системы.

Вы также должны настроить триггер выключения для очистки таблицы доверенных сеансов при выходе.

0 голосов
/ 11 августа 2010

Если вы не доверяете имени программы в v $ session, то единственные варианты, которые приходят вам в голову, - это чтобы ваше приложение кодировало пароль, так что то, что они вводят, на самом деле не то, что используется для подключения к БД;или чтобы ваше приложение входило в систему с личным именем пользователя и паролем и аутентифицировало пользователей по вашей собственной таблице пользователей вместо того, чтобы иметь учетные записи пользователей Oracle для них.Оба варианта усложняют управление счетами.

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