EXECUTE ANY PROCEDURE:
□ REVOKE EXECUTE ANY PROCEDURE FROM steve;
При отзыве привилегии у пользователя steve, который уже успел передать
ее пользователю gail, у пользователя gail привилегия остается:
□ CONNECT gail/seymour
SELECT *
FROM user_sys_privs;
USERNAME PRIVILEGE ADM
GAIL CREATE SESSION N0
GAIL EXECUTE ANY PROCEDURE N0
PUBLIC EXECUTE ANY PROCEDURE N0
294 Глава 9
Объектные привилегии
Объектная привилегия позволяет пользователю производить определенные
действия над объектами базы данных, например, выполнять операторы
D M L для таблиц. Привилегия INSERT ON store, products позволяет
пользователю вставлять строки в таблицу products схемы store. Некоторые
из наиболее часто употребляемых объектных привилегий приведены
в таблице 9.3.
Примечание Полный перечень объектных привилегий можно найти в книге Oracle SQL
Reference (Справочник по SQL O r a c l e ) . ___________________________________
Таблица 9.3. Часто употребляемые объектные привилегии
Объектная привилегия Позволяет пользователю выполнять...
SELECT Выборку
INSERT Вставку
UPDATE Обновление
DELETE Удаление
EXECUTE Хранимую процедуру
Предоставление пользователю объектных привилегий
Для предоставления пользователю объектных привилегий используется
оператор GRANT. В следующем примере мы подключаемся как пользователь
s t o r e и предоставляем объектные привилегии SELECT, INSERT и UPDATE для
таблицы products пользователю steve, а также привилегию SELECT для таблицы
employees:
□ CONNECT store/ store_password
GRANT SELECT, INSERT, UPDATE ON store. products TO steve;
GRANT SELECT ON store.employees TO steve;
В следующем примере привилегия UPDATE для столбцов last_name и
salary предоставляется пользователю steve:
□ GRANT UPDATE (last_name, salary) ON store.employees TO steve;
Опцию GRANT можно использовать для того, чтобы дать пользователю
право предоставить привилегию другому пользователю. В следующем примере
привилегия SELECT для таблицы customers предоставляется пользователю
steve вместе с опцией GRANT:
□ GRANT SELECT ON store.customers TO steve WITH GRANT OPTION;
Примечание Опция GRANT используется для того, чтобы позволить пользователю передавать
объектные привилегии другим пользователям, а опция ADMIN используется для того, чтобы
позволить пользователю передавать другим пользователям системные привилегии.______
Пользователи, привилегии и роли 295
Теперь можно передать привилегию SELECT ON store, customers от steve
другим пользователям. В следующем примере мы подключаемся как пользователь
steve и предоставляем эту привилегию пользователю gaiclass="underline"
□ CONNECT steve/button
GRANT SELECT ON store.customers TO gail;
Проверка назначенных объектных привилегий
Можно проверить, какие объектные привилегии пользователь назначил
другим пользователям, сделав запрос к user_tab_privs_made. В таблице 9.4
перечислены столбцы user_tab_privs_made.
Таблица 9.4. Некоторые столбцы userjab_privs_made
Столбец Тип Описание
grantee
table_name
grantor
privilege
grantable
VARCHAR2(30)
VARCHAR2(30)
VARCHAR2(30)
VARCHAR2(40)
VARCHAR2(3)
hierarchy VARCHAR2(3)
Пользователь, которому была предоставлена привилегия.
Имя объекта (например, таблицы), на который была предоставлена
привилегия.
Пользователь, который передает привилегию.
Привилегия на объект.
Указывает, может ли пользователь, которому была предоставлена
привилегия, передать эту привилегию другим пользователям.
Принимает значения YES или N0.
Указывает, может ли привилегия образовывать часть иерархии.
Принимает значения YES или N0.
В следующем примере мы подключаемся как пользователь store и задаем
запрос к user_tab_privs_made. Так как в ней содержится очень много
строк, ниже приводится выборка строк, относящихся к таблице products
(значение table_name равно PRODUCTS):
CONNECT sto re /sto re_passw o rd
SELECT *
FROM user_tab_privs_made
WHERE table_name = 'PRODUCTS’ ;
GRANTEE TABLE_NAME
GRANTOR PRIVILEGE GRA HIE
PRODUCT MANAGER PRODUCTS
STORE DELETE NO NO
PRODUCT MANAGER PRODUCTS
STORE INSERT NO NO
PRODUCT MANAGER PRODUCTS
STORE SELECT NO NO
PRODUCT MANAGER PRODUCTS
STORE UPDATE NO NO
STEVE PRODUCTS
STORE INSERT NO NO
296 Гпава 9
STEVE PRODUCTS
STORE SELECT NO NO
STEVE PRODUCTS
STORE UPDATE NO NO
Можно проверить, какие объектные привилегии для столбца были выданы
пользователем, сделав запрос к user_col_privs_made. В таблице 9.5.
перечислены столбцы user_col_privs_made.
Таблица 9.5. Некоторые столбцы в user_col_privs_made
Столбец Тип Описание
grantee VARCHAR2(30) Пользователь, которому была передана привилегия.
table_name VARCHAR2(30) Название объекта, на который была передана привилегия.
column_name VARCHAR2(30) Название объекта, на который была передана привилегия.