Выбрать главу

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) Название объекта, на который была передана привилегия.