6.4.1 DB2: полномочия и привилегии
В DB2 разрешения пользователю выполнять те или иные действия делятся на полномочия и привилегии. Полномочие является методом группирования привилегий и возможности управлять менеджером базы данных и системными утилитами. Полномочия, связанные с базой данных, записываются в каталог соответствующей базы данных, полномочия, связанные с управлением системой записываются в файл конфигурации менеджера СУБД для данного экземпляра.
Полномочия в DB2 являются предустановленными. Имеются следующие виды полномочий.
Полномочие SYSADM - администрирования системы - является высшим уровнем полномочий и обеспечивает контроль над всеми ресурсами, которыми управляет менеджер базы данных. Это полномочие включает в себя также полномочия DBADM (для всех баз данных в экземпляре), SYSCTRL и SYSMAINT, а также разрешение давать и забирать полномочия DBADM. Пользователь с полномочием SYSADM имеет полный доступ ко всем объектам всех баз данных в данном экземпляре.
Полномочие DBADM - администрирования базы данных - определяется для отдельной базы данных. Оно включает в себя разрешение на полный доступ ко всем объектам этой базы данных посредством операторов SQL, на создание объектов и на выполнение команд базы данных. Полномочие DBADM также включает в себя возможность давать и забирать привилегию CONTROL и другие привилегии.
Полномочие SYSCTRL - управления системой - высший уровень управления системой, применяется только к системным ресурсам. Оно не дает разрешения на прямой доступ к данным, но позволяет создавать базы данных, изменять их конфигурацию и уничтожать их, создавать и уничтожать табличные пространства. Это полномочие включает в себя также полномочие SYSMAINT.
Полномочие SYSMAINT - сопровождения системы - второй уровень управления системой. Оно дает возможность выполнять операции по сопровождению всех баз данных в данном экземпляре: изменять конфигурацию баз данных, выполнять их копирование/восстановление, и управлять базами данных. Оно не дает разрешения на прямой доступ к данным.
Полномочия SYSADM, SYSCTRL, SYSMAINT даются группам, имена которых определяются в конфигурационных параметрах sysadm_group, sysctrl_group, sysmaint_group соответственно. Членство в этих группах управляется вне менеджера базы данных - средствами безопасности той платформы, на которой функционирует СУБД.
Привилегия дает пользователю или группе право выполнять определенный вид доступа к определенному объекту. В DB2 имеется несколько видов привилегий, некоторые из них рассматриваются ниже.
Привилегии базы данных - включают в себя действия над базой данных в целом, в том числе привилегии:
CONNECT - разрешение на доступ к базе данных;
BINDADD - разрешение на создание новых пакетов в базе данных;
CREATETAB - разрешение на создание новых таблиц в базе данных.
Привилегии схемы - включают в себя действия над определенной схемой в базе данных, в том числе привилегии CREATEIN, ALTERIN, DROPIN - разрешения на создание, изменение, уничтожение объектов в схеме соответственно.
Все остальные виды привилегий являются объектными - они даются по отношению к отдельным объектам базы данных.
Привилегии таблиц и представлений - включают в себя разрешение на действия над определенными таблицами/представлениями, в том числе привилегии:
CONTROL - привилегия владельца, включает в себя все другие привилегии для таблицы/представления, а также разрешения удалять ее и давать/забирать привилегии для данной таблицы/представления другим пользователям/группам. Создатель таблицы автоматически получает для нее привилегию CONTROL, создатель представления получает привилегию CONTROL только в том случае, если он имеет эту привилегию для всех таблиц, входящих в определение представления. Привилегия CONTROL может быть дана/отобрана пользователем с полномочиями SYSADM или DBADM (это справедливо и для всех объектных привилегий, описанных ниже);
ALL - все привилегии, перечисленные ниже;
ALTER - разрешение на изменение таблицы (добавление столбцов, добавление/изменение/уничтожение ограничений целостности, создание триггеров для таблицы);
DELETE - разрешение на удаление строк из таблицы;
INDEX - разрешение на создание индекса к таблице;
INSERT - разрешение на вставку строк в таблицу и выполнение утилиты IMPORT.
REFERENCES - разрешение на создание внешних ключей, ссылающихся на данную таблицу. Эта привилегия может быть ограничена выбранными столбцами.
SELECT - разрешение на выборку строк из таблицы, создание представления на базе данной таблицы и выполнение утилиты EXPORT.
UPDATE - разрешение на изменение значений в столбцах таблицы. Эта привилегия может быть ограничена выбранными столбцами.
Привилегии пакета - включают в себя разрешение на действия над определенными пакетами - объектами базы данных, содержащими информацию, используемую менеджером базы данных для эффективного доступа к данным из определенного приложения.
Привилегии индекса - создатель индекса автоматически получает для него привилегию CONTROL, что дает ему разрешение на удаление индекса.
Все названные выше привилегии назначаются операторами GRANT, а забираются операторами REVOKE, обобщенная форма которых показана на рис.6.7.

Рисунок 6.7 - Операторы GRANT и REVOKLE (DB2)
Типы объектов - DATABASE, SCHEMA, TABLE, VIEW и т.д. Набор возможных привилегий зависит от типа объекта. Опция WITH GRANT OPTION означает разрешение на передачу привилегий и возможна только для типов объектов TABLE, VIEW, SCHEMA.
6.4.2 Oracle: системные и объектные привилегии
В Oracle все даваемые пользователю разрешения сводятся к привилегиям. Различаются два вида привилегий - системные привилегии и привилегии объектов схемы или просто объектные. Управление обоими видами привилегий производится схожим образом. Привилегии могут даваться/забираться пользователю или роли.
Системные привилегии дают пользователю возможность выполнять общесистемные действия или определенные действия над всеми объектами определенного типа. Существует более 40 системных привилегий, которые можно разделить на несколько основных групп:
- привилегии, связанные с выполнением некоторых общесистемных действий (аналог полномочий в DB2), например:
SYSOPER - разрешение на запуск и останов Server Manager, изменение конфигурации баз данных, копирование и восстановление;
SYSDBA - то же, плюс разрешение на создание баз данных;
CREATE USER, CREATE ROLE - разрешение на создание пользователей, ролей;
CREATE SESSION - разрешение на соединение с базой данных;
- привилегии, связанные с выполнением определенных действий над всеми объектами определенного типа, например:
CREATE ANY TABLE, CREATE ANY VIEW ... - разрешение на создание любых таблиц, представлений ... в любых схемах;
ALTER ANY TABLE, ALTER ANY VIEW ... - разрешение на изменение любых таблиц, представлений ... в любых схемах;
DROP ANY TABLE, DROP ANY VIEW ... - разрешение на уничтожение любых таблиц, представлений ... в любых схемах.
- привилегии, связанные с выполнением определенных действий в определенной схеме, например:
CREATE TABLE, CREATE VIEW ... - разрешение на создание таблиц, представлений ... в определенной схеме.
Системные привилегии могут даваться с правом передачи другому пользователю/роли или без него. Они назначаются и забираются операторами GRANT и REVOKE, показанными на рис.6.8.

Рисунок 6.8 - Операторы GRANT и REVOKLE для системных привилегий Oracle
WITH ADMIN OPTION определяет возможность передачи привилегий.
Объектные привилегии концептуально совпадают с таковыми в DB2, они разрешают пользователю выполнять определенные действия над определенным объектом. Основными объектами, для которых даются объектные привилегии являются таблицы и представления, привилегии для них - ALTER, INDEX, INSERT, REFERENCES, SELECT, UPDATE, ALL - как и в DB2. Привилегии могут даваться с правом передачи или без него. Операторы GRANT и REVOKE для объектных привилегий имеют синтаксис, представленный на рис.6.9.

Рисунок 6.9 - Операторы GRANT и REVOKLE для объектных привилегий Oracle
Обратите внимание: в DB2 в операторах GRANT и REVOKE указывался тип объекта, а в Oracle - нет. Это объясняется тем, что в Oracle все объекты схемы должны иметь уникальные имена, а в DB2 имена объектов разного типа могут совпадать.