Если с приложение базы данных работает большое число пользователей, то управление привилегиями может оказаться достаточно сложной задачей. Для упрощения процесса управления привилегиями предназначены так называемые роли.
Роль представляет собой совокупность системных и объектных привилегий, предоставляемых пользователям и другим ролям. К примеру при разработке нового приложения можно создать роль, которая содержит набор привилегий, необходимых для работы с этим приложением. В результате пользователь, которому будет предоставлена эта роль, получит право запускать это приложение, работать с базой данных и выполнять требуемые действия. Для модификации привилегий группы пользователей достаточно изменить состав привилегий в соответствующей роли.
В Oracle имеется несколько предварительно установленных стандартных ролей. К ним относятся следующие роли:
q CONNECT – назначается пользователям и позволяет устанавливать соединение с базой данных, создавать таблицы, представления, синонимы, последовательности, связи и кластеры данных по соответствующей схеме;
q RESOURCE – назначается разработчикам приложений и позволяет создавать, таблицы, последовательности, кластеры данных, процедуры, функции, модули, триггеры и объектные типы по соответствующей схеме;
q DBA – назначается администраторам, включает все системные привилегии и позволяет выполнять любые операции с базами данных. Обладающий этой ролью пользователь может предоставлять любые системные привилегии другим пользователям и ролям;
q SELECT_CATALOG_ROLE – позволяет выполнять запросы к представлениям словаря данных администратора;
q DELETE_CATALOG_ROLE – позволяет удалять записи из журнала аудита (audit trail) базы данных;
q EXECUTE_CATALOG_ROLE – позволяет выполнять модули утилиты DBMS;
q EXP_FULL_DATABASE, IMP_FULL_DATABASE – позволяют соответственно экспортировать и импортировать информацию из базе данных.
Наборы привилегий, содержащиеся в указанных ролях, при необходимости можно изменять. Более того, допускается удалять эти роли. Допускается создавать и предоставлять пользователям произвольное количество ролей с требуемым набором привилегий и других ролей. В процессе работы приложения созданная роль может устанавливаться доступной или недоступной. Соответственно при этом пользователю становятся доступны или недоступны содержащиеся в этой роли привилегии.
Пример. Создание роли и предоставление пользователям.
CREATE ROLE payment
GRANT SELECT, INSERT, UPDATE, DELETE ON goods.company
TO payment
GRANT SELECT, INSERT, UPDATE, DELETE ON goods.price
TO payment
GRANT payment
TO khomon, ivanov
Для избежания несанкционированного использования можно использовать аутентификацию ролей с помощью тех же способов, которые применяются для аутентификации пользователей.