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

привилегию AUDIT SYSTEM. Примером высокоуровневой операции

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

какая таблица задействована.

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

либо пользователь должен иметь привилегию AUDIT ANY, либо

объект базы данных должен находиться в схеме этого пользователя.

Примером операции с конкретным объектом базы данных служит

выпуск выражения SELECT для конкретной таблицы.

В следующем примере осуществляется подключение к базе данных под

пользователем system и передача привилегий AUDIT SYSTEM и AUDIT ANY

пользователю store:

□ CONNECT system/manager

GRANT AUDIT SYSTEM TO store;

GRANT AUDIT ANY TO store;

Примеры аудита

В следующем примере осуществляется подключение к базе данных под

пользователем store и аудит выпуска выражений CREATE TABLE:

□ CONNECT store/store_password

AUDIT CREATE TABLE;

В результате применения этого выражения AUDIT любые выпущенные

выражения CREATE TABLE будут подвергнуты аудиту. Например, следующее

выражение создаёт простую тестовую таблицу:

308 Гпава 9

□ CREATE TABLE test (

id INTEGER

);

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

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

представления USER_AUDIT_TRAIL. Следующий пример демонстрирует аудиторскую

запись, сгенерированную предыдущим выражением CREATE

TABLE:

□ SELECT username, extendedjtimestamp, audit_option

FROM user_audit_trail

WHERE audit_option=’ CREATE TABLE’ ;

USERNAME

EXTENDED_TIMESTAMP

AUDIT_0PTI0N

Store

20-may-07 04.13.43.453000 pm -07:00

CREATE TABLE

Вы также можете выполнять аудит выпуска выражений конкретным

пользователем. В следующем примере выполняется аудит всех выражений

SELECT, выпущенных пользователем store:

□ AUDIT SELECT TABLE BY store;

В следующем примере выполняется аудит всех выражений INSERT,

UPDATE и DELETE, выпущенных пользователями store и steve:

П AUDIT INSERT TABLE, UPDATE TABLE, DELETE TABLE BY store, steve;

Вы также можете выполнять аудит выпуска выражений, подготовленных

для конкретного объекта базы данных. В следующем примере выполняется

аудит всех выражений SELECT, выпущенных для таблицы products:

□ AUDIT SELECT ON store.products;

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

для таблицы employees:

□ AUDIT ALL ON store.employees;

Вы можете также использовать опции WHENEVER SUCCESSFUL и WHENEVER

NOT SUCCESSFUL для указания, в каких случаях должен осуществляться аудит.

Опция WHENEVER SUCCESSFUL показывает, что аудит будет выполняться для

успешно выполненных выражений. Опция WHENEVER NOT SUCCESSFUL показывает,

что аудит будет выполняться для выражений, выполненных с

ошибками. По умолчанию аудит выполняется в обоих случаях, вне зависимости

от успеха выполненной операции. Следующие примеры используют

опцию WHENEVER NOT SUCCESSFUL:

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

П AUDIT UPDATE TABLE BY Steve WHENEVER NOT SUCCESSFUL;

AUDIT INSERT TABLE WHENEVER NOT SUCCESSFUL;

Следующий пример использует опцию WHENEVER SUCCESSFUL для аудита

создания и удаления пользователя:

□ AUDIT CREATE USER, DROP USER WHENEVER SUCCESSFUL;

Следующий пример использует опцию WHENEVER SUCCESSFUL для аудита

создания и удаления пользователя пользователем store:

□ AUDIT CREATE USER, DROP USER BY store WHENEVER SUCCESSFUL;

Вы также можете использовать опции BY SESSION и BY ACCESS. Указание

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

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

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

данных начинается с момента подключения пользователя к базе данных и

заканчивается в момент отключения пользователя от базы данных. Указание

опции BY ACCESS приводит к тому, что аудиторская запись добавляется

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

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

опций BY SESSION и BY ACCESS:

□ AUDIT SELECT ON store.products BY SESSION;

AUDIT DELETE ON store.employees BY ACCESS;

AUDIT INSERT, UPDATE ON store.employees BY ACCESS;

Просмотр аудиторского следа

Ранее вы уже видели пример использования представления USER_AUDIT_

TRAIL. В следующем списке дано описание этого и других представлений

аудиторского следа.

■ USER_AUDIT_OBJЕСТ отображает аудиторские записи для всех доступных

объектов текущему пользователю.

■ USER_AUDIT_SESSION отображает аудиторские записи для подключений

и отключений текущего пользователя.

■ USER_AUDIT_STATEMENT отображает аудиторские записи для выражений

GRANT, REVOKE, AUDIT, NOAUDIT h ALTER SYSTEM, выпущенных текущим

пользователем.