Oracle DB, Oracle APEX, Linux etc.

четверг, 21 октября 2010 г.

Oracle APEX: Кому дать привилегии?

В ситуации, когда приложение работает с несколькими схемами БД, часто возникает вопрос: какому пользователю дать привилегии на запрос/DML/выполнение, чтобы приложение спокойно могло обращаться к объектам этих схем? Ответ прост: дайте привилегии пользователю-владельцу схемы разбора приложения (aka parsing schema). Вы можете узнать имя пользователя, зайдя в Application->Edit Application Properties и глянув на Name->Parsing Schema. Также можно выполнить запрос:
select owner from apex_applications where application_id = :p_your_app_id;
Это тот пользователь, от имени которого выполняются все операторы и PL/SQL-блоки в Вашем приложении, так что именно ему требуется права на всё, с чем работает приложение.

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

Если кто-то заинтересовался, как же в сессии пользователя ANONYMOUS/APEX_PUBLIC_USER выполняются операторы и PL/SQL-код с правами пользователя-владельца схемы разбора, то можно поискать в Сети информацию про недокументированный пакет DBMS_SYS_SQL.

Надеюсь, что вопрос исчерпан. Удачи!

Комментариев нет:

Отправить комментарий