【Unified Auditing】Oracle 12c 統一審計基礎介紹

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

發佈了39 篇原創文章 · 獲贊 30 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章