Как авторизовать комбинацию пользователя/приложения в Oracle?

Я хотел бы авторизовать комбинацию пользователя/приложения, а не только пользователя.

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

Если тот же пользователь устанавливает PL/SQL Dev, Toad или любой другой инструмент управления Oracle, он может редактировать данные способами, запрещенными приложением.


person Martin R-L    schedule 31.05.2010    source источник


Ответы (3)


Ответ Винсента хорош (и он также делает хорошее замечание в своем комментарии о подделке исполняемого файла).

Более программный метод (без промежуточного уровня) см. в моем ответить на аналогичный вопрос. В основном это включает в себя кодирование ALTER SESSION в вашем приложении, которое активирует роль.

person dpbradley    schedule 31.05.2010

Вы можете использовать прокси-пользователя, чтобы ограничить доступ к базе данных. Ваши пользователи смогут подключаться (аутентификация) и активировать роль (авторизация) только через учетную запись среднего уровня. Им не нужно знать свой пароль БД. Они могут быть аутентифицированы извне (например, с помощью AD).

См. эту тему на AskTom и документацию для дальнейшее чтение.

person Vincent Malgrat    schedule 31.05.2010

Представление v$session содержит столбец «программа». Он содержит имя подключенного приложения. Возможно, вы сможете использовать эту информацию.

Чтобы определить идентификатор сеанса, используйте это:

выберите sys_context('USERENV','SID') из двойного;

person Rene    schedule 31.05.2010
comment
К сожалению, колонку программы можно легко подделать (cp sqlplus your_application_name), не стоит полагаться на нее из соображений безопасности. - person Vincent Malgrat; 31.05.2010
comment
Спасибо, что указали на это, и я рад, что показал путь не к этому. - person Rene; 01.06.2010