Доступ к пакетам

 
0
 
Oracle
ava
guest | 10.11.2005, 01:23
Есть штука, именуемая grant execute позволяющая одному пользователю работать с пакетом, написанным другим пользователем. Точнее с опубликованными методами. Вопрос: как дать другому юзеру доступ к Body пакета. К исходному коду? Если есть варианты: как только на чтение, как на чтение-редактирование.
Comments (3)
ava
LSD | 10.11.2005, 15:50 #
Цитата
Вопрос: как дать другому юзеру доступ к Body пакета. К исходному коду? Если есть варианты: как только на чтение, как на чтение-редактирование.

Исходный код пакета доступен через представления user_source, all_source, dba_source. Сам код находится в словаре sys.source$ и руками туда вообще лучше не лазить. Исходный код процедуры меняется автоматом при ее пересоздании (create or replace).

Итого:
  • пользователь автоматом получает права на просмотр тела процедуры на которую у него есть право выполнения, избавиться от этого полностью нельзя. Можно либо отобрать у PUBLIC права на представление all_source, или wrap-ать тело пакета
  • чтобы именно изменить тело пакета, у пользователя должны быть права на sys.source$, но так делать очень не рекомендуется
  • пересоздать пакет (и соответсвенно изменить его тело) может любой пользователь с привилегией create any procedure
ava
guest | 11.11.2005, 01:46 #
Уточню на всякий случай ситуацию на примере:
Два разработчика в команде. Один написал пакет, другому желателен доступ на редакторование к телу того же пакета.
Просто заморочка в том, что при гранте на выполнение можно видеть только spec пакета, а вот до body достучаться - фиг. В общем ясно в какую сторону лезть.

Такой момент еще: я где-то мимоходом видел грант на дебаг (debug) какие права он реально дает юзеру?
ava
LSD | 12.11.2005, 01:30 #
Просмотреть исходники в другой схеме можно через dba_source, или если не хочешь давать пользователю доступ ко всем исходникам создай свой вьюер на основе dba_source.

Но это все ерунда, потому что единственный способ создать процедуру в другой схеме это дать пользователю привелегию create any procedure и тогда он сможет видеть весь код package-й без проблем через all_source.

В принципе можно создать package в другой схеме и без привелегии create any procedure, но это уже:
Цитата
Месье понимает толк в извращениях


Цитата
Такой момент еще: я где-то мимоходом видел грант на дебаг (debug) какие права он реально дает юзеру?

Да ничего такого, дебагинг процедур на PL/SQL, насчет Java не знаю надо уточнить.
Please register or login to write.
Firm of day
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Contributors
  guest ava  LSD
advanced
Submit