重庆思庄Oracle、Redhat认证学习论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2609|回复: 0
打印 上一主题 下一主题

[体系架构] 【12c】新特性 - 统一审计(Unified Auditing)

[复制链接]
跳转到指定楼层
楼主
发表于 2020-6-3 12:00:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 windjack 于 2020-6-8 15:49 编辑

【12c】新特性 - 统一审计(Unified Auditing)

本章主要针对统一审计(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中修复。)

开启统一审计

你可以通过以下的方法把数据库审计的混合模式切换到完全的统一审计
SQL> conn /as sysdba
SQL> SHUTDOWN IMMEDIATE
SQL> EXIT
**************************************************
ON Linux/Unix:
$ lsnrctl stop listener_name
$ cd $ORACLE_HOME/rdbms/lib
$ make -f ins_rdbms.mk uniaud_on ioracle ORACLE_HOME=$ORACLE_HOME

On Windows:
cd %ORACLE_HOME%\BIN
改名备份现有orauniaud12.dll文件
ren orauniaud12.dll  orauniaud12.dll.bak

重新将支持统一审计的文件orauniaud12.dll.dbl复制为orauniaud12.dll

ren orauniaud12.dll.dbl orauniaud12.dll

**************************************************
$ lsnrctl start listener_name
SQL> conn /as sysdba
SQL> STARTUP


关闭统一审计

你也可以通过以下的方法把数据库统一审计功能关闭掉(UNIX为例)。
SQL> conn /as sysdba
SQL> SHUTDOWN IMMEDIATE
SQL> EXIT
**************************************************
ON Linux/Unix:
$ lsnrctl stop listener_name
$ cd $ORACLE_HOME/rdbms/lib
$ make -f ins_rdbms.mk uniaud_off ioracle
$ lsnrctl start listener_name


On Windows:
cd %ORACLE_HOME%\BIN
ren orauniaud12.dll.bak orauniaud12.dll

**************************************************
SQL> conn /as sysdbaSQL> 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的审计,
而增加了一个新的审计策略ORALOGON_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>  select AUDIT_TYPE,OS_USERNAME,TERMINAL,ACTION_NAME,  SQL_TEXT,UNIFIED_AUDIT_POLICIES  from UNIFIED_AUDIT_TRAIL where OBJECT_NAME='EMP';
AUDIT_TYPE OS_USERNAME TERMINAL ACTION_NAM SQL_TEXT   UNIFIED_AU
---------- --------------- -------------------------------- ---------- ------------------------------ ----------
Standard   XXXX-CN\walt   XXXX-CN SELECT SELECT COUNT(*) FROM scott.emp UP1
统一审计使用的总结:
创建一个审计策略

使审计策略有效

执行相关的操作

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

确认审计结果

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持 反对反对
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|重庆思庄Oracle、Redhat认证学习论坛 ( 渝ICP备12004239号-4 )

GMT+8, 2024-4-20 04:49 , Processed in 0.082027 second(s), 20 queries .

重庆思庄学习中心论坛-重庆思庄科技有限公司论坛

© 2001-2020

快速回复 返回顶部 返回列表