备份oracle12c系统只读aud表,Oracle 12c 统一审计(Unified Auditing)--基础篇

Oracle 12c 统一审计(Unified Auditing)

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

审计(Auditing)

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

统一审计(Unified Auditing)

Oracle Database 12c 推出一套全新的审计架构,称为统一审计功能。统一审计主要利用策略和条件在 Oracle

数据库内部有选择地执行有效的审计。新架构将现有审计跟踪统一为单一审计跟踪,从而简化了管理,提高了数据库生成的审计数据的安全性。

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

Database Security Guide

初始安装的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审计策略的详细可以参考以下官方在线文档,

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

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的详细语法,可以参考以下官方在线文档,

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用于确认现在有效的审计策略

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

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

统一审计使用的总结:

创建一个审计策略

使审计策略有效

执行相关的操作

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

确认审计结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值