привилегию 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, выпущенных текущим
пользователем.