Роли и полномочия (привилегии) в Oracle

После аутентификации пользователя в базе данных, ему разрешается выполнять в ней действия над данными. Но какие действия? Над какими данными? Ответы на
эти вопросы зависят от полномочий, предоставленных пользователю.
Не имея никаких полномочий, пользователь не может выполнять никакие действия с БД, даже установить соединение с ней. Поэтому для работы, пользователь как
минимум должен иметь право на подключение к БД. С другой стороны, большинству пользователей не требуется создавать или удалять таблицы БД, поэтому
привилегии на создание и удаление таблиц они не имеют.
Полномочия могут назначаться как отдельным пользователям, так и ролям. Роль – это именованный набор полномочий. Использование ролей существенно облегчает
управление привилегиями. Вместо того, чтобы предоставлять десятки полномочий каждому пользователю, можно создать несколько типичных ролей (например -
пользователь, администратор, …), наделить их необходимыми полномочиями и назначить пользователям их роли. В дальнейшем, будет гораздо легче лишить
пользователя роли, нежели отобрать у него список нежелательных полномочий.
И полномочия, и роли предоставляются пользователям оператором GRANT, а отбираются соответственно - REVOKE.

GRANT INSERT, UPDATE, DELETE, SELECT ON ZVEZDA.MY_TABLE TO SCOTT;
- Даст пользователю SCOTT полномочия на вставку, изменение, удаление и выборку данных из таблицы MY_TABLE схемы ZVEZDA.

REVOKE DBA FROM SCOTT;
- Лишит пользователя SCOTT полномочий роли DBA.

Создаются, изменяются и удаляются роли стандартными операторами DDL – CREATE, ALTER и DELETE.

CREATE ROLE ZVEZDA_MANAGER IDENTIFIED BY xyz123;
- Создаст защищенную паролем «xyz123» роль ZVEZDA_MANAGER;

GRANT SELECT ON ZVEZDA.CUSTOMERS TO ZVEZDA_MANAGER;
- Предоставит полномочия на выборку данных из таблицы ZVEZDA.CUSTOMERS роли ZVEZDA_MANAGER;

GRANT ZVEZDA_MANAGER TO SCOTT;
- Предоставит полномочия роли ZVEZDA_MANAGER пользователю SCOTT.