本文主要是介绍oracle 细颗粒审计FGA,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
FGA ---Fine-Grained Audit ---每个FGA审计只能针对一个表或者视图grant execute on DBMS_FGA to scott
conn scott/tiger
--建立触发的存储过程
set serveroutput on
CREATE or replace PROCEDURE log_emps_salary
(schema# varchar2, table# varchar2, policy# varchar2)
iS
BEGIN
dbms_output.put_line('用户 '||schema#||' 的表 '||table#||' 被查看了,触发了 '||policy#);
END;
/
--增加FGA审计
begin
dbms_fga.add_policy (
object_schema => 'scott',
object_name => 'emp',
policy_name => 'audit_emps_salary',
audit_condition=> 'deptno=10',
audit_column => 'sal',
handler_schema => 'scott',
handler_module => 'log_emps_salary',
enable => TRUE,
statement_types=> 'select' );
end;
/
这个审计策会记录任何用户访问了emp表的deptno为10的sal值得select操作
************************************************************************************************************************************************************
DBMS_FGA.ADD_POLICY ( *
object_schema VARCHAR2, --schema的名字,表或视图的拥有者 *
object_name VARCHAR2, --对象名,表或视图的名字 *
policy_name VARCHAR2, --审计策略名字,它和数据库中其他对象一样,需要有一个不重复,唯一的名字 *
audit_condition VARCHAR2, --筛选条件比如可以选择哪些符合条件的操作被记录 *
audit_column VARCHAR2, --表中的某一列,可以只记录对表中某一列的操作.如果不指定表示审计所有的列 *
handler_schema VARCHAR2, --是下面的handler_module的拥有者,其实也只能是创建policy的用户,而上面的object_schema可以是任意用户 *
handler_module VARCHAR2,--可以是一个一个存储过程或函数,但监测到任何一条符合条件的操作时执行它. *
enable BOOLEAN, --true 或false表示policy是开启或关闭状态,如果是false表示不进行审计 *
statement_types VARCHAR2, --表示哪些操作将被审计,可以填上select,insert,update,delete中的一个或几个 *
audit_trail BINARY_INTEGER IN DEFAULT,--有参数db,xml表示审计到的信息保存到数据库中或是以xml文件形式保存到磁盘上 *
audit_column_opts BINARY_INTEGER IN DEFAULT); --和audit_conlumn配合使用,any_columns,all_columns两个选项 *
*************************************************************************************************************************************************************
select * from emp;
select ename from emp;
--删除审计
EXEC dbms_fga.drop_policy ( -
object_schema => 'scott', -
object_name => 'emp', -
policy_name => 'audit_emps_salary');
--启用审计
begin
dbms_fga.enable_policy (
object_schema => 'scott',
object_name => 'emp',
policy_name => 'audit_emps_salary' );
end;
/
--禁用审计
begin
dbms_fga.disable_policy (
object_schema => 'scott',
object_name => 'emp',
policy_name => 'audit_emps_salary' );
end;
/
----fga相关的数据字典-------------------
DBA_FGA_AUDIT_TRAIL --查看审计记录
ALL_AUDIT_POLICIES
DBA_AUDIT_POLICIES
USER_AUDIT_POLICIES
这篇关于oracle 细颗粒审计FGA的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!