Разрешить oracle db войти только в конкретное приложение? - PullRequest
4 голосов
/ 17 июня 2009

Мы хотим разрешить доступ к БД (Oracle) нашим пользователям только через наше собственное приложение - назовем его «ourTool.exe», установленный локально на компьютерах пользователей. В настоящее время пользователи должны указывать имя пользователя / пароль всякий раз, когда они запускают "ourTool". Предоставленный пароль пароля расшифровывается, и мы используем имя пользователя / расшифрованный пароль, чтобы наконец войти в базу данных Oracle. Этот подход предотвращает прямой доступ пользователей к нашей БД с помощью сторонних инструментов (SQLplus, Excel, Access, ...), и все в БД гарантированно будет введено / отредактировано с использованием «ourTool».

Теперь один из наших клиентов хочет разрешить своим пользователям «единый вход» (с помощью SmartCards / Oracle PKI). Благодаря этому пользователь сможет подключаться к нашей БД без ввода пароля при каждом запуске «ourTool». Но то же самое будет верно для потенциально опасных инструментов, таких как SQLplus, Excel, Access и т. Д.

Есть ли способ предотвратить это? Как мы можем быть уверены, что каждая запись в нашей БД создается / редактируется / удаляется только с использованием «ourTool» в этом сценарии?

Ответы [ 3 ]

2 голосов
/ 17 июня 2009

Поскольку это ваше приложение и у вас есть контроль над источником, вы можете использовать либо роли базы данных, защищенные паролем, либо защищенные роли приложений, которые включены в ourTool.exe. (см. http://www.oracle.com/technology/obe/obe10gdb/security/approles/approles.htm).

Например, для роли базы данных, защищенной паролем, начальное соединение будет иметь только привилегию CREATE SESSION, а затем ourTool.exe выдаст SET ROLE с паролем, известным только вам. Любое другое приложение не имеет информации для установки роли. Очевидно, что привилегии предоставляются только роли, а не непосредственно пользователю в этой конфигурации.

2 голосов
/ 17 июня 2009

По умолчанию OCI передает имя вызывающего приложения EXE, и вы можете получить к нему доступ, запросив v$session:

SELECT  program
FROM    V$SESSION

, что вы можете сделать в AFTER LOGON триггере.

Но это можно легко переопределить, и на него нельзя полагаться.

1 голос
/ 18 июня 2009

Я переименовал свой sqlplus.exe в myTool.exe и после установления соединения с myTool.exe

SELECT  program
FROM    V$SESSION
where username = 'SYSTEM';

Возвращает: myTool.exe

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

...