【Unified Auditing】Oracle 12c 统一审计基础介绍

勤奋不是嘴上说说而已,而是实际的行动,在勤奋的苦度中持之以恒,永不退却。业精于勤,荒于嬉;行成于思,毁于随。在人生的仕途上,我们毫不迟疑地选择勤奋,她是几乎于世界上一切成就的催产婆。只要我们拥着勤奋去思考,拥着勤奋的手去耕耘,用抱勤奋的心去对待工作,浪迹红尘而坚韧不拔,那么,我们的生命就会绽放火花,让人生的时光更加的闪亮而精彩。

导读:本篇文章讲解 【Unified Auditing】Oracle 12c 统一审计基础介绍,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

Oracle 12c 统一审计(Unified Auditing)

版权声明:本文为博主原创文章,转载请注明出处,谢谢。http://blog.csdn.net/lukeunique

本章主要针对统一审计(Unified Auditing)的一些基础知识,进行概要的讲解和回顾。

审计(Auditing)

审计功能(Audit)用于监视用户所执行的数据库操作,并且Oracle会将审计跟踪结果存放指定的地方。

统一审计(Unified Auditing)

Oracle Database 12c 推出一套全新的审计架构,称为统一审计功能。统一审计主要利用策略和条件在 Oracle 数据库内部有选择地执行有效的审计。新架构将现有审计跟踪统一为单一审计跟踪,从而简化了管理,提高了数据库生成的审计数据的安全性。

关于统一审计的基础知识,大家可以参考以下Oracle的官方在线文档,在这里仅作简单的介绍。

Database Security Guide

https://docs.oracle.com/database/121/DBSEG/auditing.htm#DBSEG630

初始安装的12c数据库,为了兼容以前的版本默认启用混合模式,即传统审计和统一审计同时有效。你可以通过手动移植到完全的统一审计,也可以使统一审计无效,沿用传统审计。
你可以通过以下的SQL文,查询统一审计是否有效。TRUE表示完全的统一审计有效。FALSE表示并非是完全的统一审计。

SQL>SELECT PARAMETER,VALUE FROM V$OPTION WHERE PARAMETER = 'Unified Auditing';
PARAMETER         VALUE
----------------  ----------
Unified Auditing  TRUE

(注意:在SE的数据库12.1.0.1和12.1.0.2版本中,由于Bug 17466854的影响,即使完全的统一审计有效的情况下,V$OPTION的Unified Auditing行也表示为FALSE。Bug 17466854将在未来版本12.2中修复。)

你可以通过以下的方法把数据库审计的混合模式切换到完全的统一审计(UNIX为例)。

SQL> conn /as sysdba
SQL> SHUTDOWN IMMEDIATE
SQL> EXIT

$ lsnrctl stop listener_name
$ cd $ORACLE_HOME/rdbms/lib
$ make -f ins_rdbms.mk uniaud_on ioracle ORACLE_HOME=$ORACLE_HOME
$ lsnrctl start listener_name

SQL> conn /as sysdba
SQL> STARTUP

你也可以通过以下的方法把数据库统一审计功能关闭掉(UNIX为例)。

SQL> conn /as sysdba
SQL> SHUTDOWN IMMEDIATE
SQL> EXIT

$ lsnrctl stop listener_name
$ cd $ORACLE_HOME/rdbms/lib
$ make -f ins_rdbms.mk uniaud_off ioracle
$ lsnrctl start listener_name

SQL> conn /as sysdba
SQL> STARTUP

默认有效的审计策略

12c数据库中预先定义了一些审计策略,并且根据版本不同,默认开启的审计策略也略有不同。

我们可以通过audit_unified_enabled_policies视图进行确认默认开启的统一审计的审计策略。

SQL> --12.1.0.2的默认审计策略
SQL> select USER_NAME,POLICY_NAME,ENABLED_OPT,SUCCESS,FAILURE from audit_unified_enabled_policies;

USER_NAME   POLICY_NAME         ENABLED_OPT  SUCCES FAILUR
-------------------- -------------------- ---------------- ------ ------
ALL USERS   ORA_SECURECONFIG     BY           YES  YES
ALL USERS   ORA_LOGON_FAILURES   BY           NO   YES

SQL> --12.1.0.1的默认审计策略
SQL> select USER_NAME,POLICY_NAME,ENABLED_OPT,SUCCESS,FAILURE from audit_unified_enabled_policies;

USER_NAME   POLICY_NAME         ENABLED_OPT  SUCCES FAILUR
-------------------- -------------------- ---------------- ------ ------
ALL USERS   ORA_SECURECONFIG     BY           YES  YES

由上面的输出结果我们可以看到,不做任何配置的情况下,
在12.1.0.2数据库的环境中,默认开启了ORA_SECURECONFIG和ORA_LOGON_FAILURES审计策略,数据库会根据这2个审计策略,对相应的操作进行审计。
在12.1.0.1数据库的环境中,默认开启了ORA_SECURECONFIG审计策略,数据库会根据这个审计策略,对相应的操作进行审计。

需要说明的是,ORA_SECURECONFIG审计策略在12.1.0.1和12.1.0.2的版本上的定义是不同的。

在12.1.0.1数据库的环境中,ORA_SECURECONFIG审计策略包含了对所有LOGON和LOGOFF的审计。

而在12.1.0.2数据库中,,ORA_SECURECONFIG审计策略移除了对所有LOGON和LOGOFF的审计,而增加了一个新的审计策略ORA_LOGON_FAILURES,用于仅审计登陆失败的操作。这样更加方管理,也能改善因为大量LOGON和LOGOFF的审计对表空间的浪费。

ORA_SECURECONFIG审计策略的详细可以参考以下官方在线文档,

http://docs.oracle.com/database/121/DBSEG/audit_config.htm#CHDIGFHG

ORA_LOGON_FAILURES审计策略的详细可以参考以下,
http://docs.oracle.com/database/121/DBSEG/audit_config.htm#DBSEG703

无效掉默认的审计策略方法。

SQL>--12.1.0.2的环境
SQL> noaudit policy ORA_SECURECONFIG;
Noaudit succeeded.
SQL> noaudit policy ORA_LOGON_FAILURES;
Noaudit succeeded.

SQL>--12.1.0.1的环境
SQL> noaudit policy ORA_SECURECONFIG;
Noaudit succeeded.

定制审计策略的做成

用户可以根据自身的业务需求,通过CREATE AUDIT POLICY文做成定制的审计策略,以达到审计的目的。

审计策略做成文CREATE AUDIT POLICY的详细语法,可以参考以下官方在线文档,

https://docs.oracle.com/database/121/DBSEG/audit_config.htm#DBSEG357

CREATE AUDIT POLICY policy_name
{ {privilege_audit_clause [action_audit_clause ] [role_audit_clause ]}
    | { action_audit_clause  [role_audit_clause ] } 
    | { role_audit_clause }
 }        
[WHEN audit_condition EVALUATE PER {STATEMENT|SESSION|INSTANCE}] 
[CONTAINER = {CURRENT | ALL}];  

审计策略相关操作例:

SQL> --创建一个审计策略,审计对表scott.emp的select操作
SQL> create audit policy up1
  2  actions select on scott.emp;

审计策略已创建。

SQL> --使审计策略有效
SQL> audit policy up1;

审计已成功。

SQL> --确认做成的审计策略
SQL> set linesize 200
SQL> col POLICY_NAME format a20
SQL> col OBJECT_NAME format a15
SQL> select POLICY_NAME,AUDIT_OPTION_TYPE,OBJECT_NAME,COMMON from AUDIT_UNIFIED_POLICIES where POLICY_NAME = upper('up1');

POLICY_NAME  AUDIT_OPTION_TYPEOBJECT_NAME COMMON
-------------------- ------------------------------------ --------------- ------
UP1  OBJECT ACTIONEMP NO

SQL> --确认现在有效的审计策略
SQL> col POLICY_NAME format a20
SQL> col USER_NAME format a20
SQL> select USER_NAME,POLICY_NAME,ENABLED_OPT,SUCCESS,FAILURE  from AUDIT_UNIFIED_ENABLED_POLICIES;

USER_NAMEPOLICY_NAME  ENABLED_OPT  SUCCES FAILUR
-------------------- -------------------- ---------------- ------ ------
ALL USERSORA_SECURECONFIG BY   YESYES
ALL USERSORA_LOGON_FAILURES   BY   NO YES
ALL USERSUP1  BY   YESYES

SQL> --无效掉审计策略
SQL> NOAUDIT POLICY UP1;

审计未成功。

SQL> --再次确认现在有效的审计策略,UP1已经没有了。
SQL> select USER_NAME,POLICY_NAME,ENABLED_OPT,SUCCESS,FAILURE  from AUDIT_UNIFIED_ENABLED_POLICIES;

USER_NAMEPOLICY_NAME  ENABLED_OPT  SUCCES FAILUR
-------------------- -------------------- ---------------- ------ ------
ALL USERSORA_SECURECONFIG BY   YESYES
ALL USERSORA_LOGON_FAILURES   BY   NO YES

SQL> --删除审计策略
SQL> DROP AUDIT POLICY UP1;

审计策略已删除。

SQL> select POLICY_NAME,AUDIT_OPTION_TYPE,OBJECT_NAME,COMMON from AUDIT_UNIFIED_POLICIES where POLICY_NAME = upper('up1');

未选定行

注意:在删除某审计策略之前,必须无效掉该审计策略,否则会报ORA-46361错误。

SQL> DROP AUDIT POLICY UP1;
DROP AUDIT POLICY UP1
*
第 1 行出现错误:
ORA-46361: 当前已启用审计策略, 因此无法删除此策略。

AUDIT_UNIFIED_POLICIES用于确认数据库内所有的审计策略的详细

AUDIT_UNIFIED_ENABLED_POLICIES用于确认现在有效的审计策略

关于统一审计的动态视图和字典表的详细,可以参考以下官方在线文档,
https://docs.oracle.com/database/121/DBSEG/audit_config.htm#DBSEG0635

审计记录结果

以前的审计功能,不同的组件会放在不同的位置存储,例如:

  • SYS.AUD$会存放数据库的标准审计结果
  • SYS.FGA_LOG$ 会存放细粒度审计结果(fine-grained auditing)
  • DVSYS.AUDIT_TRAIL$会存放Oracle Database Vault和Oracle Label Security等组件的审计结果
  • 等等。。。

在统一审计功能下,存储和查看更加简单化,所有的审计结果都存放在新追加的AUDSYS schema下,并可以通过字典表UNIFIED_AUDIT_TRAIL,进行确认。

SQL> col OS_USERNAME format a15
SQL> col SQL_TEXT format a30
SQL> COL AUDIT_TYPE format a10
SQL> col  ACTION_NAME format a10
SQL> col UNIFIED_AUDIT_POLICIES  format a10
SQL>  select AUDIT_TYPE,OS_USERNAME,TERMINAL,ACTION_NAME,
  2  SQL_TEXT,UNIFIED_AUDIT_POLICIES
  3   from UNIFIED_AUDIT_TRAIL where OBJECT_NAME='EMP';

AUDIT_TYPE OS_USERNAME TERMINAL ACTION_NAM SQL_TEXT   UNIFIED_AU
---------- --------------- -------------------------------- ---------- ------------------------------ ----------
Standard   XXXXX-CN\walt   XXXX-CN SELECT SELECT COUNT(*) FROM scott.emp UP1

统一审计使用的总结:

创建一个审计策略

使审计策略有效

执行相关的操作

统一审计的审计结果写到数据文件

确认审计结果

版权声明:本文为博主原创文章,转载请注明出处,谢谢。http://blog.csdn.net/lukeunique

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/141646.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!