Разрешить вход в oracle db только для определенного приложения?

StackOverflow https://stackoverflow.com/questions/1007308

Вопрос

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

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

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

Это было полезно?

Решение

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

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

Другие советы

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

SELECT  program
FROM    V$SESSION

, что можно сделать с помощью триггера AFTER LOGON .

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

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

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

ВОЗВРАТ:myTool.exe

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top