2013-07-03 6 views
2

Это, надеюсь, быстро один, я новичок в оракула так нужно кое-что проверить, прежде чем он кусает меня на заднейПредоставлять разрешения на грант Cascade?

Хорошо у меня есть функция, которая модифицирует таблицу

если я дать пользователю разрешение для выполнения функции им также необходимо разрешение на обновление и вставку в таблицу или факт, что они одобрены для использования функции достаточно?

причина я спрашиваю, что пользователям нужно редактировать эти таблицы, но только с помощью утвержденных функций, которые выполняют сложные проверки, которые не могут быть легко сделать с помощью ограничений

ответ

3

Это зависит от того, как вы определяете процедуру, в частности, AUTHID property:

AUTHID свойство хранящегося блока PL/SQL влияет на разрешение имен и привилегия проверки заявлений SQL, что вопросы блока во время выполнения.

По умолчанию процедуры создаются с AUTHID значением DEFINER (справа DEFINER в), функции выполняются, как если абонент временно получил права Определитель.

Со значением CURRENT_USER имущество AUTHID проверит процедуры проверки привилегий вызывающего абонента во время выполнения.

В вашем случае описанный сценарий будет соответствовать значению свойства DEFINER (по умолчанию): пользователи смогут только вызывать процедуры и функции без прямого доступа к базовым таблицам. Подобный сценарий описан в документации:

Сценарий: Предположим, что вы должны создать API, чьи процедуры имеют неограниченный доступ к своим таблицам, но вы не хотите, чтобы обычные пользователи из выбора данных таблицы непосредственно, и из изменяя его с помощью инструкций INSERT, UPDATE и DELETE.

В специальной схеме создайте таблицы и процедуры, которые содержат API. По умолчанию каждая процедура представляет собой блок DR, поэтому вам не нужно указывать AUTHID DEFINER при его создании. Для других пользователей предоставите привилегию EXECUTE, но не предоставляйте никаких привилегий, разрешающих доступ к данным.

Смежные вопросы