- •Теперь, когда вы овладели использованием детального аудита во всех типах сред, научитесь использовать его дополнительные возможности в сервере Oracle Database 10g
- •Fga в сервере Oracle9iDatabase
- •Все типы dml-операторов
- •Сравнение с подходом на основе триггеров
- •Поведение средств fga во время изменения данных
- •Все важные столбцы?
- •Регистрация значений переменных связывания
- •Обобщение вышеизложенного
- •Комбинируем обычный и детальный аудит
- •Аудит fga и обычный аудит: различия
Регистрация значений переменных связывания
В сервере Oracle Database 10gв журнал обычного аудита может записываться дополнительная информация, такая, как значения переменных связывания, используемых в запросах. Этот режим включается установкой параметра инициализации:
audit_trail = DB_EXTENDED
Возможно, не имеет смысла сохранять значения переменных связывания в журнале аудита FGA. Если вы хотите прекратить запись значений переменных связывания, вы можете использовать еще один параметр процедуры add_policy():
audit_trail => DB
По умолчанию переменные связывания записываются, и значение этого параметра устанавливается как DB_EXTENDED.
Обобщение вышеизложенного
Теперь, когда вы узнали о нескольких новых параметрах FGA в сервере Oracle Database 10g, посмотрим, как сейчас выглядит определение скрипта для создания правил аудита.
В скрипте мы определяем четыре различных правила, соответствующих четырем типам операторов. Правила для операторов SELECT показаны ниже; здесь мы решили не записывать значения переменных связывания и инициировать события аудита только тогда, когда в запросе используются оба столбца ACCOUNT_NO и BALANCE:
begin
dbms_fga.add_policy (
object_schema => 'ANANDA',
object_name => 'ACCOUNTS',
policy_name => 'ACCOUNTS_SEL',
audit_column => 'ACCOUNT_NO, BALANCE',
audit_condition => 'BALANCE >= 3000',
statement_types => 'SELECT',
audit_column_opts => DBMS_FGA.ALL_COLUMNS,
audit_trail => DB
);
end;
Так же мы создадим подобные правила для операторов INSERT, UPDATE и DELETE. Они могут произвольно быть включенными или выключенными.
Комбинируем обычный и детальный аудит
В сервере Oracle Database 10gсредства обычного аудита были также значительно улучшены. Управляемые с помощью оператора AUDIT средства обычного аудита могут теперь регистрировать дополнительную полезную информацию, такую, как:
расширенные, гранулированные отметки времени;
идентификаторы процессов операционной системы;
идентификаторы транзакций (когда запись аудита генерируется для транзакции, модифицирующей данные, например, обновляющей их, записывается идентификатор транзакции, который позднее можно использовать для соединения с представлением DBA_TRANSACTION_QUERY для идентификации точного оператора, SQL-операторов для отката транзакции, идентификатора строки и т.п.);
текст SQL-операторов;
значения переменных связывания;
номер SCN во время изменения.
Как видите, по содержанию и возможностям обычный аудит походит на детальный аудит. Но, как администратор базы данных, вы заинтересованы в получении всех записей аудита, а не только одного типа. Новое представление DBA_COMMON_AUDIT_TRAIL объединяет записи аудита FGA и обычного аудита. Чтобы проверить оба журнала аудита, используйте следующий запрос:
select * from dba_common_audit_trail;
Это представление объединяет представления DBA_AUDIT_TRAIL и DBA_FGA_AUDIT_TRAIL, извлекая важную информацию из каждого. Оно создается в словаре данных следующим образом:
select 'Standard Audit', SESSIONID,
PROXY_SESSIONID, STATEMENTID, ENTRYID, EXTENDED_TIMESTAMP, GLOBAL_UID,
USERNAME, CLIENT_ID, Null, OS_USERNAME, USERHOST, OS_PROCESS, TERMINAL,
INSTANCE_NUMBER, OWNER, OBJ_NAME, Null, NEW_OWNER,
NEW_NAME, ACTION, ACTION_NAME, AUDIT_OPTION, TRANSACTIONID, RETURNCODE,
SCN, COMMENT_TEXT, SQL_BIND, SQL_TEXT,
OBJ_PRIVILEGE, SYS_PRIVILEGE, ADMIN_OPTION, GRANTEE, PRIV_USED,
SES_ACTIONS, LOGOFF_TIME, LOGOFF_LREAD, LOGOFF_PREAD, LOGOFF_LWRITE,
LOGOFF_DLOCK, SESSION_CPU
from DBA_AUDIT_TRAIL
UNION ALL
select 'Fine Grained Audit', SESSION_ID,
PROXY_SESSIONID, STATEMENTID, ENTRYID, EXTENDED_TIMESTAMP, GLOBAL_UID,
DB_USER, CLIENT_ID, EXT_NAME, OS_USER, USERHOST, OS_PROCESS, Null,
INSTANCE_NUMBER, OBJECT_SCHEMA, OBJECT_NAME, POLICY_NAME, Null,
Null, Null, STATEMENT_TYPE, Null, TRANSACTIONID, Null,
SCN, COMMENT$TEXT, SQL_BIND, SQL_TEXT,
Null, Null, Null, Null, Null,
Null, Null, Null, Null, Null,
Null, Null
from DBA_FGA_AUDIT_TRAIL