cd6e8416

Все важные столбцы?


Рассмотрим правило аудита, определенное для таблицы ACCOUNTS следующим образом: 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' ); end;

Как видите, правило аудита определено для столбцов аудита ACCOUNT_NO (номер счета) и BALANCE (остаток на счете). Предположим, если остаток на счете 9995 равен 3,200 и пользователь выполнит следующий оператор:

select balance from accounts where account_no = 9995;

то будет выполнен аудит оператора, поскольку данные выбирались из столбца остатков и остаток равен 3,200, больше чем 3,000, что удовлетворяет условию аудита. Оператор будет инициировать событие аудита независимо от того, какие столбцы выбирались (любые из трех).

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

select sum(balance) from accounts;

Этот запрос довольно невинен: он определенно не идентифицирует владельца банковского счета и остаток на счете. Политика безопасности (security policy) банка Acme Bank может не требовать аудита таких запросов. Однако аудит следующего запроса должен быть выполнен, так как он идентифицирует конкретный банковский счет:

select balance from accounts where account_no = 9995

По умолчанию выполняется аудит всех операторов независимо от комбинации используемых столбцов. Это приводит к появлению в журнале аудита большого количества ненужных записей и, возможно, к некоторым проблемам с ограничениями пространства. Чтобы уменьшить количество записей аудита, вы можете разрешить генерацию записей аудита только тогда, когда в запросе используются желательные комбинации столбцов. Определяя правило, вы можете использовать новый параметр:

audit_column_opts => DBMS_FGA.ALL_COLUMNS

Этот параметр заставит FGA создавать записи аудита только тогда, когда запрос обращается к обоим столбцам: ACCOUNT_NO и BALANCE. Например, следующий запрос инициирует создание записи аудита:

select account_no, balance from accounts;

Но этот запрос не будет инициировать создание записи аудита:

select account_no from accounts;

Использование этого параметра позволит ограничить объем информации аудита до более приемлемого размера. Если желателен режим аудита по умолчанию, то есть при обращении к любому из столбцов аудита, то вы можете использовать другое значение этого же параметра:

audit_column_opts => DBMS_FGA.ANY_COLUMNS



Содержание раздела