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