Привилегии

Привилегии – это права, назначаемые отдельным пользователям или ролям. Привилегии делятся на два основных вида:

Системные привилегии, которые дают пользователю или роли возможность выполнять определенные системные операции.

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

Системные привилегии относятся к экземпляру Oracle в целом, например, есть привилегия для всех объектов одного типа. Объектные же привилегии связаны с конкретным объектом схемы внутри базы данных Oracle.

Системные привилегии.Перечислим все системные привилегии Oracle:

Таблица

Привилегия Назначение
ANY   Дает привилегию на выполнение операции над объектами любой схемы. В отсутствие такого ключевого слова привилегия выдается только на объекты в рамках схемы пользователя. По умолчанию ключевое слово ANY дает пользователю привилегию на все объекты всех схем, включая SYS. Для того чтобы запретить привилегии ANY на доступ к схеме SYS, можно установить параметр инициализации 07_DISTIONARY_ACCESSIBILITY в FALSE.
ALTER Дает привилегию на изменение объекта некоторого типа
CREATE Дает привилегию на создание объекта данного типа
DROP Дает привилегию на удаление объекта данного типа
EXECUTE Дает привилегию на исполнение объекта данного типа или обращение к нему
SELECT ANY Дает привилегию на доступ к объектам, применяется только с ключевым словом ANY, потому что пользователь всегда имеет возможность доступа к объектам собственной схемы.

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

- CREATE SESSION (установить сеанс) – позволяет пользователю соединяться с сервером баз данных и устанавливать с ней сеанс связи;

- CREATE TABLE (создать таблицу) – позволяет пользователю создавать таблицы в своей собственной схеме;

- CREATE ANY TABLE (создать любую таблицу) – позволяет пользователю создавать таблицы в любой схеме базы данных;

- CREATE ANY TYPE (создать любой тип) – позволяет пользователю создавать типы и тела соответствующих типов в любой схеме базы данных;

- SELECT ANY TABLE (выбрать любую таблицу) – позволяет пользователю обращаться с запросами к любой таблице базы данных;

- EXECUTE ANY PROCEDURE (выполнить любую процедуру) – позволяет пользователю выполнять любую хранимую процедуру, хранимую функцию или модульный компонент базы данных.

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

Таблица

Объект привилегий Описание привилегий Уникальные привилегии Общие привилегии
AUDIT разрешает функции аудита AUDIT SYSTEM ANY
CLUSTER предоставляет возможность работы с кластерами. нет CREATE [ANY], ALTER ANY, DROP ANY
CONTEXT предоставляет возможность работы с контекстами. нет CREATE ANY, DROP ANY
DATABASE предоставляет возможность выполнения команды ALTER DATABASE. нет ALTER
DATABASE LINKS предоставляет возможность работы со связями БД CREATE PUBLIC, DROP PUBLIC CREATE
DEBUG предоставляет возможность работы с отладчиком. DEBUG CONNECT, SESSION  
DIMENSION предоставляет возможность работы с измерениями нет CREATE [ANY], ALTER ANY, DROP ANY
DIRECTORY предоставляет возможность работы с каталогами. нет CREATE ANY, DROP ANY
INDEX предоставляет возможность работы с индексами QUERY REWRITE CREATE ANY, ALTER ANY, DROP ANY
INDEXTYPE предоставляет возможность работы с объектами типа INDEXTYPE, нет CREATE [ANY], ALTER ANY, DROP ANY, EXECUTE ANY
LIBRARY предоставляет возможность работы с библиотеками. нет CREATE [ANY], DROP ANY
MATERIALIZED VIEW предоставляет возможность работы с материализованными представлениями ON COMMIT REFRESH CREATE [ANY], ALTER ANY, DROP ANY
OPERATOR предоставляет возможность работы с определяемыми пользователем операторами нет CREATE [ANY], DROP, EXECUTE
OUTLINE предоставляет возможность работы с хранимыми планами выполнения SELECT ANY CREATE ANY, ALTER ANY, DROP ANY
PROCEDURE предоставляет возможность работы с процедурами нет CREATE [ANY], ALTER ANY, DROP ANY, EXECUTE ANY
PROFILE предоставляет возможность работы с профилями нет CREATE, ALTER, DROP
RESOURCE COST предоставляет возможность присваивания стоимостей ресурсам нет ALTER
ROLE предоставляет возможность работы с ролями GRANT ANY CREATE, ALTER ANY, DROP ANY
ROLLBACK SEGMENT предоставляет возможность работы с сегментами отката нет CREATE, ALTER, DROP
SEQUENCE предоставляет возможность работы с последовательностями. нет CREATE [ANY], ALTER ANY, DROP ANY, SELECT ANY
SESSION предоставляет возможность работы с сеансами ALTER RESOURCE COST, RESTRICTED SESSION CREATE, ALTER
SYNONYM предоставляет возможность работы с синонимами нет CREATE [ANY] [PUBLIC], DROP ANY, DROP PUBLIC
SYSTEM предоставляет возможность изменения параметров системы нет ALTER
TABLE предоставляет возможность работы с таблицами BACKUP ANY, COMMENT ANY, INSERT ANY, LOCK ANY, FLASHBACK ANY, UPDATE ANY CREATE [ANY], CREATE ALTER ANY, DELETE ANY, DROP ANY, SELECT ANY
TABLESPACES предоставляет возможность работы с табличными пространствами MANAGE, UNLIMITED TABLESPACE CREATE, ALTER, DROP
TYPES предоставляет возможность работы с определяемыми пользователем типами UNDER ANY CREATE [ANY], ALTER ANY, DROP ANY, EXECUTE ANY
USER предоставляет возможность работы с пользователями базы данных BECOME CREATE, ALTER, DROP
VIEWS предоставляет возможность работы с представлениями UNDER ANY CREATE [ANY], DROP

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

Таблица

Привилегия Назначение Полномочия
SYSDBA дает пользователю все права, необходимые для запуска и остановки базы данных Oracle ALTER DATABASE CREATE DATABASE ARCHIVELOG, RECOVERY CREATE SPFILE
SYSOPER предоставляет пользователю чуть более ограниченный набор прав, предназначенный для оператора системы ALTER DATABASE OPEN | MOUNT | BACKUP ARCHIVELOG, RECOVERY CREATE SPFILE

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

Общие привилегии доступа к объектам схемы приведены в таблице

Таблица

привилегия назначение
ALTER изменяет определение объекта
DEBUG обращается к PL/SQL_коду или информации о командах SQL, которые обращаются к объекту напрямую через отладчик
DELETE удаляет строки из объекта
EXECUTE компилирует или исполняет процедуру или функцию объекта, или же обращается к программному объекту, объявленному в объекте
FLASHBACK выполняет ретроспективный запрос к объекту
INSERT добавляет в объект новые строки
REFERENCES создает ограничение (constraint), ссылающееся на объект
SELECT запрашивает объект
UNDER создает дочерний объект ниже уровня объекта
UPDATE изменяет существующие данные объекта

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

Таблица

Объект схемы назначение Уникальные привилегии Системные (общие) привилегии
Каталоги предоставляет привилегии на выполнение операций над каталогами READ, WRITE  
Внешние таблицы предоставляет привилегии на выполнение операций над внешними таблицами   ALTER, SELECT
Библиотеки предоставляет привилегии на выполнение операций над библиотеками   EXECUTE
Материализованные представления предварительно агрегированные сводные данные, участвующие в операциях бизнес-интеллекта   DELETE, FLASHBACK,INSERT, SELECT, UPDATE
Операторы предоставляет привилегии на выполнение операций над операторами   EXECUTE
Процедуры, функции и пакеты предоставляет привилегии на выполнение операций над тремя типами программных единиц: процедурами, функциями и пакетами   DEBUG, EXECUTE
Последовательности предоставляет привилегии на выполнение операций над последовательностями   ALTER, SELECT
Таблицы предоставляет привилегии на выполнение операций над таблицами INDEX, ON COMMIT REFRESH, QUERY REWRITE ALTER, DELETE, DEBUG, FLASHBACK, INSERT, REF_ ERENCES, SELECT, UPDATE
Пользовательские типы предоставляет привилегии на выполнение операций над пользовательскими типами   DEBUG, EXECUTE, UNDER
Представления Предоставляет привилегии на выполнение операций над представлениями   DEBUG, DELETE, FLASHBACK, INSERT, REFERENCES, SELECT, UNDER

 

Привилегии и пользователи.Для назначения привилегий пользователю или роли применяется команда GRANT. Команда REVOKE позволяет лишить пользователя или роль привилегии.

Общие ключевые слова и инструкции.Ключевые слова и инструкции, которые могут применяться как в команде GRANT, так и в REVOKE:

- ALL PRIVILEGES– предоставляет или отбирает все системные привилегии, за исключением SELECT ANY DICTIONARY. Для объектов предоставляет все привилегии, имеющиеся для данного объекта, ключевое слово PRIVILEGES является необязательным.

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

- имя_столбца – один или несколько столбцов, для которых предоставляется или отбирается привилегия доступа к объектам INSERT, REFERENCES или UPDATE. Если имя столбца не указано, то привилегия предоставляется на все столбцы таблицы или представления.

- схема.объект – указывает имя объекта, на который выдается или отбирается привилегия. Если схема не задана, то сервер Oracle считает, что объект находится в собственной схеме пользователя.

- DIRECTORY имя_каталога – указывает имя каталога, на который выдается или отбирается привилегия.

Инструкция GRANT предоставляет пользователю или роли привилегии или роли. Для того чтобы предоставить привилегию, пользователь должен предварительно получить привилегию или роль с указанием WITH ADMIN OPTION. Также можно предоставлять привилегии, если есть привилегия GRANT ANY PRIVILEGE (для системных привилегий), GRANT ANY ROLE (для ролей), GRANT OPTION (для объектов схемы) или вы являетесь владельцем объекта. Системные привилегии и привилегии доступа к объектам схемы не могут быть предоставлены в одной команде GRANT.

1. Для предоставления системных привилегий или ролей:

GRANT {системная_привилегия | роль | ALL PRIVILEGES} TO получатель

[IDENTIFIED BY пароль] [WITH ADMIN OPTION];

 

2. Для предоставления привилегий доступа к объектам схемы:

GRANT {объектная_привилегия | ALL [PRIVILEGES]}

[имя_столбца [, имя_столбца …]]

ON {схeма.объект | DIRECTORY имя_каталога |

JAVA [SOURCE | RESOURCE] [схема.]объект}

TO получатель [WITH GRANT OPTION] [WITH HIERARCHY OPTION];

 

Определение ключевых слов приведено в таблице

Таблица

Ключевое слово Назначение
IDENTIFIED BY Может применяться для идентификации существующего пользователя по паролю или для создания нового пользователя с указанным паролем.
ALL PRIVILEGES Предоставляет пользователю или роли все привилегии, за исключением SELECT ANY DICTIONARY
WITH ADMIN OPTION Позволяет пользователю выдавать или отбирать системную привилегию или роль, а также изменять и удалять роль
WITH GRANT OPTION Позволяет получателю получить привилегии на все дочерние объекты указанного объекта схемы
SOURCE | RESOURCE Разрешает доступ к исходным текстам Java или Java-ресурсу
WITH HIERARCHY OPTION Позволяет пользователю получить привилегии на все дочерние объекты указанного в инструкции объекта схемы.

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

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

1. Для изъятия системных привилегий или ролей:

REVOKE {системная_привилегия | роль | ALL PRIVILEGES} FROM получатель;

2. Для изъятия привилегий доступа к объектам:

REVOKE {объектная_привилегия | ALL [PRIVILEGES]}

[имя_столбца [,имя_столбца . . .]]

ON {схема.объект | DIRECTORY имя_каталога |

JAVA [SOURCE | RESOURCE] [схема.]объект}

FROM получатель [CASCADE CONSTRAINTS] [FORCE];

Определение ключевых слов приведено в таблице

Таблица

Ключевое слово Назначение
ALL PRIVILEGES Аннулирует все существующие системные привилегии для пользователя или роли
JAVA SOURCE | RESOURCE Аннулирует доступ к исходным текстам Java и к Java-ресурсу
CASCADE CONSTRAINTS Применяется только при отзыве привилегии REFERENCES или привилегий доступа к объектам ALL. Удаляет все ограничения, которые пользователь, лишаемый привилегий, определил для объекта
FORCE Применяется при отзыве привилегии доступа к объектам EXECUTE для объектов пользовательских типов, имеющих зависимости от таблиц или типов. Приводит к тому, что все зависимые объекты помечаются как INVALID, запрещает доступ к данным зависимых таблиц, помечает все зависимые функциональные индексы как UNUSABLE.

 

Роли

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

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

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

Команда ALTER USER позволяет задать одну или несколько ролей по умолчанию. Роли, назначенные по умолчанию, действуют, когда пользователь регистрируется в базе данных Oracle.

Системные роли.СУБД Oracle предлагает ряд предопределенных системных ролей:

Таблица

Роль Назначение
CONNECT Включает в себя системные привилегии ALTER SESSION, CREATE CLUSTER, CREATE DATABASE LINK, CREATE SEQUENCE, CREATE SESSION, CREATE SYNONYM, CREATE TABLE и CREATE VIEW
RESOURCE Включает в себя системные привилегии CREATE CLUSTER, CREATE INDEXTYPE, CREATE OPERATOR, CREATE PROCEDURE, CREATE SEQUENCE, CREATE TABLE и CREATE TYPE
DBA Включает в себя все системные привилегии с указанием WITH ADMIN OPTION
CREATE TYPE Включает в себя привилегии CREATE TYPE, EXECUTE, EXECUTE ANY TYPE, ADMIN OPTION и GRANT OPTION
EXP_FULL_DATABASE Предназначена для предоставления всех привилегий, необходимых для выполнения полного и инкрементного экспорта базы данных.
IMP_FULL_DATABASE Предназначена для предоставления всех привилегий, необходимых для выполнения полного импорта базы данных
DELETE_CATALOG_ ROLE Содержит в себе привилегию DELETE для таблицы аудита системы (AUD$)
SELECT_CATALOG_ ROLE Включает в себя привилегию SELECT для таблицы аудита системы (AUD$)
RECOVERY_CATALOG_OWNER Предназначена для предоставления всех привилегий, необходимых владельцу каталога восстановления
HS_ADMIN_ROLE Предназначена для защиты пакетов и представлений словарей данных гетерогенных сервисов

Определение ролей.Описанные в последующих разделах команды позволяют создавать, изменять и удалять роли. Команда ALTER USER позволяет определить одну или несколько ролей по умолчанию. Роли, назначенные по умолчанию, действуют, когда пользователь регистрируется в базе данных Oracle.

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

CREATE ROLE имя_роли {NOT IDENTIFIED | IDENTIFIED

{EXTERNALLY | GLOBALLY | BY пароль | USING [схема.] пакет}};

Определение ключевых слов приведено в таблице

Таблица

Ключевое слово назначение
NOT IDENTIFIED Указывает, что для роли не требуется пароль
IDENTIFIED Определяет, каким способом пользователь будет аутентифицирован, прежде чем ему будет разрешено активировать роль или назначить ее ролью по умолчанию
BY пароль Локальный пользователь должен предоставить пароль для активирования роли
USING (схема.)пакет Проверку пользователя осуществит пакет. Применяется для ролей приложений
EXTERNALLY Внешний пользователь авторизуется сторонней службой, такой как операционная система
GLOBALLY Пользователь авторизуется службой каталогов предприятия

 

Изменение определенной роли возможно инструкцией ALTER ROLE, которая изменяет способ аутентификации пользователя роли. Ключевые слова совпадают с ключевыми словами, приведенными для команды CREATE ROLE.

ALTER ROLE имя_роли {NOT IDENTIFIED | IDENTIFIED

{EXTERNALLY | GLOBALLY | BY пароль | USING [схема.] пакет}};

 

DROP ROLE удаляет роль из базы данных. Если роль используется в данный момент, то ничего не произойдет, но заново использовать роль пользователь уже не сможет.

DROP ROLE имя_роли

 

SET ROLE разрешает пользователю применение одной или нескольких ролей или запрещает применение всех ролей.

SET ROLE {роль [IDENTIFIED BY пароль

[, роль [IDENTIFIED BY PASSWORD_ ._ ._ ._ ]] |

ALL [EXCEPT роль[, роль_ ._ ._ ._ ]] NONE}

 

гдеALL – разрешает применение всех ролей, предоставленных пользователю;

EXCEPT – применяется для исключения некоторых ролей из списка разрешенных при помощи ключевого слова ALL;

NONE – запрещает применение всех ролей пользователя.

 

АУДИТ

Аудит применяется как способ отслеживания использования БД и предупреждения о возможных проблемах с безопасностью.

В Oracle разрешен аудит четырех различных типов:

- Аудит команд. Аудит команд, направленных БД отдельными пользователями или всеми пользователями.

- Аудит привилегий. Аудит использования системных привилегий отдельными пользователями или всеми пользователями.

- Аудит объектов схемы. Аудит определенного набора команд SQL для конкретного объекта схемы.

- Детальный аудит. Детальный аудит (fine1grained auditing) появился в Oracle9i. Как и детальный контроль доступа, детальный аудит реализуется за счет определения предиката, вводящего ограничение для команд SQL, которые будут подвергнуты аудиту. Проводя такую политику аудита, можно сконцентрироваться на отслеживании действий с небольшим объемом жизненно важных данных. Уменьшение общего количества записей аудита облегчает выявление потенциальных проблем с безопасностью.

Для всех типов аудита Oracle вносит записи в журнал аудита БД или таблицу SYS.FGA_LOG$ или же в файл ОС в двоичном формате. Записи журнала аудита содержат различную информацию в зависимости от типа аудита и установленных параметров выполнения аудита.

Вне зависимости, включен ли аудит для БД, следующие действия всегда формируют записи в журнале аудита ОС:

1. Запуск экземпляра БД.

2. Остановка экземпляра БД.

3. Доступ пользователей с привилегиями администратора.

Включать и выключать аудит можно при помощи команд AUDIT и NOAUDIT.

 

AUDITинструкция_для_команд SQL | инструкция_для_объектов_схемы

[BY SESSION | ACCESS] [WHENEVER [NOT] SUCCESSFUL]

 

где инструкция_для_команд SQL применяется для включения аудита команд или системных привилегий и имеет следующий формат:

 

{[параметр_команды | ALL] [, …]} |

{[системная_привилегия | ALL PRIVILEGES] [, …]}

BY {прокси_сервер (, прокси_сервер …] ON BEHALF OF [{пользователь [, пользователь …]} | {пользователь [, пользователь …]};

 

инструкция_для_объектов_схемы применяется для включения аудита объектов схемы имеет следующий формат:

{параметр_объекта [, параметр_объекта …] | ALL}

ON {схема.[объект] | DIRECTORY имя_каталога | DEFAULT}

 

Определение ключевых слов приведено в таблице

Таблица

Ключевое слово назначение
BY SESSION | ACCESS Определяет, должны ли данные аудита записываться один раз за сеанс или при каждой попытке определенного типа доступа. Аудит для всех команд и всех привилегий для команд DDL может задаваться только как BY ACCESS.
WHENEVER [NOT] SUCCESSFUL Указывает, следует ли проверять только успешные или неудавшиеся команды SQL. Единственные неудавшиеся команды, отслеживаемые при помощи ключевого слова NOT – это команды, которые не удается выполнить, или приводят к возникновению ошибок из-за недостаточных привилегий или отсутствия объекта, на который приведена ссылка. По умолчанию проверяются все команды вне зависимости от того, выполнились они успешно или же не удались по упомянутым причинам.
BY пользователь Задает аудит по одному или нескольким именам пользователя
BY прокси_сервер ON BEHALF OF Задает аудит действий, выполняемых прокси-сервером от имени пользователя
параметр_команды Включает аудит отдельных команд SQL.

 

Синтаксис команды отмены аудита приведен ниже:

 

NOAUDIT инструкция_для_команд SQL | инструкция_для_объектов_схемы [BY SESSION | ACCESS]

 








Дата добавления: 2015-08-26; просмотров: 4252;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.043 сек.