Выбрать главу

SELECT NO

HR MANAGER STORE

SALARY GRADES

UPDATE NO

Как пользоваться привилегиями, предоставленными роли

После того как пользователю была предоставлена привилегия через роль,

он может использовать эту привилегию для выполнения конкретной задачи.

Например, пользователь steve имеет роль overall_manager. Этой роли

предоставлены две другие роли: product_manager и|-|г_тападег.Ролиргос1ис1:_

manager была предоставлена объектная привилегия SELECT для таблиц

products и product_types. Следовательно, у пользователя steve есть возможность

проводить выборку строк из этих таблиц:

□ CONNECT steve/button '

SELECT p.name, pt.name

FROM store.products p, store.product_types pt

WHERE p.product_type_id = pt.product_type_id;

NAME NAME

Modern Science Book

Chemistry Book

Supernova Video

Tank War Video

Z Files Video

2412: The Return Video

Space Force 9 DVD

From Another Planet DVD

Classical Music CD

Pop 3 CD

Creative Yell CD

Роли по умолчанию

По умолчанию, когда роль предоставляется пользователю, эта роль является

для него активированной. Это означает, что когда пользователь подключается

к базе данных, роль становится для него доступной автоматически.

Для повышения безопасности системы можно по умолчанию заблокировать

эту роль; после того как пользователь подключится к базе данных,

он будет должен активировать для себя эту роль, прежде чем сможет

начать пользоваться ею. Если у роли есть пароль, пользователь должен его

ввести, прежде чем ему будет разрешено пользоваться ролью. Например, у

overall_manager есть пароль manager_password, а роль overall_manager предоставлена

пользователю steve. В приведенном ниже примере overall_

manager блокируется, так что steve должен будет активировать эту роль и

306 Глава 9

ввести для нее пароль, прежде чем он сможет начать пользоваться этой

ролью. Можно изменить роль таким образом, чтобы она перестала быть

ролью по умолчанию, используя для этого оператор ALTER ROLE. В следующем

примере мы подключаемся как system и изменяем пользователя steve

таким образом, чтобы overalljnanager перестал быть для него ролью по

умолчанию:

□ CONNECT system/manager

ALTER USER steve DEFAULT ROLE ALL EXCEPT overalljnanager;

Когда вы подключаетесь как steve, вам необходимо активировать

overall_manager, используя SET ROLE:

□ CONNECT steve/button

SET ROLE overalljnanager IDENTIFIED BY manage^password;

После установления роли можно использовать привилегии, предоставленные

этой роли. Можно установить свою роль на полное отсутствие ролей

(попе) с помощью следующего оператора:

□ SET ROLE NONE;

Кроме того, можно установить все ваши роли за исключением overall_

manager, используя следующий оператор:

□ SET ROLE ALL EXCEPT overalljnanager;

Назначая ролям пароли и устанавливая роли неактивными для пользователя

по умолчанию, вы вводите дополнительный уровень защиты.

Отзыв роли

Для отзыва роли используется оператор REVOKE. В следующем примере мы

подключаемся как store и отзываем роль overall_manager у пользователя

steve:

П CONNECT store/store_password

REVOKE overalljnanager FROM steve;

Отзыв привилегий у роли

Для отзыва привилегий у роли также используется оператор REVOKE. В следующем

примере мы подключаемся как store и отзываем все привилегии

на таблицы products и product jtypes у роли productjnanager (в предположении,

что мы все еще подключены как store):

□ REVOKE ALL ON products FROM productjnanager;

REVOKE ALL ON product_types FROM productjnanager;

Удаление роли

Для удаления роли используется оператор DROP ROLE. В следующем примере

удаляются роли overalljnanager, product_manager и hr_manager (в предположении,

что мы все еще подключены как store):

Пользователи, привилегии и роли 307

□ DROP ROLE overalljnanager;

DROP ROLE productjnanager;

DROP ROLE hrjnanager;

Аудит базы данных

Программное обеспечение базы данных Oracle содержит средства аудита,

которые позволяют отслеживать действия базы данных. Некоторые действия

можно контролировать на высоком уровне, например, неудачные попытки

подключения к базе данных, в то время как другие действия можно

контролировать на низком уровне, например, выборка пользователем

строк из конкретной таблицы. Обычно администратор базы данных отвечает

за включение функций аудита и отслеживание нарушений политики

безопасности. В этом разделе вы увидите несколько простых примеров использования

функций аудита, которые осуществляются при помощи выражения

AUDIT.

Привилегии, которые необходимы для проведения аудита

Перед тем, как пользователь сможет генерировать выражения AUDIT, ему

необходимо дать определённые привилегии.

■ Для аудита высокоуровневых операций пользователь обязан иметь