Oracle數據庫審計

轉自http://blog.csdn.net/annicybc/article/details/1568115

一、何謂數據庫審計?

數據庫審計,就是對數據庫的活動做跟蹤記錄,主要包括數據庫連接,SQL語句執行,數據庫對象訪問這些方面的跟蹤記錄。

 

二、審記記錄的存儲方式

分爲兩種:一種是存儲在操作系統文件中,一種是存儲在system表空間中的SYS.AUD$表中。

 

三、對數據庫性能影響的考慮

審計必然需要佔用CPU,因此,需要綜合平衡審計需求與性能之間的平衡性問題,以確定出最好的審許策略。

 

四、審記結果中包含哪些信息

前面講到審許結果的存儲分數據庫存儲和文件存儲兩種方式。對於數據庫存儲的情況,SYS.AUD$表中包含以下信息:

1)        ·操作系統用戶名

2)        ·數據庫用戶名

3)        ·連接會話標識

4)        ·終端標識

5)        ·被訪問的schema對象名

6)        ·嘗試的操作

7)        ·操作的完整代碼

8)        ·日期和時間戳

 

若審計記錄存儲在外部操作文件中,則該文件可能包含以下信息:

1)         ·操作系統產生的審計記錄

2)         ·數據庫的審計記錄

3)         ·被審計到的數據庫操作

4)         ·超級管理員(SYS)的審計記錄

其中,被寫到文件中的審計記錄是以編碼的方式存儲的,如果要理解這些編碼所對應的信息,可以查詢以下數據字典表:

編碼信息數據字典表

-------------------------------

數據庫操作代碼表示嘗試的操作。它的相關描述可以從數據字典表AUDIT_ACTIONS表中查詢到

操作所使用的權限可以在字典表SYSTEM_PRIVILEGE_MAP中查詢到對應的說明

完整的操作代碼操作成功時將返回0,失敗時返回相關oracle錯誤信息,錯誤信息碼所對應的說明可以從oracle官方文檔中獲得

--------------------------------

 

五、缺省的審計

不論當前是否已經開啓的審計功能,數據庫都會把一些數據庫相關的操作寫入外部審計文件中(注意:不是寫入SYS.AUD$),這些被缺省審計的操作是:

1)         ·以超級管理員權限對數據庫的連接(connectASSYSDBAconnectASSYSOPER)

2)         ·數據庫啓動

3)         ·數據庫停止

 

六、對超級管理員用戶的操作行爲的審計

超級管理員用戶指的是以ASSYSDBAASSYSOPER方式連接數據庫的用戶。初始化參數AUDIT_SYS_OPERATIONS用來指定是超級管理員的審計選項,如果將AUDIT_SYS_OPERATIONS設置爲TRUE,那麼所有超級管理員的操作都將被審計,而不管當前是否有開啓審計功能,而且所有的審計信息都被寫入外部審計文件中(注意:不是寫入SYS.AUD$)。

 

七、執行審計

1.設定審計記錄的存放位置

初始化參數AUDIT_TRAIL指定了審計記錄的存放位置,該參數有三個取值:

1)         ·DB審計記錄存放在數據庫的SYS.AUD$表中

2)         ·OS審計記錄存放在外部的操作系統文件中

3)         ·NONE關閉審計(缺省值)

初始化參數AUDIT_FILE_DEST指定了當審外部審記文件目標存儲路徑,其缺省值是$ORACLE_HOME/rdbms/audit

2.審計選項

這個審計選項指的是執行審計的AUDIT語句的可選項。AUDIT語句的語法請參考oracle官方SQL參考。

 

3.以實例說明審計

a.審計某用戶的會話的創建與結束

AUDITSESSIONBYscott,fey;

b.審計所有用戶的會話的創建與結束

AUDITSESSION;

c.審計刪除表的操作

AUDITDELETEANYTABLE;

c.審計刪除表的操作(限制:只審計刪除失敗的情況)

AUDITDELETEANYTABLEWHENEVERNOTSUCCESSFUL;

d.審計刪除表的操作(限制:只審計刪除成功的情況)

AUDITDELETEANYTABLEWHENEVERSUCCESSFUL;

e.審計刪除表的操作(限制:同一個會話中相同的操作語句只審計一次)

AUDITDELETEANYTABLEBYSESSION;

(注:對於這種情況,如果審計記錄被設定爲存儲在外部文件中時,這個效果是體現不出來的,因爲oracle無法判斷是否已經審計過相同的操作語句。)

f.審計刪除表的操作(限制:每支刪除語句都審計,不論同一會話中是否有多條相同的操作語句)

AUDITDELETEANYTABLEBYACCESS;

g.審計對fey.employee表的delete操作

AUDITDELETEONfey.employee;

h.審計對fey.employee表的deleteupdetinsert操作

AUDITDELETE,UPDATE,INSERTONfey.employee;

 

八、停止審計

停止審計使用NOAUDIT語句,該語句的語法請參考oracle官方SQL參考。下面以實例說明NOAUDIT的使用:

a.停止所有對會話的創建與結束的審計

NOAUDITSESSION;

b.停止對用戶fey,scott的會話的創建與結束的審計

NOAUDITSESSIONBYfey,scott;

c.停止審計刪除表的操作

NOAUDITDELETEANYTABLE;

c.停止審計刪除表的操作(限制:停止審計刪除失敗的情況)

NOAUDITDELETEANYTABLEWHENEVERNOTSUCCESSFUL;

d.停止審計刪除表的操作(限制:停止審計刪除成功的情況)

NOAUDITDELETEANYTABLEWHENEVERSUCCESSFUL;

g.停止審計對fey.employee表的delete操作

NOAUDITDELETEONfey.employee;

h.停止審計對fey.employee表的deleteupdetinsert操作

NOAUDITDELETE,UPDATE,INSERTONfey.employee;

<p class="MsoNormal" style="text-align: le

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章