Oracle审计篇——细粒度审计

9 篇文章 0 订阅

Oracle的标准审计默认级别是DB,这个级别不会记下具体sql语句是什么,如果需要记下需要开到DB,extended,但是改这个参数需要重启数据库生效,影响业务。

SQL> show parameter audit_trail

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
audit_trail                          string      DB

可以用细粒度审计来完成这个需求。启用细粒度审计只需要设置DBMS_FGA.ADD_POLICY存储过程,AUDIT_TRAIL使用默认值即可。

以下是一个简单的审计指定表增删改操作

BEGIN
DBMS_FGA.ADD_POLICY(OBJECT_SCHEMA  => 'TEST',
           OBJECT_NAME   => 'TEST_INDEX',
           POLICY_NAME   => 'TEST_INDEX_POL',
           ENABLE     => TRUE,
           STATEMENT_TYPES => 'INSERT,UPDATE,DELETE'); -- 可选增删改查操作,不指定则全部审计
END;
/

查询审计策略

SELECT * FROM dba_audit_policies;
SELECT * FROM dba_audit_policy_columns;

查询审计结果

select d.timestamp,d.db_user,d.os_user,d.userhost,d.object_schema,d.object_name,d.sql_text,d.sql_bind from dba_fga_audit_trail d
--where d.statement_type<>'SELECT'
order by 1

清空细粒度审计记录

truncate table sys.fga_log$;

细粒度审计可以指定很多复杂的规则,例如指定列和条件:

begin
dbms_fga.add_policy(
object_schema=>'HR',
object_name=>'EMPLOYEES',
policy_name=>'AUDI_SAL_EMP ',
audit_condition=>'salary is not null and commission_pct is not null', -- -- 指定审计条件
audit_column=>'salary,commission_pct', -- 指定列
enable=>true,
statement_types=>'select'); -- 审计类型
end;
/

ADD_POLICY Procedure

begin
DBMS_FGA.ADD_POLICY(
   object_schema      IN  VARCHAR2 DEFAULT NULL, 
   object_name        IN  VARCHAR2, 
   policy_name        IN  VARCHAR2, 
   audit_condition    IN  VARCHAR2 DEFAULT NULL, 
   audit_column       IN  VARCHAR2 DEFAULT NULL, 
   handler_schema     IN  VARCHAR2 DEFAULT NULL, 
   handler_module     IN  VARCHAR2 DEFAULT NULL, 
   enable             IN  BOOLEAN DEFAULT TRUE, 
   statement_types    IN  VARCHAR2 DEFAULT SELECT,
   audit_trail        IN  BINARY_INTEGER DEFAULT NULL,
   audit_column_opts  IN  BINARY_INTEGER DEFAULT ANY_COLUMNS,
   policy_owner       IN  VARCHAR2 DEFAULT NULL);
end;
/

例如

DBMS_FGA.ADD_POLICY (
   object_schema      =>  'scott', 
   object_name        =>  'emp', 
   policy_name        =>  'mypolicy1', 
   audit_condition    =>  'sal < 100', 
   audit_column       =>  'comm,sal', 
   handler_schema     =>   NULL, 
   handler_module     =>   NULL, 
   enable             =>   TRUE, 
   statement_types    =>  'INSERT, UPDATE', 
   audit_column_opts  =>   DBMS_FGA.ANY_COLUMNS,
   policy_owner       =>  'sec_admin); 

DISABLE_POLICY Procedure

begin
DBMS_FGA.DISABLE_POLICY (
object_schema   =>  'scott',
object_name     =>  'emp',
policy_name     =>  'mypolicy1');
end;
/

DROP_POLICY Procedure

begin
DBMS_FGA.DROP_POLICY (
object_schema   =>  'scott',
object_name     =>  'emp',
policy_name     =>  'mypolicy1');
end;
/

ENABLE_POLICY Procedure

begin
DBMS_FGA.ENABLE_POLICY (
object_schema    =>  'scott',
object_name      =>  'emp',
policy_name      =>  'mypolicy1',
enable           =>   TRUE);
end;
/

具体含义参考

DBMS_FGA

常用视图

  • SYS.FGA_LOG$:基表。如果audit_trail参数包含DB,审计记录会被记录在FGA_LOG$表中。
  • V$XML_AUDIT_TRAIL:如果audit_trail参数包含XML,审计记录会记录在AUDIT_FILE_DEST初始化参数指定的目的地下的XML文件中,Oracle会读取这些XML文件,生成V$XML_AUDIT_TRAIL动态性能视图,方便DBA查看审计详细信息。
  • DBA_AUDIT_POLICIES:详细记录了审计配置的策略信息。
  • DBA_FGA_AUDIT_TRAIL:查看到审计的SQL语句和绑定变量。
  • DBA_COMMON_AUDIT_TRAIL:包含V$XML_AUDIT_TRAIL动态性能视图的内容,是标准和细粒度审计记录。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hehuyi_In

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值