cd6e8416

Представления и FGA


До сих пор мы рассматривали применение FGA для аудита запросов к таблицам; теперь давайте посмотрим, как вы можете использовать FGA для аудита запросов к представлениям. Предположим, представление VW_ACCOUNTS определено на таблице ACCOUNTS следующим образом:

create view vw_accounts as select * from accounts;

Теперь, если пользователь выбирает данные из этого представления, а не из таблицы:

select * from vw_accounts;

вы увидите в журнале аудита следующую запись: select object_name, sql_text from dba_fga_audit_trail; OBJECT_NAME SQL_TEXT ----------- ------------------------------------------------- ACCOUNTS select * from vw_accounts

Обратите внимание, что в столбце OBJECT_NAME появляется имя базовой таблицы, а не представления, потому что в представлении данные выбираются из базовой таблицы. Однако в столбце SQL_TEXT записан фактический оператор, выданный пользователем, и это – точно то, что вы хотите знать.

Если вы хотите выполнять аудит запросов только к представлениям, а не к таблицам, вы можете установить правила аудита непосредственно для представления. Вы делаете это, указывая в параметре object_name пакетной процедуры dbms_fga.add_policy вместо имени таблицы имя представления. В этом случае столбец OBJECT_NAME в представлении DBA_FGA_AUDIT_TRAIL будет показывать имя представления, и не будет никаких дополнительных записей о доступе к таблице.



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