1、什么是審計 簡單來講,就是把對數(shù)據(jù)庫的操作記錄下來。不管你是否打開數(shù)據(jù)庫的審計功能,以下這些操作系統(tǒng)會強制記錄。 l 用管理員權(quán)限連接Instance l 啟動數(shù)據(jù)庫 l 關(guān)閉數(shù)據(jù)庫 2、和審計相關(guān)的兩個主要參數(shù) Audit_sys_operations 默認為false,當(dāng)設(shè)置為true時,所有(注意是所有?。?/font>sys用戶(包括以sysdba,sysoper身份登錄的用戶)的操作都會被記錄,audit trail不會寫在aud$表中,這個很好理解,如果數(shù)據(jù)庫還未啟動aud$不可用,那么像conn /as sysdba這樣的連接信息,只能記錄在其它地方。如果是windows平臺,audti trail會記錄在windows的事件管理中,如果是linux/unix平臺則會記錄在audit_file_dest參數(shù)指定的文件中 Audit_trail 有三個取值 None :默認值,不做審計 DB :將audit trail 記錄在數(shù)據(jù)庫的審計相關(guān)表中,如aud$ OS :將audit trail 記錄在操作系統(tǒng)文件中,文件名由audit_file_dest參數(shù)指定 注:這兩個參數(shù)是static參數(shù),需要重新啟動數(shù)據(jù)庫才能生效。 3、審計級別 當(dāng)開啟審計功能后(audit_trail=DB/OS),可在三個級別對數(shù)據(jù)庫進行審計:Statement(語句) 、Privilege(權(quán)限)、object(對象) Statement 按語句來審計,比如audit table 會審計數(shù)據(jù)庫中所有的create table,drop table,truncate table語句,alter session by cmy會審計cmy用戶所有的數(shù)據(jù)庫連接。 Privilege 按權(quán)限來審計,當(dāng)用戶使用了該權(quán)限則被審計,如執(zhí)行grant select any table to a; audit select any table;語句后,當(dāng)用戶a 訪問了用戶b的表時(如select * from b.t;)會用到select any table權(quán)限,故會被審計。注意用戶是自己表的所有者,所以用戶訪問自己的表不會被審計 Object 按對象審計,只審計on關(guān)鍵字指定對象的相關(guān)操作,如aduit alter,delete,drop,insert on cmy.t by scott; 這里會對cmy用戶的t表進行審計,但同時使用了by子句,所以只會對scott用戶發(fā)起的操作進行審計.注意Oracle沒有提供對schema中所有對象的審計功能,只能一個一個對象審計,對于后面創(chuàng)建的對象,Oracle則提供on default子句來實現(xiàn)自動審計,比如執(zhí)行audit drop on default by access;后, 對于隨后創(chuàng)建的對象的drop操作都會審計。但這個default會對之后創(chuàng)建的所有數(shù)據(jù)庫對象有效,似乎沒辦法指定只對某個用戶創(chuàng)建的對象有效,想比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、和審計相關(guān)的視圖 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,即數(shù)據(jù)庫設(shè)置過哪些statement級別的審計。dba_obj_audit_opts,dba_priv_audit_opts視圖功能與之類似 all_def_audit_opts 用來查看數(shù)據(jù)庫用on default子句設(shè)置了哪些默認對象審計。 6、取消審計 將對應(yīng)審計語句的audit改為noaudit即可,如audit session whenever successful;取消審計noaudit session whenever successful; 不再贅述。 |
|