你是否對獲得學會Oracle Audit的方法感到十分頭疼?如果是這樣子的話,以下的文章將會給你相應的解決方案,以下的文章主要是介紹Oracle Audit的方法,以下就是其相關內容的具體描述。
1、什麼是審計
簡單來講,就是把對數據庫的操作記錄下來。不管你是否打開數據庫的審計功能,以下這些操作系統會強制記錄。
l 用管理員權限連接Instance
l 啟動數據庫
l 關閉數據庫
2、和審計相關的兩個主要參數
- Audit_sys_Operations
默認為false,當設置為true時,所有(注意是所有!)sys用戶(包括以sysdba,sysoper身份登錄的用戶)的操作都會被記錄,Oracle audit trail不會寫在aud$表中,這個很好理解,如果數據庫還未啟動aud$不可用,那麼像conn /as sysdba這樣的連接信息,只能記錄在其它地方。如果是windows平台,audti trail會記錄在Windows的事件管理中,如果是Linux/unix平台則會記錄在audit_file_dest參數指定的文件中
Audit_trail
有三個取值
None :默認值,不做審計
DB :將audit trail 記錄在數據庫的審計相關表中,如aud$
OS :將Oracle audit trail 記錄在操作系統文件中,文件名由audit_file_dest參數指定
注:這兩個參數是static參數,需要重新啟動數據庫才能生效。
3、審計級別
當開啟審計功能後(audit_trail=DB/OS),可在三個級別對數據庫進行審計:Statement(語句) 、Privilege(權限)、object(對象)
Statement
按語句來審計,比如audit table 會審計數據庫中所有的create table,drop table,truncate table語句,alter session by cmy會審計cmy用戶所有的數據庫連接。
Privilege
按權限來審計,當用戶使用了該權限則被審計,如執行grant select any table to a; audit select any table;語句後,當用戶a 訪問了用戶b的表時(如select * from b.t;)會用到select any table權限,故會被審計。注意用戶是自己表的所有者,所以用戶訪問自己的表不會被審計
Object
按對象審計,只審計on關鍵字指定對象的相關操作,如aduit alter,delete,drop,insert on cmy.t by scott; 這裡會對cmy用戶的t表進行審計,但同時使用了by子句,所以只會對scott用戶發起的操作進行審計.注意Oracle沒有提供對schema中所有對象的審計功能,只能一個一個對象審計,對於後面創建的對象,Oracle則提供on default子句來實現自動審計,比如執行audit drop on default by Access;後, 對於隨後創建的對象的drop操作都會審計。
但這個default會對之後創建的所有數據庫對象有效,似乎沒辦法指定只對某個用戶創建的對象有效,想比trigger可以對schema的DDL進行“審計”,這個功能稍顯不足。
4、審計的一些其他選項
by access / by session :by Access 每一個被審計的操作都會生成一條audit trail。 by session,一個會話裡面同類型的操作只會生成一條audit trail。 默認為by session
whenever [ not ] successful :whenever successful 操作成功(dba_audit_trail中returncode字段為0) 才審計,whenever not successful反之。 省略該子句的話,不管操作成功與否都會審計。
5、和審計相關的視圖
- dba_audit_trail
保存所有的audit trail,實際上它只是一個基於aud$的視圖。其它的視圖dba_audit_session,dba_audit_object,dba_audit_statement都只是dba_audit_trail的一個子集。
- dba_stmt_audit_opts
可以用來查看statement審計級別的audit options,即數據庫設置過哪些statement級別的審計。dba_obj_audit_opts,dba_priv_audit_opts視圖功能與之類似
- all_def_audit_opts
用來查看數據庫用on default子句設置了哪些默認對象審計。
6、取消審計
將對應審計語句的Oracle audit改為noaudit即可,如audit session whenever successful;取消審計noaudit session whenever successful;