暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

oracle 细粒度审计(fga)

原创 海娃 2022-06-20
1776

细粒度审计(FGA:Fine Grained Auditing)实现对特定行和列自定义审计。

作用:使用标准的审计,可以审计谁访问了哪些对象,但无法知道访问了哪些行或列。细粒度的审计可解决这个问题,它不仅为需要访问的行指定谓词(或where子句),还指定了表中访问的列

操作:DML(INSERT、DELETE、UPDATE、SELECT)

性能:通过只在访问某些行和列时审计对表的访问,可以极大地减少审计表条目的数量

        除了简单的跟踪语句之外,FGA还通过在每次用户选择特定的数据集时执行一段代码,提供了一种方法来模拟用于SELECT语句的触发器。可按表或视图中的单个列设置重点的FGA审计选项,FGA审计选项设置可设置为条件选项,以便只在符合特定管理员定义的规范时才捕获审计。FGA支持多个相关列。默认情况下,如果其中任何一列出现在SQL语句中,就会审计该列


常用的方法如下:

--查看数据库已有的审计策略
select * from dba_audit_policies;
--审计日志
select * from dba_fga_audit_trail;
--清理日志
truncate table sys.fga_log$;
/*
--添加审计策略
--audit_condition:限定审计记录表达式,null表示审计所有记录,例子中排除ogg用户
--statement_type:审计语句类型
--audit_column_opts:在某条语句涉及AUDIT_COLUMN实参中列出的任何列或所有列的情况下,确定是否进行审计。
--选项包括DBMS_FGA_ANY_COLUMNS (默认)以及DBMS_FGA_ALL_COLUMNS
*/
begin
    dbms_fga.add_policy(
        object_schema=>'tiger',
        object_name=>'tb1',
        audit_column=>'COL1',
        policy_name=>'tb1_sga_dml',
        audit_condition=>'SYS_CONTEXT(''USERENV'',''SESSION_USER'')<>''OGG''',
        statement_type=>'UPDATE,DELETE,INSERT',
        audit_column_opts=>DBMS_FGA.ANY_COLUMNS
    );
end;
--删除审计策略
begin
    dbms_fga.drop_policy(
        object_schema=>'tiger',
        object_name=>'tb1',
        policy_name=>'tb1_sga_dml'
    );
end;
--关闭审计策略
begin
    dbms_fga.disable_policy(
        object_schema=>'tiger',
        object_name=>'tb1',
        policy_name=>'tb1_sga_dml'
    );
end;
--开启审计策略
begin
    dbms_fga.enable_policy(
        object_schema=>'tiger',
        object_name=>'tb1',
        policy_name=>'tb1_sga_dml',
        enable=>TRUE
    );
end;
复制
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论