首页 > Linux操作系统 > Linux操作系统 > oracle细粒度审计
细粒度审计必须是在CBO模式下才能准确生效,所以统计信息和优化器的选择是使用细粒度审计必须要注意的事情。
细粒度审计 (FGA)(通过 Oracle9i 引入)可以理解为“基于政策的审计”。 就可以使用DBMS_FGA可以对指定的表的SELECT语句进行审计,但是在9i中只能对select语句进行审计,在10g中可以实现对DML的审计功能。FGA 可用于指定生成审计记录必需的条件:
SQL> desc dbms_fga
PROCEDURE ADD_POLICY
Argument Name Type In/Out Default?
------------------------------ ----------------------- ------ --------
OBJECT_SCHEMA VARCHAR2 IN DEFAULT
OBJECT_NAME VARCHAR2 IN
POLICY_NAME VARCHAR2 IN
AUDIT_CONDITION VARCHAR2 IN DEFAULT
AUDIT_COLUMN VARCHAR2 IN DEFAULT
HANDLER_SCHEMA VARCHAR2 IN DEFAULT
HANDLER_MODULE VARCHAR2 IN DEFAULT
ENABLE BOOLEAN IN DEFAULT
STATEMENT_TYPES VARCHAR2 IN DEFAULT
AUDIT_TRAIL BINARY_INTEGER IN DEFAULT
AUDIT_COLUMN_OPTS BINARY_INTEGER IN DEFAULT
PROCEDURE DISABLE_POLICY
Argument Name Type In/Out Default?
------------------------------ ----------------------- ------ --------
OBJECT_SCHEMA VARCHAR2 IN DEFAULT
OBJECT_NAME VARCHAR2 IN
POLICY_NAME VARCHAR2 IN
PROCEDURE DROP_POLICY
Argument Name Type In/Out Default?
------------------------------ ----------------------- ------ --------
OBJECT_SCHEMA VARCHAR2 IN DEFAULT
OBJECT_NAME VARCHAR2 IN
POLICY_NAME VARCHAR2 IN
PROCEDURE ENABLE_POLICY
Argument Name Type In/Out Default?
------------------------------ ----------------------- ------ --------
OBJECT_SCHEMA VARCHAR2 IN DEFAULT
OBJECT_NAME VARCHAR2 IN
POLICY_NAME VARCHAR2 IN
ENABLE BOOLEAN IN DEFAULT
Dbms_fga包支持对细粒度审计规则的添加、删除、生效和实效的功能。其中添加规则更加详细,可以指定规则到很详细的程度。
该过程有许多参数,具体含义如下:
OBJECT_SCHEMA 对其定义了 FGA 策略的表或视图的所有者
OBJECT_NAME 表或视图的名称
POLICY_NAME 策略的名称,由用户自定义
AUDIT_CONDITION 审计条件(谓语动词),默认全部
AUDIT_COLUMN 表示审计那些列,默认全部,如果指定列,那么只有select或者是where指定该列的时候才被审计
HANDLER_SCHEMA 我们还可以规定在策略执行的时候,执行一个指定用户的存储过程,这里是存储过程的所有者
HANDLER_MODULE 指定这个策略执行的时候,执行的存储过程的名称
ENABLE 是否马上生效
STATEMENT_TYPES 审计类型INSERT, UPDATE, DELETE, SELECT(10g后)
AUDIT_TRAIL 审计形势,类似于标准审计参数
AUDIT_COLUMN_OPTS 字段被审计条件
SQL> BEGIN
2 dbms_fga.add_policy( object_schema => 'user_an',
3 object_name => 'table_test',
4 policy_name => 'polic_tt',
5 audit_condition => 'a = 1',
6 audit_column => 'b',
7 enable => TRUE );
8 END;
9 /
规则添加后可以在dba_audit_policies中查询
SQL> desc DBA_AUDIT_POLICIES
Name Null? Type
----------------------------------------- -------- -----------------
OBJECT_SCHEMA NOT NULL VARCHAR2(30)
OBJECT_NAME NOT NULL VARCHAR2(30)
POLICY_NAME NOT NULL VARCHAR2(30)
POLICY_TEXT VARCHAR2(4000)
POLICY_COLUMN VARCHAR2(30)
PF_SCHEMA VARCHAR2(30)
PF_PACKAGE VARCHAR2(30)
PF_FUNCTION VARCHAR2(30)
ENABLED VARCHAR2(3)
SEL VARCHAR2(3)
INS VARCHAR2(3)
UPD VARCHAR2(3)
DEL VARCHAR2(3)
AUDIT_TRAIL VARCHAR2(11)
POLICY_COLUMN_OPTIONS VARCHAR2(11)
SQL> select * from dba_audit_policies;
OBJECT_SCH OBJECT_NAM POLICY_NAM POLICY_TEX POLICY_COL PF_SCHEMA PF_PACKAGE PF_FUNCTIO ENA SEL INS UPD DEL AUDIT_TRAIL POLICY_COLU
---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- --- --- --- --- --- ----------- -----------
AN AA POLIC_AA id = 1 ID YES YES NO NO NO DB_EXTENDED ANY_COLUMNS
详细审计结果记录在Dba_Fga_Audit_Trail中
SQL> desc Dba_Fga_Audit_Trail
Name Null? Type
----------------------------------------- -------- ----------------------------
SESSION_ID NOT NULL NUMBER
TIMESTAMP DATE
DB_USER VARCHAR2(30)
OS_USER VARCHAR2(255)
USERHOST VARCHAR2(128)
CLIENT_ID VARCHAR2(64)
EXT_NAME VARCHAR2(4000)
OBJECT_SCHEMA VARCHAR2(30)
OBJECT_NAME VARCHAR2(128)
POLICY_NAME VARCHAR2(30)
SCN NUMBER
SQL_TEXT NVARCHAR2(2000)
SQL_BIND NVARCHAR2(2000)
COMMENT$TEXT VARCHAR2(4000)
STATEMENT_TYPE VARCHAR2(7)
EXTENDED_TIMESTAMP TIMESTAMP(6) WITH TIME ZONE
PROXY_SESSIONID NUMBER
GLOBAL_UID VARCHAR2(32)
INSTANCE_NUMBER NUMBER
OS_PROCESS VARCHAR2(16)
TRANSACTIONID RAW(8)
STATEMENTID NUMBER
ENTRYID来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/13177610/viewspace-682702/ ,如需转载,请注明出处,否则将追究法律责任。