УПРАВЛЕНИЕ ПРИВИЛЕГИЯМИ И РОЛЯМИ ORACLE


ГЛАВА 12

        ----------------------------------------------------------------

        УПРАВЛЕНИЕ ПРИВИЛЕГИЯМИ И РОЛЯМИ



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

            *  системные и объектные привилегии

            *  как назначать и отзывать привилегии и роли

            *  как создавать, изменять и удалять роли

            *  как управлять использованием ролей

        Для информации  о том,  как управлять  доступом к  базе данных в
        целом, обратитесь к главе 11; для рекомендаций по общей политике
        защиты базы данных обратитесь к главе 10.


[Trusted]

        Если вы используете Trusted ORACLE в режиме DBMS MAC, обратитесь
        к  документу  Trusted  ORACLE7  Server Administrator's Guide для
        важной  информации  об  управлении  системными  привилегиями   и
        ролями.
































                                  Управление привилегиями и ролями  12-1


----------------

Что такое привилегии

        Привилегия - это право выполнять конкретный тип предложений SQL,
        или право доступа к объекту другого пользователя.  ORACLE  имеет
        два   вида   привилегий:   системные   привилегии   и  объектные
        привилегии.   Все  привилегии  ORACLE  перечислены  в  следующих
        секциях, где они объединены  в группы, состоящие из  привилегий,
        которые обычно назначаются и отзываются вместе.


Системные привилегии
--------------------

        Существуют  более  80  различных  системных  привилегий.  Каждая
        системная привилегия позволяет пользователю выполнять конкретную
        операцию  в  базе   данных  или  определенный   класс  операций.
        Табл.12-1  перечисляет  все  системные  привилегии  и  операции,
        которые позволяются ими.

Табл.12-1
Системные привилегии

        г======================T=======================================¬
        ¦ Системная привилегия ¦ Допустимые операции                   ¦
        ¦======================¦=======================================¦
        ¦ ANALYZE                                                      ¦
        ¦----------------------T---------------------------------------¦
        ¦  ANALYZE ANY         ¦ Анализировать любую таблицу, кластер  ¦
        ¦                      ¦ или индекс в базе данных.             ¦
        ¦======================¦=======================================¦
        ¦ AUDIT                                                        ¦
        ¦----------------------T---------------------------------------¦
        ¦  AUDIT ANY           ¦ Отслеживать любой объект схемы.       ¦
        ¦----------------------+---------------------------------------¦
        ¦  AUDIT SYSTEM        ¦ Включать и выключать опции аудитинга  ¦
        ¦                      ¦ предложений и привилегий.             ¦
        ¦======================¦=======================================¦
        ¦ CLUSTER                                                      ¦
        ¦----------------------T---------------------------------------¦
        ¦  CREATE CLUSTER      ¦ Создавать кластер в своей схеме.      ¦
        ¦----------------------+---------------------------------------¦
        ¦  CREATE ANY CLUSTER  ¦ Создавать кластер в любой схеме.      ¦
        ¦                      ¦ Ведет себя аналогично CREATE ANY TABLE¦
        ¦----------------------+---------------------------------------¦
        ¦  ALTER ANY CLUSTER   ¦ Изменять любой кластер в базе данных. ¦
        ¦----------------------+---------------------------------------¦
        ¦  DROP ANY CLUSTER    ¦ Удалять любой кластер в базе данных.  ¦
        ¦======================¦=======================================¦
        ¦ DATABASE                                                     ¦
        ¦----------------------T---------------------------------------¦
        ¦  ALTER DATABASE      ¦ Изменять базу данных; добавлять файлы ¦
        ¦                      ¦ операционной системы через ORACLE,    ¦
        ¦                      ¦ независимо от привилегий ОС.          ¦
        ¦======================¦=======================================¦
        ¦ DATABASE LINK                                                ¦
        ¦----------------------T---------------------------------------¦
        ¦  CREATE DATABASE LINK¦ Создавать личные связи баз данных     ¦
        ¦                      ¦ в своей схеме.                        ¦
        L======================¦=======================================-


12-2  Руководство администратора


        г==============================================================¬
        ¦ INDEX                                                        ¦
        ¦----------------------T---------------------------------------¦
        ¦  CREATE ANY INDEX    ¦ Создавать индекс (в любой схеме) по   ¦
        ¦                      ¦ любой таблице.                        ¦
        ¦----------------------+---------------------------------------¦
        ¦  ALTER ANY INDEX     ¦ Изменять любой индекс в базе данных.  ¦
        ¦----------------------+---------------------------------------¦
        ¦  DROP ANY INDEX      ¦ Удалять любой индекс в базе данных.   ¦
        ¦======================¦=======================================¦
        ¦ PRIVILEGE                                                    ¦
        ¦----------------------T---------------------------------------¦
        ¦  GRANT ANY PRIVILEGE ¦ Назначать любую системную привилегию  ¦
        ¦                      ¦ (не объектную привилегию).            ¦
        ¦======================¦=======================================¦
        ¦ PROCEDURE                                                    ¦
        ¦----------------------T---------------------------------------¦
        ¦  CREATE PROCEDURE    ¦ Создавать хранимые процедуры, функции ¦
        ¦                      ¦ и пакеты в своей схеме.               ¦
        ¦----------------------+---------------------------------------¦
        ¦  CREATE ANY PROCEDURE¦ Создавать хранимые процедуры, функции ¦
        ¦                      ¦ и пакеты в любой схеме. (Требует также¦
        ¦                      ¦ привилегий ALTER ANY TABLE, BACKUP ANY¦
        ¦                      ¦ TABLE, DROP ANY TABLE, LOCK ANY TABLE,¦
        ¦                      ¦ COMMENT ANY TABLE, SELECT ANY TABLE,  ¦
        ¦                      ¦ INSERT ANY TABLE, UPDATE ANY TABLE,   ¦
        ¦                      ¦ DELETE ANY TABLE или GRANT ANY TABLE.)¦
        ¦----------------------+---------------------------------------¦
        ¦  ALTER ANY PROCEDURE ¦ Изменять любую хранимую процедуру,    ¦
        ¦                      ¦ функцию или пакет в любой схеме.      ¦
        ¦----------------------+---------------------------------------¦
        ¦  DROP ANY PROCEDURE  ¦ Удалять любую хранимую процедуру,     ¦
        ¦                      ¦ функцию или пакет в любой схеме.      ¦
        ¦----------------------+---------------------------------------¦
        ¦  EXECUTE ANY         ¦ Выполнять любую процедуру или функцию ¦
        ¦  PROCEDURE           ¦ (независимую или пакетированную), или ¦
        ¦                      ¦ обращаться к любой общей переменной   ¦
        ¦                      ¦ в пакете в любой схеме.               ¦
        ¦======================¦=======================================¦
        ¦ PROFILE                                                      ¦
        ¦----------------------T---------------------------------------¦
        ¦  CREATE PROFILE      ¦ Создавать профили.                    ¦
        ¦----------------------+---------------------------------------¦
        ¦  ALTER PROFILE       ¦ Изменять любой профиль в базе данных. ¦
        ¦----------------------T---------------------------------------¦
        ¦  DROP PROFILE        ¦ Удалять любой профиль в базе данных.  ¦
        ¦----------------------+---------------------------------------¦
        ¦  ALTER RESOURCE COST ¦ Устанавливать стоимости для ресурсов, ¦
        ¦                      ¦ используемых в любых сессиях.         ¦
        ¦======================¦=======================================¦
        ¦ PUBLIC DATABASE LINK                                         ¦
        ¦----------------------T---------------------------------------¦
        ¦  CREATE PUBLIC       ¦ Создавать общие связи баз данных.     ¦
        ¦  DATABASE LINK       ¦                                       ¦
        ¦----------------------+---------------------------------------¦
        ¦  DROP PUBLIC         ¦ Удалять общие связи баз данных.       ¦
        ¦  DATABASE LINK       ¦                                       ¦
        L======================¦=======================================-





                                  Управление привилегиями и ролями  12-3


        г==============================================================¬
        ¦ PUBLIC SYNONYM                                               ¦
        ¦----------------------T---------------------------------------¦
        ¦  CREATE PUBLIC       ¦ Создавать общие синонимы.             ¦
        ¦  SYNONYM             ¦                                       ¦
        ¦----------------------+---------------------------------------¦
        ¦  DROP PUBLIC SYNONYM ¦ Удалять общие синонимы.               ¦
        ¦======================¦=======================================¦
        ¦ ROLE                                                         ¦
        ¦----------------------T---------------------------------------¦
        ¦  CREATE ROLE         ¦ Создавать роли.                       ¦
        ¦----------------------+---------------------------------------¦
        ¦  ALTER ANY ROLE      ¦ Изменять любую роль в базе данных.    ¦
        ¦----------------------+---------------------------------------¦
        ¦  DROP ANY ROLE       ¦ Удалять любую роль в базе данных.     ¦
        ¦----------------------+---------------------------------------¦
        ¦  GRANT ANY ROLE      ¦ Назначать любую роль в базе данных.   ¦
        ¦======================¦=======================================¦
        ¦ ROLLBACK SEGMENT                                             ¦
        ¦----------------------T---------------------------------------¦
        ¦  CREATE ROLLBACK     ¦ Создавать сегменты отката.            ¦
        ¦  SEGMENT             ¦                                       ¦
        ¦----------------------+---------------------------------------¦
        ¦  ALTER ROLLBACK      ¦ Изменять сегменты отката.             ¦
        ¦  SEGMENT             ¦                                       ¦
        ¦----------------------+---------------------------------------¦
        ¦  DROP ROLLBACK       ¦ Удалять сегменты отката.              ¦
        ¦  SEGMENT             ¦                                       ¦
        ¦======================¦=======================================¦
        ¦ SESSION                                                      ¦
        ¦----------------------T---------------------------------------¦
        ¦  CREATE SESSION      ¦ Соединяться с базой данных.           ¦
        ¦----------------------+---------------------------------------¦
        ¦  ALTER SESSION       ¦ Выдавать предложения ALTER SESSION.   ¦
        ¦----------------------+---------------------------------------¦
        ¦  RESTRICTED SESSION  ¦ Соединяться с базой данных, когда она ¦
        ¦                      ¦ запущена посредством STARTUP RESTRICT.¦
        ¦                      ¦ (Роли OSOPER и OSDBA содержат эту     ¦
        ¦                      ¦ привилегию.)                          ¦
        ¦======================¦=======================================¦
        ¦ SEQUENCE                                                     ¦
        ¦----------------------T---------------------------------------¦
        ¦  CREATE SEQUENCE     ¦ Создавать последовательность в своей  ¦
        ¦                      ¦ схеме.                                ¦
        ¦----------------------+---------------------------------------¦
        ¦  CREATE ANY SEQUENCE ¦ Создавать любую последовательность    ¦
        ¦                      ¦ в любой схеме.                        ¦
        ¦----------------------+---------------------------------------¦
        ¦  ALTER ANY SEQUENCE  ¦ Изменять любую последовательность     ¦
        ¦                      ¦ в любой схеме.                        ¦
        ¦----------------------+---------------------------------------¦
        ¦  DROP ANY SEQUENCE   ¦ Удалять любую последовательность      ¦
        ¦                      ¦ в любой схеме.                        ¦
        ¦----------------------+---------------------------------------¦
        ¦  SELECT ANY SEQUENCE ¦ Обращаться к любой последовательности ¦
        ¦                      ¦ в любой схеме.                        ¦
        L======================¦=======================================-






12-4  Руководство администратора


        г==============================================================¬
        ¦ SNAPSHOT                                                     ¦
        ¦----------------------T---------------------------------------¦
        ¦  CREATE SNAPSHOT     ¦ Создавать снимки в своей схеме.       ¦
        ¦                      ¦ (Нужна также привилегия CREATE TABLE.)¦
        ¦  CREATE ANY SNAPSHOT ¦ Создавать снимки в любой схеме. (Нужна¦
        ¦                      ¦ также привилегия CREATE ANY TABLE.)   ¦
        ¦  ALTER ANY SNAPSHOT  ¦ Изменять любой снимок в любой схеме.  ¦
        ¦  DROP ANY SNAPSHOT   ¦ Удалять любой снимок в любой схеме.   ¦
        ¦======================¦=======================================¦
        ¦ SYNONYM                                                      ¦
        ¦----------------------T---------------------------------------¦
        ¦  CREATE SYNONYM      ¦ Создавать синоним в своей схеме.      ¦
        ¦  CREATE ANY SYNONYM  ¦ Создавать любой синоним в любой схеме.¦
        ¦  DROP ANY SYNONYM    ¦ Удалять любой синоним в любой схеме.  ¦
        ¦======================¦=======================================¦
        ¦ SYSTEM                                                       ¦
        ¦----------------------T---------------------------------------¦
        ¦  ALTER SYSTEM        ¦ Выдавать предложения ALTER SYSTEM.    ¦
        ¦======================¦=======================================¦
        ¦ TABLE                                                        ¦
        ¦----------------------T---------------------------------------¦
        ¦  CREATE TABLE        ¦ Создавать таблицы в своей схеме. Также¦
        ¦                      ¦ позволяет создавать индексы (в том    ¦
        ¦                      ¦ числе для ограничений целостности) в  ¦
        ¦                      ¦ своей схеме. (Требуется квота для     ¦
        ¦                      ¦ табличного пространства или привилегия¦
        ¦                      ¦ UNLIMITED TABLESPACE.)                ¦
        ¦  CREATE ANY TABLE    ¦ Создавать таблицу в любой схеме. (Если¦
        ¦                      ¦ пользователь с этой привилегией созда-¦
        ¦                      ¦ ет таблицу в схеме другого пользовате-¦
        ¦                      ¦ ля, то используются квоты и умалчивае-¦
        ¦                      ¦ мое табличное пространство владельца. ¦
        ¦                      ¦ Если табличное пространство специфици-¦
        ¦                      ¦ ровано явно, то владелец должен иметь ¦
        ¦                      ¦ квоту на это табличное пространство.  ¦
        ¦                      ¦ Владелец таблицы не обязан иметь при- ¦
        ¦                      ¦ вилегию CREATE [ANY] TABLE.)          ¦
        ¦  ALTER ANY TABLE     ¦ Изменять любую таблицу в любой схеме  ¦
        ¦                      ¦ и компилировать любой обзор в любой   ¦
        ¦                      ¦ схеме.                                ¦
        ¦----------------------+---------------------------------------¦
        ¦  BACKUP ANY TABLE    ¦ Выполнять инкрементальный экспорт с   ¦
        ¦                      ¦ помощью утилиты Export.               ¦
        ¦----------------------+---------------------------------------¦
        ¦  DROP ANY TABLE      ¦ Удалять любую таблицу в любой схеме.  ¦
        ¦----------------------+---------------------------------------¦
        ¦  LOCK ANY TABLE      ¦ Блокировать любую таблицу или обзор   ¦
        ¦                      ¦ в любой схеме.                        ¦
        ¦----------------------+---------------------------------------¦
        ¦  BACKUP ANY TABLE    ¦ Выполнять инкрементальный экспорт с   ¦
        ¦                      ¦ помощью утилиты Export.               ¦
        ¦----------------------+---------------------------------------¦
        ¦  COMMENT ANY TABLE   ¦ Комментировать любую таблицу, обзор   ¦
        ¦                      ¦ или столбец в любой схеме.            ¦
        ¦----------------------+---------------------------------------¦
        ¦  SELECT ANY TABLE    ¦ Опрашивать любую таблицу, обзор или   ¦
        ¦                      ¦ снимок в любой схеме.                 ¦
        ¦----------------------+---------------------------------------¦
        ¦  INSERT ANY TABLE    ¦ Вставлять строки в любую таблицу или  ¦
        ¦                      ¦ обзор в любой схеме.                  ¦
        L======================¦=======================================-

                                  Управление привилегиями и ролями  12-5


        г======================T=======================================¬
        ¦  UPDATE ANY TABLE    ¦ Обновлять строки в любой таблице или  ¦
        ¦                      ¦ обзоре в любой схеме.                 ¦
        ¦----------------------+---------------------------------------¦
        ¦  DELETE ANY TABLE    ¦ Удалять строки в любой таблице или    ¦
        ¦                      ¦ обзоре в любой схеме; усекать любую   ¦
        ¦                      ¦ таблицу, кластер или индекс.          ¦
        ¦======================¦=======================================¦
        ¦ TABLESPACE                                                   ¦
        ¦----------------------T---------------------------------------¦
        ¦  CREATE TABLESPACE   ¦ Создавать табличные пространства;     ¦
        ¦                      ¦ добавлять файлы операционной системы  ¦
        ¦                      ¦ через ORACLE, независимо от привилегий¦
        ¦                      ¦ операционной системы.                 ¦
        ¦----------------------+---------------------------------------¦
        ¦  ALTER TABLESPACE    ¦ Изменять табличные пространства;      ¦
        ¦                      ¦ добавлять файлы операционной системы  ¦
        ¦                      ¦ через ORACLE, независимо от привилегий¦
        ¦                      ¦ операционной системы.                 ¦
        ¦----------------------+---------------------------------------¦
        ¦  MANAGE TABLESPACE   ¦ Переводить в онлайн или офлайн любое  ¦
        ¦                      ¦ табличное пространство; начинать и    ¦
        ¦                      ¦ заканчивать резервное копирование     ¦
        ¦                      ¦ любого табличного пространства.       ¦
        ¦----------------------+---------------------------------------¦
        ¦  DROP TABLESPACE     ¦ Удалять табличные пространства.       ¦
        ¦----------------------+---------------------------------------¦
        ¦  UNLIMITED TABLESPACE¦ Использовать неограниченную память в  ¦
        ¦                      ¦ ЛЮБОМ табличном пространстве. (Эта    ¦
        ¦                      ¦ привилегия перекрывает любые явные    ¦
        ¦                      ¦ квоты. При ее отзыве объекты схемы    ¦
        ¦                      ¦ владельца остаются, но им не может    ¦
        ¦                      ¦ распределяться дополнительная память, ¦
        ¦                      ¦ если нет явных квот. ЭТА СИСТЕМНАЯ    ¦
        ¦                      ¦ ПРИВИЛЕГИЯ МОЖЕТ НАЗНАЧАТЬСЯ ЛИШЬ     ¦
        ¦                      ¦ ПОЛЬЗОВАТЕЛЯМ, НО НЕ РОЛЯМ. ОБЫЧНО    ¦
        ¦                      ¦ ВМЕСТО ЭТОЙ ПРИВИЛЕГИИ НАЗНАЧАЮТСЯ    ¦
        ¦                      ¦ КВОТЫ ТАБЛИЧНЫХ ПРОСТРАНСТВ.)         ¦
        ¦======================¦=======================================¦
        ¦ TRANSACTION                                                  ¦
        ¦----------------------T---------------------------------------¦
        ¦  FORCE TRANSACTION   ¦ Форсировать подтверждение или откат   ¦
        ¦                      ¦ собственных сомнительных распределен- ¦
        ¦                      ¦ ных транзакций в локальной базе.      ¦
        ¦----------------------+---------------------------------------¦
        ¦  FORCE ANY           ¦ Форсировать подтверждение или откат   ¦
        ¦  TRANSACTION         ¦ любых сомнительных распределенных     ¦
        ¦                      ¦ транзакций в локальной базе данных.   ¦
        ¦======================¦=======================================¦
        ¦ TRIGGER                                                      ¦
        ¦----------------------T---------------------------------------¦
        ¦  CREATE TRIGGER      ¦ Создавать триггер в своей схеме.      ¦
        ¦----------------------+---------------------------------------¦
        ¦  CREATE ANY TRIGGER  ¦ Создавать любой триггер (в любой схе- ¦
        ¦                      ¦ ме), ассоциированный с любой таблицей ¦
        ¦                      ¦ в любой схеме.                        ¦
        ¦----------------------+---------------------------------------¦
        ¦  ALTER ANY TRIGGER   ¦ Включать, выключать или компилировать ¦
        ¦                      ¦ любой триггер в любой схеме.          ¦
        ¦----------------------+---------------------------------------¦
        ¦  DROP ANY TRIGGER    ¦ Удалять любой триггер в любой схеме.  ¦
        L======================¦=======================================-

12-6  Руководство администратора


        г==============================================================¬
        ¦ USER                                                         ¦
        ¦----------------------T---------------------------------------¦
        ¦  CREATE USER         ¦ Создавать пользователей; назначать    ¦
        ¦                      ¦ квоты на ЛЮБОЕ табличное пространство,¦
        ¦                      ¦ назначать умалчиваемое и временное    ¦
        ¦                      ¦ табличные пространства, и назначать   ¦
        ¦                      ¦ профиль как часть предложения CREATE  ¦
        ¦                      ¦ USER.                                 ¦
        ¦----------------------+---------------------------------------¦
        ¦  BECOME USER         ¦ Становиться другим пользователем.     ¦
        ¦                      ¦ (Требуется любому пользователю, вы-   ¦
        ¦                      ¦ полняющему полный импорт базы данных.)¦
        ¦----------------------+---------------------------------------¦
        ¦  ALTER USER          ¦ Изменять других пользователей: изме-  ¦
        ¦                      ¦ нять пароль или метод идентификации,  ¦
        ¦                      ¦ назначать квоты, устанавливать умалчи-¦
        ¦                      ¦ ваемое и временное табличные простран-¦
        ¦                      ¦ ства, назначать профили и умалчиваемые¦
        ¦                      ¦ роли через предложение ALTER USER.    ¦
        ¦                      ¦ (Не требуется для изменения своего    ¦
        ¦                      ¦ пароля.)                              ¦
        ¦----------------------+---------------------------------------¦
        ¦  DROP USER           ¦ Удалять других пользователей.         ¦
        ¦======================¦=======================================¦
        ¦ VIEW                                                         ¦
        ¦----------------------T---------------------------------------¦
        ¦  CREATE VIEW         ¦ Создавать обзор в своей схеме.        ¦
        ¦----------------------+---------------------------------------¦
        ¦  CREATE ANY VIEW     ¦ Создавать обзор в любой схеме.        ¦
        ¦                      ¦ (Требует, чтобы пользователь имел     ¦
        ¦                      ¦ привилегии ALTER ANY TABLE, BACKUP ANY¦
        ¦                      ¦ TABLE, DROP ANY TABLE, LOCK ANY TABLE,¦
        ¦                      ¦ COMMENT ANY TABLE, SELECT ANY TABLE,  ¦
        ¦                      ¦ INSERT ANY TABLE, UPDATE ANY TABLE,   ¦
        ¦                      ¦ DELETE ANY TABLE или GRANT ANY TABLE.)¦
        ¦----------------------+---------------------------------------¦
        ¦  DROP ANY VIEW       ¦ Удалять любой обзор в любой схеме.    ¦
        L======================¦=======================================-


        Поскольку системные  привилегии очень  мощны, следует  проявлять
        осторожность при назначении их ролям и доверенным пользователям.




















                                  Управление привилегиями и ролями  12-7


Объектные привилегии
--------------------

        Каждый тип объектов имеет различные привилегии,  ассоциированные
        с ним.  Табл.12-2  суммирует объектные привилегии,  существующие
        для каждого типа объектов.

Табл.12-2
Объектные привилегии

        г============T===========T===========T===========T=============¬
        ¦ Привилегия ¦ TABLE     ¦ VIEW      ¦ SEQUENCE  ¦ PROCEDURE   ¦
        ¦============+===========+===========+===========+=============¦
        ¦ ALTER      ¦   +       ¦           ¦   +       ¦             ¦
        ¦------------+-----------+-----------+-----------+-------------¦
        ¦ DELETE     ¦   +       ¦   +       ¦           ¦             ¦
        ¦------------+-----------+-----------+-----------+-------------¦
        ¦ EXECUTE    ¦           ¦           ¦           ¦   +*        ¦
        ¦------------+-----------+-----------+-----------+-------------¦
        ¦ INDEX      ¦   +**     ¦           ¦           ¦             ¦
        ¦------------+-----------+-----------+-----------+-------------¦
        ¦ INSERT     ¦   +       ¦   +       ¦           ¦             ¦
        ¦------------+-----------+-----------+-----------+-------------¦
        ¦ REFERENCES ¦   +**     ¦           ¦           ¦             ¦
        ¦------------+-----------+-----------+-----------+-------------¦
        ¦ SELECT     ¦   +       ¦   +***    ¦   +       ¦             ¦
        ¦------------+-----------+-----------+-----------+-------------¦
        ¦ UPDATE     ¦   +       ¦   +       ¦           ¦             ¦
        L============¦===========¦===========¦===========¦=============-

        *   Включает независимые хранимые процедуры и функции, а также
            общие конструкты пакетов.
        **  Привилегия не может быть назначена роли.
        *** Может также назначаться снимкам.


Назначение привилегий INSERT для столбцов

        Вы можете назначать привилегию INSERT на индивидуальные  столбцы
        в таблице.  Прежде чем назначать привилегию INSERT,  специфичную
        для  столбцов,  рассмотрите  возможные  побочные  эффекты;  если
        таблица имеет один или  несколько столбцов, объявленных как  NOT
        NULL,  то  выборочная  привилегия  INSERT,  не  включающая  этих
        столбцов,  не  имеет  смысла,  так  как  она  может не позволить
        получившему ее пользователю вставить в таблицу ни одной  строки.
        Чтобы предотвратить проблемы, проверьте, чтобы каждый столбец  с
        ограничением NOT NULL либо входил в привилегию INSERT, либо имел
        непустое умалчиваемое  значение; если  вы не  учтете это,  будет
        возвращаться ошибка, и строки не смогут быть вставлены.














12-8  Руководство администратора


Предложения, допускаемые каждой привилегией

        Табл.12-3  перечисляет  предложения  SQL,  которые   допускаются
        объектными привилегиями, перечисленными выше.

Табл.12-3
Предложения SQL, допускаемые объектными привилегиями базы данных

        г============T=================================================¬
        ¦ Привилегия ¦ Допустимые предложения SQL                      ¦
        ¦============+=================================================¦
        ¦ ALTER      ¦ ALTER объект (таблица или последовательность)   ¦
        ¦------------+-------------------------------------------------¦
        ¦ DELETE     ¦ DELETE FROM объект (таблица или обзор)          ¦
        ¦------------+-------------------------------------------------¦
        ¦ EXECUTE    ¦ EXECUTE объект (процедура или функция)          ¦
        ¦            ¦ Обращения к общим переменным в пакете           ¦
        ¦------------+-------------------------------------------------¦
        ¦ INDEX      ¦ CREATE INDEX ON объект (только таблицы)         ¦
        ¦------------+-------------------------------------------------¦
        ¦ INSERT     ¦ INSERT INTO объект (таблица или обзор)          ¦
        ¦------------+-------------------------------------------------¦
        ¦ REFERENCES ¦ Предложение CREATE или ALTER TABLE, определяющее¦
        ¦            ¦ ограничение целостности FOREIGN KEY по объекту  ¦
        ¦            ¦ (только таблицы)                                ¦
        ¦------------+-------------------------------------------------¦
        ¦ SELECT     ¦ SELECT ... FROM объект (таблица, обзор, снимок) ¦
        ¦            ¦ Предложения SQL, использующие последовательность¦
        ¦------------+-------------------------------------------------¦
        ¦ UPDATE     ¦ UPDATE объект (таблица или обзор)               ¦
        L============¦=================================================-


        В таблицу 12-2 включены не  все типы объектов схемы.  Многие  из
        объектов  схемы,  не  перечисленных  в  этой  таблице (такие как
        кластеры, индексы, триггеры  и связи баз  данных) контролируются
        исключительно  через  системные  привилегии.   Например,   чтобы
        изменить кластер, пользователь должен владеть этим кластером или
        иметь системную привилегию ALTER ANY CLUSTER.


Групповое обозначение объектных привилегий

        Обозначения  ALL  и  ALL  PRIVILEGES  в команде GRANT или REVOKE
        назначают или  отзывают все  возможные объектные  привилегии для
        объекта.   Эти  обозначения  сами  не являются привилегиями; это
        просто способ одним словом назначить или отозвать все  объектные
        привилегии.   Заметьте,  что,  если  все  объектные   привилегии
        назначены с помощью  обозначения ALL, индивидуальные  привилегии
        по-прежнему могут быть отозваны.

        Аналогично, все индивидуально назначенные привилегии могут  быть
        отозваны через обозначение ALL.  Однако, если вы выдаете  REVOKE
        ALL, и  отзыв всех  привилегий приводит  к удалению  ограничений
        целостности (зависящих  от привилегии  REFERENCES, которая  вами
        отзывается), то  вы должны  включить в  предложение REVOKE опцию
        CASCADE CONSTRAINTS.






                                  Управление привилегиями и ролями  12-9


----------------

Управление ролями

        Роль  группирует  несколько  привилегий  и  других  ролей,   что
        позволяет назначать или отзывать всю группу одновременно.   Роли
        могут включаться  или выключаться  для пользователя.   Следующие
        секции объясняют, как создавать, изменять, включать, выключать и
        удалять роли.


Создание ролей
--------------

        Для создания роли используйте  либо диалоговое окно Create  Role
        SQL*DBA,  либо  команду  SQL  CREATE  ROLE.  Рис.12-1 показывает
        диалоговое окно Create Role.

Рис.12-1
Диалог Create Role

        ---------------------------------------------------------------¬
        ¦ File  Edit  Session  Instance  Storage  Log  Backup  Security¦
        ¦--------------------------------------------------------------+
        ¦¦                                                             ¦
        ¦¦        г================= Create Role =================¬    ¦
        ¦¦        ¦                                               ¦    ¦
        ¦¦        ¦ Name: clerk-----------------------------------¦    ¦
        ¦¦        ¦                                               ¦    ¦
        ¦¦        ¦ (o) Use Password Authentication: bicentennial-¦    ¦
        ¦¦        ¦ ( ) Use OS Authentication                     ¦    ¦
        ¦¦        ¦ ( ) Use No Authentication                     ¦    ¦
        ¦¦        ¦                                               ¦    ¦
        ¦¦        ¦-----------------------------------------------¦    ¦
        ¦+--------¦    Mandatory            (OK)  (Cancel)        ¦----+
        ¦¦        L===============================================-    ¦
        ¦¦                                                             ¦
        ¦¦                                                             ¦
        ¦L-------------------------------------------------------------+
        L---------------------------------------------------------------

        Следующее    предложение    является    командным   эквивалентом
        диалогового окна Create Role, показанного на рис.12-1:

        CREATE ROLE clerk IDENTIFIED BY bicentennial;

        Вы должны  давать каждой  создаваемой вами  роли уникальное  имя
        среди всех имен  пользователей и ролей  в базе данных.   Роли не
        содержатся ни в какой схеме.

        Непосредственно  после  создания  роль  "пуста";  она  не  имеет
        никаких ассоциированных с ней привилегий.  Чтобы ассоциировать с
        новой ролью привилегии, вы должны назначить этой роли привилегии
        или другие роли.  Эта процедура обсуждается в секции "Назначение
        и отзыв привилегий и ролей" на странице 12-15.


Имена ролей в мультибайтовых наборах символов

        Для  баз  данных,  использующих  мультибайтовый  набор символов,
        фирма Oracle рекомендует, чтобы  каждое имя роли содержало  хотя
        бы один однобайтовый  символ.  Если имя  роли состоит только  из

12-10  Руководство администратора


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


Авторизация роли

        Можно,  хотя  и  необязательно,  потребовать удостоверения роли,
        когда  пользователь  пытается  включить  ее.   Это удостоверение
        может  осуществляться  либо  базой  данных (через пароли), либо,
        если позволяет операционная система, через операционную систему.

    Авторизация базой данных

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

        Замечание:  В  базе  данных,  использущей  мультибайтовый  набор
        символов, пароли для  ролей должны включать  только однобайтовые
        символы.  Мультибайтовые символы в паролях не допускаются.

    Авторизация операционной системой

        По контрасту с предыдущим, следующее предложение создает роль  с
        именем   ACCTS_REC   и   требует,   чтобы   она   удостоверялась
        операционной системой:

        CREATE ROLE accts_rec IDENTIFIED EXTERNALLY;

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

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

        Если  роли  назначаются  самой  операционной системой (т.е. если
        OS_ROLES =  TRUE; см.  страницу 12-22),  то не  требуется, чтобы
        операционная система также идентифицировала их; это излишне.

        Замечание: Если  пользователи соединяются  с базой  данных через
        многоканальный   сервер,   по   умолчанию   их   роли   не могут
        идентифицироваться  операционной   системой.   Это   ограничение
        принято по умолчанию для  того, чтобы удаленный пользователь  не
        мог  внедрить  пользователя  другой  операционной  системы через
        сетевое соединение.

        Если вы  не озабочены  проблемами защиты  и хотите  использовать
        авторизацию   ролей   операционной   системой   с многоканальным
        сервером, установите параметр REMOTE_OS_ROLES в значение TRUE в



                                 Управление привилегиями и ролями  12-11


        файле параметров базы данных.  Это изменение начнет  действовать
        при  очередном  запуске  инстанции  и  монтировании базы данных.
        (Этот параметр по умолчанию имеет значение FALSE.)

    Без авторизации

        Роль может также быть создана без авторизации.  Такую роль может
        включать  или   выключать  любой   пользователь,  которому   она
        назначена.

Использование предопределенных ролей
        Роли, перечисленные  в табл.12-4,  автоматически определены  для
        баз  данных  ORACLE.   Эти  роли предусмотрены для совместимости
        сверху  вниз  с  более  ранними  версиями  ORACLE.   Вы   можете
        назначать и отзывать привилегии и роли для этих предопределенных
        ролей точно так же, как  и для любых других ролей,  определяемых
        вами.

Табл.12-4
Предопределенные роли
г=======================T==============================================¬
¦ Имя роли              ¦ Привилегии, назначенные роли                 ¦
¦=======================+==============================================¦
¦ CONNECT (1)           ¦ ALTER SESSION, CREATE CLUSTER, CREATE DATA-  ¦
¦                       ¦ BASE LINK, CREATE SEQUENCE, CREATE SESSION,  ¦
¦                       ¦ CREATE SYNONYM, CREATE TABLE, CREATE VIEW    ¦
¦-----------------------+----------------------------------------------¦
¦ RESOURCE (1,2)        ¦ CREATE CLUSTER, CREATE PROCEDURE, CREATE     ¦
¦                       ¦ SEQUENCE, CREATE TABLE, CREATE TRIGGER       ¦
¦-----------------------+----------------------------------------------¦
¦ DBA (1,3,4)           ¦ Все системные привилегии с опцией ADMIN      ¦
¦-----------------------+----------------------------------------------¦
¦ EXP_FULL_DATABASE (5) ¦ SELECT/BACKUP ANY TABLE, INSERT, DELETE и    ¦
¦                       ¦ UPDATE по таблицам: SYS.INCVID,INCFIL,INCEXP ¦
¦-----------------------+----------------------------------------------¦
¦ IMP_FULL_DATABASE (5) ¦ BECOME USER, WRITEDOWN (6)                   ¦
L=======================¦==============================================-

        (1) создается скриптом SQL.BSQ
        (2) получатель роли RESOURCE получает также системную привилегию
            UNLIMITED TABLESPACE через явный грант (не как часть роли
            RESOURCE)
        (3) получатель роли DBA получает также системную привилегию
            UNLIMITED TABLESPACE через явный грант (не как часть роли
            DBA)
        (4) включает также роли EXP_FULL_DATABASE и IMP_FULL_DATABASE,
            если был выполнен скрипт CATEXP.SQL
        (5) создается скриптом CATEXP.SQL
        (6) привилегия только Trusted ORACLE; см. документ Trusted
            ORACLE7 Server Administrator's Guide

Привилегии, требуемые для создания ролей
        Для создания  роли вы  должны иметь  системную привилегию CREATE
        ROLE.  Обычно  эта системная  привилегия предоставляется  только
        администраторам защиты.

Изменение метода авторизации роли
---------------------------------

        Для установки  и изменения  метода авторизации  роли используйте
        либо диалоговое окно Alter Role SQL*DBA, либо команду SQL  ALTER
        ROLE.  Рис.12-2 показывает диалоговое окно Alter Role.

12-12  Руководство администратора


Рис.12-2
Диалог Alter Role

        ---------------------------------------------------------------¬
        ¦ File  Edit  Session  Instance  Storage  Log  Backup  Security¦
        ¦--------------------------------------------------------------+
        ¦¦        г================= Alter Role ==================¬    ¦
        ¦¦        ¦ Role:                                         ¦    ¦
        ¦¦        ¦ --------------------------------------------¬ ¦    ¦
        ¦¦        ¦ ¦ CLERK                                     ¦ ¦    ¦
        ¦¦        ¦ ¦ CONNECT                                   ¦ ¦    ¦
        ¦¦        ¦ ¦ DBA                                       ¦ ¦    ¦
        ¦¦        ¦ L-------------------------------------------- ¦    ¦
        ¦¦        ¦ ( ) Change Password to: ----------------      ¦    ¦
        ¦¦        ¦ (o) Change to OS Authentication               ¦    ¦
        ¦¦        ¦ ( ) Change to No Authentication               ¦    ¦
        ¦¦        ¦-----------------------------------------------¦    ¦
        ¦+--------¦    Mandatory            (OK)  (Cancel)        ¦----+
        ¦¦        L===============================================-    ¦
        ¦¦                                                             ¦
        ¦L-------------------------------------------------------------+
        L---------------------------------------------------------------

        Следующее    предложение    является    командным   эквивалентом
        диалогового окна Alter Role, показанного на рис.12-2:

        ALTER ROLE clerk IDENTIFIED EXTERNALLY;

        Для дополнительной  информации об  авторизации ролей  см. секцию
        "Авторизация роли" на странице 12-11.

Привилегии, требуемые для изменения авторизации ролей

        Для  изменения  метода  авторизации  роли  вы  должны либо иметь
        системную привилегию  ALTER ANY  ROLE, либо  данная роль  должна
        была быть вам назначена с опцией WITH ADMIN OPTION.

Изменение умалчиваемых ролей пользователя
-----------------------------------------

        Для установки и изменения списка умалчиваемых ролей пользователя
        можно использовать либо диалоговое окно Alter User SQL*DBA, либо
        команду SQL ALTER USER.  См. "Измение пользователей" на странице
        11-11 для дополнительной информации об этих возможностях.

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

Параметр MAX_ENABLED_ROLES

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

                                 Управление привилегиями и ролями  12-13


        имени каждой пользовательской сессии; причина этого в том, что в
        области PGA для каждой  сессии требуется четыре байта  на каждую
        роль.  Определите максимальное число ролей, которое  потребуется
        одновременно включать для одного пользователя, и используйте это
        значение для параметра MAX_ENABLED_ROLES.


Удаление ролей
--------------

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

        Поскольку создание объектов не зависит от привилегий, полученных
        через роль, таблицы и  другие объекты не удаляются  при удалении
        роли.

        Для удаления  роли используйте  либо диалоговое  окно Drop  Role
        SQL*DBA,  либо  команду  SQL  DROP  ROLE.   Рис.12-3  показывает
        диалоговое окно Drop Role.

Рис.12-3
Диалог Drop Role

        ---------------------------------------------------------------¬
        ¦ File  Edit  Session  Instance  Storage  Log  Backup  Security¦
        ¦--------------------------------------------------------------+
        ¦¦                                                             ¦
        ¦¦        г================= Drop Role ===================¬    ¦
        ¦¦        ¦                                               ¦    ¦
        ¦¦        ¦ Role:                                         ¦    ¦
        ¦¦        ¦ --------------------------------------------¬ ¦    ¦
        ¦¦        ¦ ¦ CLERK                                     ¦ ¦    ¦
        ¦¦        ¦ ¦ CONNECT                                   ¦ ¦    ¦
        ¦¦        ¦ ¦ DBA                                       ¦ ¦    ¦
        ¦¦        ¦ ¦ RESOURCE                                  ¦ ¦    ¦
        ¦¦        ¦ L-------------------------------------------- ¦    ¦
        ¦¦        ¦                                               ¦    ¦
        ¦¦        ¦-----------------------------------------------¦    ¦
        ¦+--------¦    Mandatory            (OK)  (Cancel)        ¦----+
        ¦¦        L===============================================-    ¦
        ¦¦                                                             ¦
        ¦¦                                                             ¦
        ¦L-------------------------------------------------------------+
        L---------------------------------------------------------------

        Следующее    предложение    является    командным   эквивалентом
        диалогового окна Drop Role, показанного на рис.12-3:

        DROP ROLE clerk;


Привилегии, требуемые для удаления ролей

        Для удаления роли вы должны либо иметь системную привилегию DROP
        ANY ROLE,  либо данная  роль должна  была быть  вам назначена  с
        опцией ADMIN OPTION.

12-14  Руководство администратора


----------------

Назначение и отзыв привилегий и ролей

        Эта  секция  объясняет,  как  назначать  и  отзывать   системные
        привилегии, роли и объектные привилегии.


Назначение системных привилегий и ролей
---------------------------------------

        Для  назначения  системных  привилегий  и  ролей  другим ролям и
        пользователям  используйте  либо  диалоговое  окно  Grant System
        Privileges/Roles  SQL*DBA,  либо  команду  SQL  GRANT.  Рис.12-4
        показывает диалоговое окно Grant System Privileges/Roles.

Рис.12-4
Диалог Grant System Privileges/Roles

        ---------------------------------------------------------------¬
        ¦ File  Edit  Session  Instance  Storage  Log  Backup  Security¦
        ¦--------------------------------------------------------------+
        ¦¦                                                             ¦
        ¦¦    г=========== Grant System Privileges/Roles =========¬    ¦
        ¦¦    ¦                                                   ¦    ¦
        ¦¦    ¦ Grant: create session, accts_pay----------------- ¦    ¦
        ¦¦    ¦                                                   ¦    ¦
        ¦¦    ¦    To: jward, finance---------------------------- ¦    ¦
        ¦¦    ¦                                                   ¦    ¦
        ¦¦    ¦ [ ] Allow grantee to grant the privilege(s)/role(s¦    ¦
        ¦¦    ¦                                                   ¦    ¦
        ¦¦    ¦---------------------------------------------------¦    ¦
        ¦¦    ¦ List, Mandatory                  (OK)  (Cancel)   ¦    ¦
        ¦¦    L===================================================-    ¦
        ¦¦                                                             ¦
        ¦+-------------------------------------------------------------+
        ¦¦                                                             ¦
        ¦¦                                                             ¦
        ¦L-------------------------------------------------------------+
        L---------------------------------------------------------------

        Следующее    предложение    является    командным   эквивалентом
        диалогового окна Grant  System Privileges/Roles, показанного  на
        рис.12-4:

        GRANT create session, accts_pay
            TO jward, finance;

        Замечание:  Объектные  привилегии  НЕЛЬЗЯ  назначать  вместе   в
        системными привилегиями и ролями в одном предложении GRANT.


Опция ADMIN

        Системная  привилегия  или  роль  может  быть назначена с опцией
        ADMIN OPTION.  (Нельзя включать опцию ADMIN OPTION в предложение
        GRANT, назначающее роль другой роли.)  Пользователь,  получивший
        эту специальную опцию, имеет несколько расширенных возможностей:

            *  Он может назначать или отзывать эту системную  привилегию
               или роль у  ЛЮБОГО пользователя или  роли в базе  данных.
               (Однако он не может отозвать эту роль у самого себя.)

                                 Управление привилегиями и ролями  12-15


            *  Он  может  далее  назначать  эту системную привилегию или
               роль с опцией ADMIN OPTION.

            *  Если это роль, он может изменить или удалить эту роль.

        Пользователь,  не  получивший  опцию  ADMIN  OPTION,  не   может
        выполнять таких операций.

        Когда  пользователь   создает  роль,   эта  роль   автоматически
        назначается ее создателю с опцией ADMIN OPTION.

        Предположим,  что  администратор  защиты  назначает роль NEW_DBA
        пользователю MICHAEL с помощью следующего предложения:

        GRANT new_dba TO michael WITH ADMIN OPTION;

        Пользователь  MICHAEL  может  теперь  не только использовать все
        привилегии,  подразумеваемые  ролью  NEW_DBA,  но  может   также
        назначать,  отзывать   или  удалять   роль  NEW_DBA   по  своему
        усмотрению.  Из-за этих широких возможностей, будьте  осторожны,
        назначая системные  привилегии или  роли с  опцией ADMIN OPTION.
        Такие  возможности   обычно  резервируются   для  администратора
        защиты,  и  редко  предоставляются  другим  администраторам  или
        пользователям системы.

Привилегии, требуемые для назначения системных привилегий или ролей

        Для  назначения  системной  привилегии  или  роли   пользователю
        требуется опция ADMIN OPTION  для всех назначаемых им  системных
        привилегий  и  ролей.   Кроме  того,  пользователь  с  системной
        привилегией GRANT  ANY ROLE  может назначать  любую роль  в базе
        данных.


Назначение объектных привилегий
-------------------------------

        Объектные привилегии могут  назначаться ролям и  пользователям с
        помощью  команды  SQL  GRANT.   Например,  следующее предложение
        назначает объектные привилегии SELECT, INSERT и DELETE для  всех
        столбцов таблицы EMP пользователям JWARD и TSMITH:

        GRANT select, insert, delete ON emp TO jward, tsmith;

        Чтобы назначить объектную привилегию INSERT только для  столбцов
        ENAME и JOB таблицы EMP тем же пользователям, введите  следующее
        предложение:

        GRANT insert(ename, job) ON emp TO jward, tsmith;

        Чтобы  назначить  все  объектные  привилегии  по  обзору  SALARY
        пользователю WALLEN, используйте обозначение ALL:

        GRANT ALL ON salary TO wallen;

        Замечание:  Объектные  привилегии  НЕЛЬЗЯ  назначать  вместе   в
        системными привилегиями и ролями в одном предложении GRANT.






12-16  Руководство администратора


Опция GRANT OPTION

        Объектная привилегия может быть назначена пользователю с  опцией
        GRANT OPTION.  Пользователь,  получивший эту специальную  опцию,
        имеет несколько расширенных возможностей:

            *  Он  может  назначать  эту  объектную  привилегию   любому
               пользователю или роли в базе данных.

            *  Он  может  далее  назначать  эту  объектную  привилегию с
               опцией GRANT OPTION или без таковой.

            *  Если он получил объектные привилегии для таблицы с опцией
               GRANT OPTION, и он имеет системную привилегию CREATE VIEW
               или CREATE ANY VIEW, то он может создавать обзоры по этой
               таблице, и назначать соответствующие привилегии по  этому
               обзору любому пользователю или роли в базе данных.

        Пользователь,  схема  которого  содержит  объект,  автоматически
        имеет все ассоциированные объектные привилегии для этого объекта
        с опцией GRANT OPTION.

        Особо  заметьте,   что  опция   GRANT  OPTION   недопустима  при
        назначении  объектной  привилегии  РОЛИ.   ORACLE  предотвращает
        распространение  объектных  привилегий   через  роли,  так   что
        получатели  роли  не  могут  дальше  продвигать  свои  объектные
        привилегии, полученные через роли.


Привилегии, требуемые для назначения объектных привилегий

        Чтобы  назначить  кому-либо  объектную  привилегию,  вы   должны
        удовлетворять одному из следующих условий:

            *  Владеть соответствующим объектом.

            *  Иметь  для  объектных   привилегий,  которые  вы   хотите
               назначить, опцию GRANT OPTION.


Отзыв системных привилегий и ролей
----------------------------------

        Для  отзыва  системных  привилегий  и/или ролей используйте либо
        диалоговое  окно  Revoke  System  Privileges/Roles SQL*DBA, либо
        команду SQL REVOKE.  Рис.12-5 показывает диалоговое окно  Revoke
        System Privileges/Roles.
















                                 Управление привилегиями и ролями  12-17


Рис.12-5
Диалог Revoke System Privileges/Roles

        ---------------------------------------------------------------¬
        ¦ File  Edit  Session  Instance  Storage  Log  Backup  Security¦
        ¦--------------------------------------------------------------+
        ¦¦                                                             ¦
        ¦¦    г========== Revoke System Privileges/Roles =========¬    ¦
        ¦¦    ¦                                                   ¦    ¦
        ¦¦    ¦ Revoke: create table, accts_rec------------------ ¦    ¦
        ¦¦    ¦                                                   ¦    ¦
        ¦¦    ¦   From: tsmith, finance-------------------------- ¦    ¦
        ¦¦    ¦                                                   ¦    ¦
        ¦¦    ¦---------------------------------------------------¦    ¦
        ¦¦    ¦ List, Mandatory                  (OK)  (Cancel)   ¦    ¦
        ¦¦    L===================================================-    ¦
        ¦+-------------------------------------------------------------+
        ¦¦                                                             ¦
        ¦¦                                                             ¦
        ¦L-------------------------------------------------------------+
        L---------------------------------------------------------------

        Следующее    предложение    является    командным   эквивалентом
        диалогового окна Revoke System Privileges/Roles, показанного  на
        рис.12-5:

        REVOKE create table, accts_rec FROM tsmith, finance;

        Замечание: Нельзя отобрать лишь опцию ADMIN OPTION для системной
        привилегии или роли, не отбирая самой этот системной  привилегии
        или роли; чтобы сделать  это, отзовите системную привилегию  или
        роль и заново назначьте ее без опции ADMIN OPTION.


Привилегии, требуемые для отзыва системных привилегий и ролей

        Любой  пользователь,  имеющий  опцию  ADMIN OPTION для системной
        привилегии или роли, может отозвать эту системную привилегию или
        роль у любого пользователя  или роли базы данных  (не требуется,
        чтобы пользователь, у которого отзывается привилегия или роль, в
        свое время получил ее у отзывающего пользователя).  Кроме  того,
        любой пользователь с системной привилегией GRANT ANY ROLE  может
        отозвать любую роль.


Отзыв объектных привилегий
--------------------------

        Объектные  привилегии  можно  отзывать  с  помощью  команды  SQL
        REVOKE.   Например,   предполагая  что   вы  предоставляли   эти
        привилегии, чтобы отозвать привилегии SELECT и INSERT по таблице
        EMP  от   пользователей  JWARD   и  TSMITH,   введите  следующее
        предложение:

        REVOKE select, insert ON emp
            FROM jward, tsmith;

        Вы можете также  отозвать все привилегии  по таблице DEPT  (даже
        если вы назначали лишь  одну привилегию), назначенные вами  роли
        HUMAN_RESOURCES, введя следующее предложение:

        REVOKE ALL ON dept FROM human_resources;

12-18  Руководство администратора


        Замечание:  Предложение,  показанное   выше,  отзовет  лишь   те
        привилегии, на которые вы имеете соответствующие полномочия,  но
        не  все  привилегии,  которые  были  назначены  другими.  Нельзя
        выборочно отозвать опцию GRANT OPTION, не отзывая привилегию  на
        объект; чтобы сделать это, следует отозвать объектную привилегию
        и заново назначить ее  без опции GRANT OPTION.   Пользователь не
        может отозвать объектную привилегию у самого себя.


Отзыв выборочных объектных привилегий для столбцов

        Хотя пользователи могут назначать выборочные привилегии  SELECT,
        UPDATE и REFERENCES по отдельным столбцам таблиц и обзоров,  они
        не  могут  выборочно   отзывать  такие  привилегии   аналогичным
        предложением  REVOKE.   Вместо  этого,  следует сначала отозвать
        объектную  привилегию  по  всем  столбцам  таблицы или обзора, а
        затем  вновь  выборочно  назначить  привилегии  по тем столбцам,
        которые должны остаться.

        Например, предположим, что  роли HUMAN_RESOURCES была  назначена
        привилегия  UPDATE  по  столбцам  DEPTNO  и  DNAME таблицы DEPT.
        Чтобы отозвать привилегию UPDATE по столбцу DEPTNO и оставить ее
        по столбцу DNAME, вы должны ввести следующие два предложения:

        REVOKE UPDATE ON dept FROM human_resources;
        GRANT UPDATE (dname) ON dept TO human_resources;

        Здесь  предложение  REVOKE  отзывает  привилегию  UPDATE по всем
        столбцам  таблицы  DEPT  от  роли  HUMAN_RESOURCES.  Предложение
        GRANT заново  назначает привилегию  UPDATE по  столбцу DNAME для
        этой роли.


Отзыв объектной привилегии REFERENCES

        Если пользователь, получивший привилегию REFERENCES, использовал
        эту привилегию для создания ограничения внешнего ключа  (которое
        существует в  данный момент),  то пользователь,  назначавший эту
        привилегию, может отозвать ее, лишь специфицировав в предложении
        REVOKE опцию CASCADE CONSTRAINTS, например:

        REVOKE REFERENCES ON dept FROM jward CASCADE CONSTRAINTS;

        Когда специфицирована опция CASCADE CONSTRAINTS, все ограничения
        внешних ключей,  использующие отзываемую  привилегию REFERENCES,
        удаляются.


Привилегии, требуемые для отзыва объектных привилегий

        Для отзыва  объектной привилегии  требуется, чтобы  вы были  тем
        лицом, которое назначало эту объектную привилегию.


Каскадные эффекты отзыва привилегий
-----------------------------------

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



                                 Управление привилегиями и ролями  12-19


Системные привилегии

        При  отзыве  системной  привилегии,  относящейся к операции DDL,
        каскадных эффектов не  бывает, независимо от  того, была ли  эта
        привилегия   назначена   с   опцией   ADMIN   OPTION.  Например,
        предположим следующее:

        1. Администратор защиты  назначает пользователю  JWARD системную
           привилегию CREATE TABLE с опцией ADMIN OPTION.

        2. JWARD создает таблицу.

        3. JWARD   назначает    системную   привилегию    CREATE   TABLE
           пользователю TSMITH.

        4. TSMITH создает таблицу.

        5. Администратор защиты отзывает у пользователя JWARD  системную
           привилегию CREATE TABLE.

        6. Таблица пользователя  JWARD продолжает  существовать.  TSMITH
           по-прежнему имеет  системную привилегию  CREATE TABLE,  и его
           таблица по-прежнему существует.

        Каскадные   эффекты   можно   наблюдать   при   отзыве системной
        привилегии,   связанной   с   операцией   DML.   Например,  если
        пользователю  назначена  привилегия  SELECT  ANY  TABLE,  и этот
        пользователь  создал  какие-либо  процедуры,  то все процедуры в
        схеме  этого  пользователя  должны  быть  заново откомпилированы
        после  отзыва  этой  привилегии,  прежде  чем  их  можно   будет
        использовать вновь.


Объектные привилегии

        Отзыв  объектной  привилегии  может  привести к нескольким типам
        каскадных эффектов, которые  должны быть исследованы  перед тем,
        как будет выдано предложение REVOKE:

            *  При отзыве объектной привилегии DML могут быть  затронуты
               определения   объектов,   зависящих   от   этой объектной
               привилегии DML. Например, предположим, что тело процедуры
               TEST включает предложение SQL, которое опрашивает таблицу
               EMP. Если привилегия SELECT по таблице EMP будет отозвана
               у владельца таблицы EMP, то процедура перестанет  успешно
               выполняться.

            *  Определения объектов, требующие объектных привилегий  DDL
               ALTER и INDEX, не затрагиваются при отзыве этих объектных
               привилегий   ALTER   и   INDEX.    Например,   при отзыве
               привилегии INDEX у пользователя, создавшего индекс по  не
               своей    таблице,    этот    индекс    будет  по-прежнему
               существовать.

            *  При  отзыве  у  пользователя  привилегии  REFERENCES   по
               таблице,  все  ограничения  внешних  ключей, которые были
               созданы с  использованием этой  привилегии, автоматически
               удаляются.  Например, предположим, что пользователь JWARD
               получил привилегию REFERENCES  по столбцу DEPTNO  таблицы
               DEPT, и  создал внешний  ключ по  столбцу DEPTNO  таблицы
               EMP,  ссылающийся  на  столбец  DEPT.DEPTNO.   При отзыве
               привилегии  REFERENCES  по  столбцу  DEPTNO  таблицы DEPT

12-20  Руководство администратора


               ограничение внешнего ключа по столбцу DEPTNO таблицы  EMP
               будет автоматически удалено той же операцией.

            *  Гранты  (назначения)  объектных  привилегий, которые были
               распространены    с    помощью    опции    GRANT  OPTION,
               автоматически отзываются при отзыве объектной  привилегии
               у  того,   кто  имел   опцию  GRANT   OPTION.   Например,
               предположим,  что  пользователь  USER1  получил объектную
               привилегию  SELECT  с  опцией  GRANT  OPTION,  и назначил
               привилегию  SELECT  по  таблице  EMP  пользователю USER2.
               Впоследствии  привилегия  SELECT  у  пользователя   USER1
               отзывается.  Этот  отзыв каскадно  распространяется и  на
               пользователя  USER2.   Все  объекты,  которые зависели от
               отозванных привилегий SELECT пользователей USER1 и USER2,
               будут   также   затронуты,   как   описано   в предыдущих
               подпунктах.


Назначение и отзыв привилегий и ролей для группы PUBLIC
-------------------------------------------------------

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

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

        Отзыв  прав  у  PUBLIC  может  повлечь  за  собой   значительные
        каскадные  эффекты,  в  зависимости  от  того,  какая привилегия
        отзывается.   Если   у  PUBLIC   отзывается  любая   привилегия,
        связанная с  операцией DML  (например, SELECT  ANY TABLE, UPDATE
        ON, и т.п.), то все  процедуры в базе данных (включая  функции и
        пакеты) должны  быть заново  АВТОРИЗОВАНЫ, прежде  чем их  можно
        будет   использовать   снова   (см.    "Управление зависимостями
        объектов" на странице 8-75).  Поэтому будьте осторожны, назначая
        группе PUBLIC привилегии, связанные с операциями DML.


Когда имеют эффект назначения и отзывы?
---------------------------------------

        В зависимости  от того,  что назначается  или отзывается, эффект
        этой операции может проявляться в различные моменты:

            *  Все назначения/отзывы привилегий (системных и  объектных)
               кому  угодно  (пользователям,  ролям, PUBLIC) наблюдаются
               немедленно.

            *  Все назначения/отзывы  ролей кому  угодно (пользователям,
               ролям, PUBLIC) наблюдаются  лишь после того,  как текущая
               сессия  пользователя  выдает  предложение  SET  ROLE  для
               повторного включения роли, или при создании новой  сессии
               пользователя.




                                 Управление привилегиями и ролями  12-21


----------------

Назначение ролей через операционную систему

        Вместо явного назначения  и отзыва администратором  защиты ролей
        базы данных другим ролям  и пользователям с помощью  предложений
        GRANT  и  REVOKE,  можно  использовать  возможности операционной
        системы,   которая   назначает   роли   пользователям   в момент
        установления  соединения;  роли  могут  управляться операционной
        системой  и  передаваться  ORACLE,  когда  пользователь  создает
        сессию.   Как  часть  этого  механизма,  можно  идентифицировать
        умалчиваемые роли каждого пользователя, а также те роли, которые
        назначаются пользователю  с опцией  ADMIN OPTION.   Однако, даже
        если операционная система используется для авторизации ролей для
        пользователей, все  роли должны  быть созданы  в базе  данных, и
        привилегии  должны  быть  назначены  им предложениями GRANT, как
        обычно.

        Преимущество использования операционной системы для  авторизации
        пользовательских   ролей   состоит   в   том,   что   управление
        привилегиями  выносится  из  базы  данных ORACLE; это управление
        осуществляется  средствами  защиты,  предлагаемыми  операционной
        системой.   Эта  возможность  может  предоставлять  преимущества
        централизованной   защиты   для   многих   системных   операций.
        Например, в операционной системе MVS администраторы ORACLE могут
        идентифицировать роли пользователей в базе данных группами RACF,
        в системе UNIX - группами пользователей UNIX, а в системе VMS  -
        идентификаторами прав.

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

        Вторым недостатком  этого метода  является то,  что по умолчанию
        пользователи  не   могут  соединяться   с  базой   данных  через
        многоканальный  сервер,   если  ролями   управляет  операционная
        система.   Однако   вы  можете   изменить  это   умолчание;  см.
        "Использование  многоканального  сервера  при  управлении ролями
        операционной системой" на странице 12-24.

        Замечание: Возможности, описанные в этой секции, доступны лишь в
        некоторых  операционных  системах.   Эта  информация  зависит от
        операционной  системы;  обратитесь   к  вашему  руководству   по
        инсталляции [IUG].


Использование авторизации ролей операционной системой
-----------------------------------------------------

        Чтобы конфигурировать  базу данных  так, чтобы  она использовала
        операционную систему для  авторизации всех ролей  пользователя в
        базе   данных   при   создании   сессии,   установите   параметр
        инициализации OS_ROLES в  TRUE (и перезапустите  инстанцию, если
        она  в  данный  момент  работает).   Когда пользователь пытается
        создать сессию с базой  данных, ORACLE инициализирует его  домен
        защиты,   используя   роли   базы   данных,   идентифицированные
        операционной системой.



12-22  Руководство администратора


        Для идентификации ролей пользователя в базе данных, учетное  имя
        каждого  пользователя  в   операционной  системе  должно   иметь
        идентификаторы   операционной   системы   (называемые  группами,
        идентификаторами прав, или  еще как-нибудь), которые  указывают,
        какие роли базы данных должны быть доступны этому  пользователю.
        Спецификации ролей  могут также  указывать, какие  роли являются
        умалчиваемыми для пользователя, и какие роли предоставляются ему
        с опцией ADMIN OPTION.   Независимо от того, какая  операционная
        система используется,  спецификация роли  базы данных  на уровне
        операционной системы имеет следующий формат:

        ORA__[_[D][A]]

        где:

        ID     ID обозначает разные вещи в разных операционных системах.
               Например, в системе VMS это идентификатор инстанции  базы
               данных; в системе MVS это тип машины; в системе UNIX  это
               системный идентификатор.

        D      Этот  необязательный  символ  указывает,  что данная роль
               должна быть умалчиваемой ролью пользователя базы данных.

        A      Этот  необязательный  символ  указывает,  что данная роль
               должна назначаться  пользователю с  опцией ADMIN  OPTION.
               Это  позволяет  пользователю  назначать  эту  роль другим
               ролям (но не пользователям).  (Роли не могут  назначаться
               пользователям, когда  для управления  ролями используется
               операционная система.)

        Замечание:  Если  присутствуют  символы  D  или  A,  им   должен
        предшествовать символ подчеркивания.

        Например, учетное имя операционной системы может иметь следующие
        роли, идентифицированные в его профиле операционной системы:

        ORA_PAYROLL_ROLE1
        ORA_PAYROLL_ROLE2_A
        ORA_PAYROLL_ROLE3_D
        ORA_PAYROLL_ROLE4_DA

        Когда  соответствующий  пользователь  соединяется  с  инстанцией
        PAYROLL, роли ROLE3  и ROLE4 будут  его умалчиваемыми ролями,  а
        роли ROLE2 и ROLE4 будут доступны с опцией ADMIN OPTION.


Назначение и отзыв ролей в режиме OS_ROLES = TRUE
-------------------------------------------------

        Если  параметр   инициализации  OS_ROLES   установлен  в   TRUE,
        операционная   система   полностью   управляет   назначениями (и
        отзывами)  ролей   ПОЛЬЗОВАТЕЛЯМ.   Все   предыдущие  назначения
        пользователям ролей предложениями GRANT теряют силу; однако  они
        по-прежнему сохраняются в  словаре данных.  Применяются  лишь те
        назначения ролей пользователям,  которые осуществлены на  уровне
        операционной  системы.   Однако  пользователи  по-прежнему могут
        назначать привилегии как ролям, так и пользователям.






                                 Управление привилегиями и ролями  12-23


        Замечание: Если операционная система назначает пользователю роль
        с опцией ADMIN OPTION, то этот пользователь может назначать  эту
        роль лишь другим ролям, но не пользователям.


Включение и выключение ролей в режиме OS_ROLES = TRUE
-----------------------------------------------------

        Если параметр инициализации OS_ROLES установлен в TRUE, то любая
        роль, назначенная операционной системой, может быть  динамически
        включена  с  помощью  команды  SET  ROLE;  если  эта  роль  была
        определена с идентификацией (через пароль или через операционную
        систему),  то  эта  идентификация  будет осуществлена.  Однако в
        предложении  SET   ROLE  нельзя   указывать  никакой   роли,  не
        идентифицированной для  учетного имени  в операционной  системе,
        даже  если  эта  роль  была  в свое время назначена предложением
        GRANT в режиме OS_ROLES = FALSE.  (Если вы специфицируете  такую
        роль, ORACLE игнорирует ее.)

        Когда  OS_ROLES  =  TRUE,  пользователь  может  включить столько
        ролей, сколько специфицировано параметром MAX_ENABLED_ROLES.


Использование многоканального сервера
при управлении ролями операционной системой
-------------------------------------------

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

        Если вы  не озабочены  проблемами защиты  и хотите  использовать
        авторизацию   ролей   операционной   системой   с многоканальным
        сервером, установите параметр REMOTE_OS_ROLES в значение TRUE  в
        файле параметров базы данных.  Это изменение начнет  действовать
        при  очередном  запуске  инстанции  и  монтировании базы данных.
        (Этот параметр по умолчанию имеет значение FALSE.)























12-24  Руководство администратора


----------------

Вывод информации о привилегиях и ролях

        Чтобы выдать  все гранты,  сделанные для  объектов, пользователь
        может опросить следующие обзоры словаря данных:

            *  ALL_COL_PRIVS, USER_COL_PRIVS, DBA_COL_PRIVS

            *  ALL_COL_PRIVS_MADE, USER_COL_PRIVS_MADE

            *  ALL_COL_PRIVS_RECD, USER_COL_PRIVS_RECD

            *  ALL_TAB_PRIVS, USER_TAB_PRIVS, DBA_TAB_PRIVS

            *  ALL_TAB_PRIVS_MADE, USER_TAB_PRIVS_MADE

            *  ALL_TAB_PRIVS_RECD, USER_TAB_PRIVS_RECD

            *  DBA_ROLES

            *  USER_ROLE_PRIVS, DBA_ROLE_PRIVS

            *  USER_SYS_PRIVS, DBA_SYS_PRIVS

            *  COLUMN_PRIVILEGES

            *  ROLE_ROLE_PRIVS, ROLE_SYS_PRIVS, ROLE_TAB_PRIVS

            *  SESSION_PRIVS, SESSION_ROLES

        Замечание: Обратитесь к приложению B за подробным описанием этих
        обзоров словаря данных.


Примеры
-------

        Для приведенных  ниже примеров  предполагается, что  были выданы
        следующие предложения:

        CREATE ROLE security_admin IDENTIFIED BY honcho;

        GRANT create profile, alter profile, drop profile,
            create role, drop any role, grant any role, audit any,
            audit system, create user, become user, alter user,drop user
            TO security_admin WITH ADMIN OPTION;

        GRANT SELECT, DELETE ON sys.aud$ TO security_admin;

        GRANT security_admin, create session TO swilliams;

        GRANT security_admin TO system_administrator;

        GRANT create session TO jward;

        GRANT SELECT, DELETE ON emp TO jward;

        GRANT INSERT (ename, job) ON emp TO swilliams, jward;




                                 Управление привилегиями и ролями  12-25


Пример 1:
Вывод всех грантов системных привилегий

        Следующий  запрос  выдает  все  назначения системных привилегий,
        сделанные ролям и пользователям:

        SELECT * FROM sys.dba_sys_privs;

        GRANTEE            PRIVILEGE                            ADM
        ------------------ ------------------------------------ ---
        SECURITY_ADMIN     ALTER PROFILE                        YES
        SECURITY_ADMIN     ALTER USER                           YES
        SECURITY_ADMIN     AUDIT ANY                            YES
        SECURITY_ADMIN     AUDIT SYSTEM                         YES
        SECURITY_ADMIN     BECOME USER                          YES
        SECURITY_ADMIN     CREATE PROFILE                       YES
        SECURITY_ADMIN     CREATE ROLE                          YES
        SECURITY_ADMIN     CREATE USER                          YES
        SECURITY_ADMIN     DROP ANY ROLE                        YES
        SECURITY_ADMIN     DROP PROFILE                         YES
        SECURITY_ADMIN     DROP USER                            YES
        SECURITY_ADMIN     GRANT ANY ROLE                       YES
        SWILLIAMS          CREATE SESSION                       NO
        JWARD              CREATE SESSION                       NO


Пример 2:
Вывод всех грантов ролей

        Следующий  запрос  выдает  все  назначения  ролей,  которые были
        сделаны пользователям и другим ролям:

        SELECT * FROM sys.dba_role_privs;

        GRANTEE            GRANTED_ROLE                         ADM
        ------------------ ------------------------------------ ---
        SWILLIAMS          SECURITY_ADMIN                       NO


Пример 3:
Вывод объектных привилегий, назначенных пользователю

        Следующий  запрос  выдает  все  объектные привилегии (не включая
        выборочных  привилегий  для  столбцов),  назначенные конкретному
        пользователю:

        SELECT table_name, privilege, grantable FROM sys.dba_tab_privs
            WHERE grantee = 'JWARD';

        TABLE_NAME   PRIVILEGE    GRANTABLE
        ------------ ------------ -----------
        EMP          SELECT       NO
        EMP          DELETE       NO










12-26  Руководство администратора


        Чтобы выдать все назначенные выборочные привилегии для столбцов,
        введите следующий запрос:

        SELECT grantee, table_name, column_name, privilege,
            FROM sys.dba_col_privs;

        GRANTEE       TABLE_NAME    COLUMN_NAME         PRIVILEGE
        ------------- ------------- ------------------- ---------------
        SWILLIAMS     EMP           ENAME               INSERT
        SWILLIAMS     EMP           JOB                 INSERT
        JWARD         EMP           ENAME               INSERT
        JWARD         EMP           JOB                 INSERT


Пример 4:
Вывод текущих привилегий вашей сессии

        Следующий  запрос  выдает  все  роли,  который  в  данный момент
        включены для выдающего этот запрос:

        SELECT * FROM session_roles;

        Если пользователь SWILLIAMS получил роль SECURITY_ADMIN и выдает
        этот запрос, он получит следующую информацию:

        ROLE
        -------------------------------
        SECURITY_ADMIN

        Следующий запрос  выдает все  системные привилегии,  доступные в
        данный  момент  в  домене   защиты  выдающего  этот  запрос,   и
        полученные как через явные гранты, так и из включенных ролей:

        SELECT * FROM session_privs;

        Если пользователь SWILLIAMS получил роль SECURITY_ADMIN и выдает
        этот запрос, он получит следующую информацию:

        PRIVILEGE
        -------------------------------------------
        AUDIT SYSTEM
        CREATE SESSION
        CREATE USER
        BECOME USER
        ALTER USER
        DROP USER
        CREATE ROLE
        DROP ANY ROLE
        GRANT ANY ROLE
        AUDIT ANY
        CREATE PROFILE
        ALTER PROFILE
        DROP PROFILE

        Если отключить роль  SECURITY_ADMIN для пользователя  SWILLIAMS,
        то первый  запрос не  вернет ни  одной строки,  а второй  запрос
        возвратит лишь строку для гранта привилегии CREATE SESSION.






                                 Управление привилегиями и ролями  12-27


Пример 5:
Вывод ролей базы данных

        Обзор словаря данных  DBA_ROLES может использоваться  для вывода
        всех ролей базы данных  и метода авторизации, используемого  для
        каждой роли.  Например, следующий запрос выдает все роли в  базе
        данных:

        SELECT * FROM sys.dba_roles;

        ROLE                           PASSWORD
        ------------------------------ --------
        CONNECT                        NO
        RESOURCE                       NO
        DBA                            NO
        SECURITY_ADMIN                 YES


Пример 6:
Вывод информации о доменах привилегий в ролях

        Обзоры   словаря   данных   ROLE_ROLE_PRIVS,   ROLE_SYS_PRIVS  и
        ROLE_TAB_PRIVS  содержат  информацию  о  привилегиях  и  ролях в
        составе ролей.

        Например,  следующий  запрос  выдает  все роли, назначенные роли
        SYSTEM_ADMIN:

        SELECT granted_role, admin_option
            FROM role_role_privs
            WHERE role = 'SYSTEM_ADMIN';

        GRANTED_ROLE                   ADM
        ------------------------------ ---
        SECURITY_ADMIN                 NO

        Следующий запрос  выдает все  системные привилегии,  назначенные
        роли SECURITY_ADMIN:

        SELECT * FROM role_sys_privs WHERE role = 'SECURITY_ADMIN';

        ROLE                      PRIVILEGE                     ADM
        ------------------------- ----------------------------- ---
        SECURITY_ADMIN            ALTER PROFILE                 YES
        SECURITY_ADMIN            ALTER USER                    YES
        SECURITY_ADMIN            AUDIT ANY                     YES
        SECURITY_ADMIN            AUDIT SYSTEM                  YES
        SECURITY_ADMIN            BECOME USER                   YES
        SECURITY_ADMIN            CREATE PROFILE                YES
        SECURITY_ADMIN            CREATE ROLE                   YES
        SECURITY_ADMIN            CREATE USER                   YES
        SECURITY_ADMIN            DROP ANY ROLE                 YES
        SECURITY_ADMIN            DROP PROFILE                  YES
        SECURITY_ADMIN            DROP USER                     YES
        SECURITY_ADMIN            GRANT ANY ROLE                YES








12-28  Руководство администратора


        Следующий запрос  выдает все  объектные привилегии,  назначенные
        роли SECURITY_ADMIN:

        SELECT table_name, privilege FROM role_tab_privs
            WHERE role = 'SECURITY_ADMIN';

        TABLE_NAME                     PRIVILEGE
        ------------------------------ -------------------
        AUD$                           DELETE
        AUD$                           SELECT