Вполне возможно, что для использования обычного приложения баз данных придется назначать множество системных привилегий. Когда с приложением работает множество пользователей, управление привилегиями может быстро превратиться в достаточно трудную задачу, так как нужно будет предоставлять привилегии каждому пользователю. Чтобы упростить процесс обеспечения безопасности системы некоторые СУБД в частности ORACLE позволяют воспользоваться ролями. Роль – это совокупность системных привилегий, предоставляемых пользователям и другим ролям. Например, при создании нового приложения можно создать новую роль с привилегиями, необходимыми для выполнения данной программы. После того как пользователю приложения предоставляется эта роль, он может запускать приложение, соединяться с базой данных и выполнять свою работу. Если привилегии, необходимые для выполнения приложения изменяются, то нужно только быстро модифицировать набор привилегий, заданных в роли. Все пользователи, которым предоставлена эта роль, автоматически отслеживают происшедшие изменения и продолжают работу с приложением, имея на то необходимые привилегии. Надо отметить, что СУБД может предоставлять пользователям некоторое количество предварительно установленных ролей. Так ORACLE определяет несколько предварительно установленных ролей, некоторые из которых перечислены ниже.
CONNECT – основная роль пользователей, которая позволяет соединяться с базой данных, а затем создавать таблицы, представления, синонимы и последовательности в соответствующей схеме.
RESOURCE – роль, предназначенная для разработчиков приложений; помимо таблиц, представлений и т. д. позволяет создавать процедуры, функции, триггеры и объектные типы в соответствующей схеме.
DBA – роль, предназначенная для администраторов; позволяет выполнять любые операции с базой данных, так как включает все системные привилегии. Кроме того, пользователь, которому предоставлена роль DBA, может предоставлять любые системные привилегии любому другому пользователю базы данных и любой роли.
SELECT_CATALOG_ROLE – роль, позволяющая обращаться с запросами к представлениям словаря данных, созданным администратором.
DELETE_CATALOG_ROLE – роль, позволяющая удалять записи из журнала аудита базы данных.
EXECUTE_CATALOG_ROLE – роль, посредством которой пользователь может выполнять модули утилиты DBMS (модуль DBMS_OUTPUT описывается ниже, в разделе посвященном PL/SQL).
EXP_FULL_DATABASE, IMP_FULL_DATABASE – роли, позволяющие экспортировать и импортировать информацию, содержащуюся в базе данных, при помощи утилит экспорта и импорта.
Хотя в ORACLE имеются заранее созданные роли, приложения, работающие с этими ролями, не всегда будут функционировать корректно. Поэтому можно изменять наборы привилегий таких ролей или даже удалять эти роли.