初識ORACLE的審計功能

zhang_1202發表於2015-11-12

順著這樣的思路去學習。
1、審計可以達到怎樣的效果?我用來做什麼?
2、任何概念都該有分類的吧,審計也不例外?
3、如何啟用審計?資料庫一級。
4、如何設定我所需要的審計?針對某個特定的監視目標了。
5、如何看審計的結果?
6、論壇上一些常見的問題,自己認為比較難理解的問題。

[@more@]

初識ORACLE的審計功能

順著這樣的思路去學習。
1、審計可以達到怎樣的效果?我要來做什麼?
2、有分類嗎?
3、如何啟用審計?資料庫一級。
4、如何設定我所需要的審計?針對某個特定的監視目標了。
5、如何看審計的結果?
6、論壇上一些常見的問題,自己認為比較難理解的問題。

一、審計可以達到怎樣的效果?
可以記錄對資料庫物件的所有操作。什麼時候,什麼使用者對什麼物件進行了什麼型別的操作。
但是無法得知操作的細節,比如到底資料更新成了1還是2?
不過現在新出現的精細審計(Fine grained Auditing),好像也可以記錄DML語句了。

二、審計可以分為3類。或者說,可以從3種角度去啟用審計。
1、語句審計(Statement Auditing)。
對預先指定的某些SQL語句進行審計。這裡從SQL語句的角度出發,進行指定。審計只關心執行的語句。
例如,audit CREATE TABLE;命令,就表明對"create table"語句的執行進行記錄。
不管這語句是否是針對某個物件的操作

2、許可權審計(Privilege Auditing)
對涉及某些許可權的操作進行審計。這裡強調“涉及許可權”
例如,audit CREATE TABLE;命令,又可以表明對涉及“CREATE TABLE”許可權的操作進行審計。
所以說,在這種命令的情況下,既產生一個語句審計,又產生了一個許可權審計。
有時候“語句審計”和“許可權審計”的相互重複的。這一點可以後面證明。

3、物件審計(Object Auditing)。
記錄作用在指定物件上的操作。


三、如何啟用審計。
透過資料庫初始化引數檔案中的AUDIT_TRAIL 初始化引數啟用和禁用資料庫審計。
DB   啟用資料庫審計並引導所有審計記錄到資料庫的審計跟蹤
OS   啟用資料庫審計並引導所有審計記錄到作業系統的審計跟蹤。可以用AUDIT_FILE_DEST 初始化引數來指定審計檔案儲存的目錄。
NONE 禁用審計這個值是預設值

四、如何設定所需的審計
AUDIT語句。
例如:審計屬於使用者jward 的dept 表上的所有的SELECT INSERT 和DELETE 語句
AUDIT SELECT, INSERT, DELETE
ON jward.dept;

五、控制何時觸發審計動作。
1)By session / By Access
by session對每個session中發生的重複操作只記錄一次
by access對每個session中發生的每次操作都記錄,而不管是否重複。

2)Whenever successful/ Whenever not successful
Whenever successful表示操作成功以後才記錄下來。
Whenever not successful表示操作失敗後才記錄下來。

六、審計實施
1、語句審計
Audit session;  Audit session By ;
與instance連線的每個會話生成一條審計記錄。
審計記錄將在連線時期插入並且在斷開連線時期進行更新。
保留有關會話的資訊比如連線時期斷開連線時期處理的邏輯和物理I/O,
以及更多資訊將儲存在單獨一條審計記錄中
該審計記錄與會話相對應
2、audit delete table


2) 許可權審計
Audit DELETE ANY TABLE
by access
whenever not successful;
所有不成功的,使用DELETE ANY TABLE許可權進行的操作。

3) 物件審計
AUDIT SELECT, INSERT, DELETE
ON jward.dept
BY ACCESS
WHENEVER SUCCESSFUL;


七、審計結果
1)資料庫初始化引數檔案中AUDIT_TRAIL=OS時,審計記錄存在作業系統的檔案中。
UNIX系統的話,預設存在“$oracle_home/rdbms/audit/” 目錄下。
If you have set AUDIT_TRAIL = OS, modify the "init.ora" file to specify
the destination for the audited records using the AUDIT_FILE_DEST parameter.
If your operating system supports AUDIT_TRAIL = OS auditing, files are
automatically created in the AUDIT_FILE_DEST for certain actions, and the
generated name contains the OS PID of the shadow process audited:
Example:
AUDIT_FILE_DEST = $ORACLE_HOME/rdbms/audit
b)windows系統的審計資訊儲存在事件管理器中。
你可以透過控制皮膚——管理工具——事件檢視器——應用程式日誌中找到相應的審計記錄

2)資料庫初始化引數檔案中AUDIT_TRAIL=DB時,審計記錄存在資料庫中。
相關表和檢視:
SYS.AUD$              是唯一保留審計結果的表。其它的都是檢視。

STMT_AUDIT_OPTION_MAP 包含有關審計選項型別程式碼的資訊由SQL.BSQ 指令碼在CREATEDATABASE 的時候建立
AUDIT_ACTIONS         包含對審計跟蹤動作型別程式碼的說明
ALL_DEF_AUDIT_OPTS    包含預設物件審計選項。當建立物件時將應用這些選項

DBA_STMT_AUDIT_OPTS   描述由使用者設定的跨系統的當前系統審計選項
DBA_PRIV_AUDIT_OPTS   描述由使用者正在審計的跨系統的當前系統許可權
DBA_OBJ_AUDIT_OPTS    描述在所有物件上的審計選項
USER_OBJ_AUDIT_OPTS   USER 檢視描述當前使用者擁有的所有物件上的審計選項

以下是審計記錄
DBA_AUDIT_TRAIL       列出所有審計跟蹤條目
USER_AUDIT_TRAIL      USER檢視顯示與當前使用者有關的審計跟蹤條目

DBA_AUDIT_OBJECT      包含系統中所有物件的審計跟蹤記錄
USER_AUDIT_ OBJECT    USER 檢視列出一些審計跟蹤記錄而這些記錄涉及當前使用者可以訪問的物件的語句

DBA_AUDIT_SESSION     列出涉及CONNECT 和DISCONNECT 的所有審計跟蹤記錄
USER_AUDIT_ SESSION   USER檢視列出涉及當前使用者的CONNECT 和DISCONNECT 的所有審計跟蹤記錄

DBA_AUDIT_STATEMENT     列出涉及資料庫全部的GRANT REVOKE AUDIT NOAUDIT 和ALTER SYSTEM 語句的審計跟蹤記錄
USER_ AUDIT_ STATEMENT  對於USER 檢視來說這些語句應是使用者釋出的

DBA_AUDIT_EXISTS      列出BY AUDIT NOT EXISTS 產生的審計跟蹤條目

下面的檢視用於細粒度審計
DBA_AUDIT_POLICIES 顯示系統上的所有審計策略
DBA_FGA_AUDIT_TRAIL 列出基於值的審計的審計跟蹤記錄


八、一些特殊問題
1、有時候“語句審計”和“許可權審計”是相互重複的。並不需要明確的區分這2種型別。
主要是考慮你對審計的需求是什麼?考慮出發的角度是什麼?
例如:
SQL> audit CREATE TABLE;

Audit succeeded

SQL> SELECT * FROM DBA_STMT_AUDIT_OPTS;

AUDIT_OPTION                             SUCCESS    FAILURE
---------------------------------------- ---------- ----------
CREATE TABLE                             BY ACCESS  BY ACCESS

SQL> SELECT * FROM DBA_PRIV_AUDIT_OPTS;

PRIVILEGE                                SUCCESS    FAILURE
---------------------------------------- ---------- ----------
CREATE TABLE                             BY ACCESS  BY ACCESS

以上的一條審計設定命令,生成了兩條審計規則。其實最後的結果都是一樣。
就是當CREATE TABLE語句執行後,存下審計記錄。

2、開啟某個使用者下所有表的審計
audit table by user_name。據說可以。


九、參考
http://blog.itpub.net/post/468/6806 

獲得應用程式所執行的SQL語句

細粒度審計(FGA)
http://www.itpub.net/showthread.php?s=&threadid=239693&highlight=%C9%F3%BC%C6

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30557618/viewspace-1833903/,如需轉載,請註明出處,否則將追究法律責任。

相關文章