Контроль доступа к базе данных
Многоуровневый контроль доступа в БД Oracle
Среди современных коммерческих СУБД базу данных Oracle можно считать одной из самых продвинутых в области контроля доступа. Все привилегии делятся на системные и объектные.
Синтаксис оператора GRANT, выполняющего предоставление пользователям или ролям системных полномочий и ролей, может быть представлен следующей схемой:
Предоставление пользователям или ролям привилегий над обычными объектами БД Oracle также может быть показано на примере следующей схемы:
system_priv - предоставляемое системное полномочие.
role - предоставляемая роль.
TO -определяет пользователей или роли, которым предоставляются системные или объектные полномочия.
PUBLIC - указывает, что системные или объектные полномочия, определяемые оператором, предоставляются всем пользователям.
WITH ADMIN OPTION - позволяет пользователю, получившему системные или объектные полномочия или роль, предоставлять их в дальнейшем другим пользователям или ролям. Такое разрешение включает и возможность изменения или удаления роли. (Синтаксически данная опция отличается от стандарта SQL-92.)
object_priv - определяет предоставляемую привилегию, которая может быть указана одним из следующих значений:
- ALTER
- DELETE
- EXECUTE (только для процедур, функций и пакетов)
- INDEX (только для таблиц)
- INSERT
- REFERENCES (только для таблиц)
- SELECT
- UPDATE.
column - определяет столбец таблицы или представления, на который распространяется предоставляемая привилегия.
ON - определяет объект (таблицу, вид, хранимую процедуру, снимок), на который предоставляется привилегия.
Например:
GRANT SELECT, UPDATE ON tbl1 TO PUBLIC GRANT REFERENCES (f1), UPDATE (f1, f2, f3) ON user1.tbl1 TO user2
Приведем список предоставляемых оператором GRANT системных полномочий, который характеризует систему контроля доступа БД Oracle. К системным полномочиям относятся следующие:
ALTER ANY CLUSTER - разрешает получившему эти полномочия изменение любого кластера в любой схеме;
ALTER ANY INDEX - разрешает изменение любого индекса в любой схеме;
ALTER ANY PROCEDURE - разрешает изменение любой хранимой функции, процедуры или пакета в любой схеме;
ALTER ANY ROLE - разрешает изменение в базе данных любой роли;
ALTER ANY SEQUENCE - разрешает изменение в базе данных любой последовательности;
ALTER ANY SNAPSHOT - разрешает изменение в базе данных любого снимка;
ALTER ANY TABLE - разрешает изменение в схеме любой таблицы или вида;
ALTER ANY TRIGGER - позволяет разрешать, запрещать или компилировать любой триггер базы данных в любой схеме; изменение в базе данных любой роли;
ALTER DATABASE - разрешает изменение базы данных;
ALTER PROFILE - разрешает изменение профилей;
ALTER RESOURCE COST - разрешает устанавливать цену ресурсов сеанса работы пользователя;
ALTER ROLLBACK SEGMENT - разрешает изменение сегментов отката;
ALTER SESSION - разрешает выполнение оператора ALTER SESSION ;
ALTER SYSTEM - разрешает выполнение оператора ALTER SYSTEM ;
ALTER TABLESPACE - разрешает изменение табличных пространств;
ALTER USER - разрешает изменение параметров для любого пользователя (пароль, количество доступного табличного пространства, назначенный профиль и т.п.);
ANALYZE ANY - разрешает анализировать таблицу, кластер или индекс в любой схеме;
AUDIT ANY - разрешает выполнять аудит любого объекта в любой схеме;
AUDIT SYSTEM - разрешает выполнение SQL-оператора AUDIT ;
BACKUP ANY TABLE - позволяет выполнять экспорт объектов из схемы других пользователей;
BECOME USER - позволяет становиться другим пользователем (требуется при импорте БД);
COMMENT ANY TABLE - разрешает получившему эти полномочия комментарий для любой таблицы, вида или столбца в любой схеме;
CREATE ANY INDEX ;
CREATE ANY LIBRARY ;
CREATE ANY PROCEDURE ;
CREATE ANY SEQUENCE ;
CREATE ANY TABLE ;
CREATE ANY TRIGGER ;
CREATE ANY VIEW ;
CREATE CLUSTER - разрешает создавать кластер в своей схеме (системное полномочие, не содержащее в названии фразу ANY, распространяется только на собственную схему пользователя);
CREATE DATABASE LINK - разрешает создавать линк базы данных в своей схеме;
CREATE PROFILE ;
CREATE PUBLIC DATABASE LINK - разрешает создавать общедоступные линки базы данных;
CREATE ROLE - разрешает создание ролей;
CREATE LIBRARY ;
CREATE SEQUENCE ;
CREATE SESSION - разрешает соединение с базой данных;
CREATE TABLE;
CREATE TRIGGER;
CREATE USER ;
DELETE ANY TABLE ;
DROP ANY INDEX - разрешает удаление любого индекса;
DROP ANY LIBRARY ;
DROP ANY PROCEDURE ;
DROP ANY ROLE ;
DROP ANY SEQUENCE ;
DROP ANY TABLE ;
DROP ANY TRIGGER ;
DROP ANY VIEW ;
DROP LIBRARY ;
DROP PROFILE ;
DROP USER ;
EXECUTE ANY PROCEDURE - разрешает выполнение процедур и функций, а также ссылки на общедоступные переменные пакетов в любой схеме;
FORCE ANY TRANSACTION - позволяет выполнять фиксацию или откат любой сомнительной распределенной транзакции на локальной базе данных, а также определять сбой распределенной транзакции;
FORCE TRANSACTION - позволяет выполнять фиксацию или откат собственной сомнительной распределенной транзакции на локальной базе данных;
INSERT ANY TABLE ;
LOCK ANY TABLE ;
MANAGE TABLESPACE - разрешает переключение табличного пространства из автономного режима в оперативный или обратно, а также разрешает выполнять копирование табличного пространства;
SELECT ANY SEQUENCE ;
SELECT ANY TABLE ;
UNLIMITED TABLESPACE - разрешает неограниченное использование любого табличного пространства.Предоставление этого полномочия перекрывает любые ограничения на количество доступного табличного пространства, ранее установленные для пользователя;
UPDATE ANY TABLE - разрешает изменение строк в таблицах и видах любой схемы.
При создании базы данных Oracle некоторые роли создаются автоматически. Следующая таблица содержит названия автоматически создаваемых Oracle ролей и список предоставляемых ими системных полномочий. Эти роли создают иерархию предоставляемых полномочий.
Для просмотра предоставленных привилегий администратор базы данных может использовать следующие системные представления словаря данных:
Эти системные представления позволяют администратору БД Oracle полностью контролировать назначение, передачу и взаимозависимость системных и объектных привилегий.