Oracle審計(jì)功能詳解_第1頁(yè)
Oracle審計(jì)功能詳解_第2頁(yè)
Oracle審計(jì)功能詳解_第3頁(yè)
Oracle審計(jì)功能詳解_第4頁(yè)
Oracle審計(jì)功能詳解_第5頁(yè)
已閱讀5頁(yè),還剩14頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Oracle審計(jì)功能詳解一、 審計(jì)分類:Oracle中審計(jì)總體上可分為“標(biāo)準(zhǔn)審計(jì)”和“細(xì)粒度審計(jì)”后者也稱為“基于政策的審計(jì)”,在Oracle10G之后功能得到很大增強(qiáng)。其中標(biāo)準(zhǔn)審計(jì)可分為用戶級(jí)審計(jì)和系統(tǒng)級(jí)審計(jì)。用戶級(jí)審計(jì)是任何Oracle用戶可設(shè)置的審計(jì),主要是用戶針對(duì)自己創(chuàng)建的數(shù)據(jù)庫(kù)表或視圖進(jìn)行審計(jì),記錄所有用戶對(duì)這些表或視圖的一切成功和(或)不成功的訪問(wèn)要求以及各種類型的SQL操作。系統(tǒng)級(jí)審計(jì)只能由DBA設(shè)置,用以監(jiān)測(cè)成功或失敗的登錄要求、監(jiān)測(cè)GRANT和REVOKE操作以及其他數(shù)據(jù)庫(kù)級(jí)權(quán)限下的操作。二、 標(biāo)準(zhǔn)審計(jì):2.1 分類:在ORACLE中分別支持以下三種標(biāo)準(zhǔn)審計(jì)類型:u 語(yǔ)句審計(jì)

2、,對(duì)某種類型的SQL語(yǔ)句審計(jì),不指定結(jié)構(gòu)或?qū)ο蟆 特權(quán)審計(jì),對(duì)執(zhí)行相應(yīng)動(dòng)作的系統(tǒng)特權(quán)的使用審計(jì)。u 對(duì)象審計(jì),對(duì)一特殊模式對(duì)象上的指定語(yǔ)句的審計(jì)。這三種標(biāo)準(zhǔn)審計(jì)類型分別對(duì)如下3方面進(jìn)行審計(jì):u 審計(jì)語(yǔ)句的成功執(zhí)行、不成功執(zhí)行,或者其兩者。u 對(duì)每一用戶會(huì)話審計(jì)語(yǔ)句執(zhí)行一次或者對(duì)語(yǔ)句每次執(zhí)行審計(jì)一次。u 對(duì)全部用戶或指定用戶的活動(dòng)的審計(jì)。當(dāng)數(shù)據(jù)庫(kù)的審計(jì)功能打開(kāi)后,在語(yǔ)句執(zhí)行階段產(chǎn)生審計(jì)記錄。審計(jì)記錄包含有審計(jì)的操作、用戶執(zhí)行的操作、操作的日期和時(shí)間等信息。審計(jì)記錄可存在數(shù)據(jù)字典表(稱為審計(jì)記錄)或操作系統(tǒng)審計(jì)記錄中。數(shù)據(jù)庫(kù)審計(jì)記錄是在SYS模式的AUD$表中。2.2 和審計(jì)相關(guān)的兩個(gè)主要參數(shù)A

3、udit_sys_operations:默認(rèn)為false,當(dāng)設(shè)置為true時(shí),所有sys用戶(包括以sysdba,sysoper身份登錄的用戶)的操作都會(huì)被記錄,audit trail不會(huì)寫(xiě)在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:None:是默認(rèn)值,不做審計(jì);DB:將audit trail 記錄在數(shù)據(jù)庫(kù)的審

4、計(jì)相關(guān)表中,如aud$,審計(jì)的結(jié)果只有連接信息;DB,Extended:與DB一樣,但是審計(jì)結(jié)果里面除了連接信息還包含了當(dāng)時(shí)執(zhí)行的SQL_TEXT和SQL_BIND;OS:將audit trail 記錄在操作系統(tǒng)文件中,文件名由audit_file_dest參數(shù)指定;XML:10g里新增,將audit trail以XML格式記錄在操作系統(tǒng)文件中;XML,Extended:與XML一樣,但是審計(jì)結(jié)果里面除了連接信息還包含了當(dāng)時(shí)執(zhí)行的SQL_TEXT和SQL_BIND注:這兩個(gè)參數(shù)是static參數(shù),需要重新啟動(dòng)數(shù)據(jù)庫(kù)才能生效。2.3 審計(jì)級(jí)別當(dāng)開(kāi)啟審計(jì)功能后,可在三個(gè)級(jí)別對(duì)數(shù)據(jù)庫(kù)進(jìn)行審計(jì):Sta

5、tement(語(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ù)連接。用法:AUDIT sql_statement_clause BY SESSION | ACCESS WHENEVER NOT SUCCESSFUL;表1列出了可以審計(jì)的語(yǔ)句類型,并且在每個(gè)類別中包含了相關(guān)語(yǔ)句的簡(jiǎn)要描述。如果指定all,則審計(jì)該列表中的任何語(yǔ)句。然而,表2中的語(yǔ)句類型在啟用

6、審計(jì)時(shí)不屬于all類別;必須在audit命令中顯式地指定它們。表1 包括在ALL類別中的可審計(jì)語(yǔ)句語(yǔ) 句 選 項(xiàng)SQL操作ALTER SYSTEM所有ALTER SYSTEM選項(xiàng),例如,動(dòng)態(tài)改變實(shí)例參數(shù),切換到下一個(gè)日志文件組,以及終止用戶會(huì)話CLUSTERCREATE、ALTER、DROP或TRUNCATE集群CONTEXTCREATE CONTEXT或DROP CONTEXTDATABASE LINKCREATE或DROP數(shù)據(jù)庫(kù)鏈接DIMENSIONCREATE、ALTER或DROP維數(shù)DIRECTORYCREATE或DROP目錄INDEXCREATE、ALTER或DROP索引MATERI

7、ALIZED VIEWCREATE、ALTER或DROP物化視圖NOT EXISTS由于不存在的引用對(duì)象而造成的SQL語(yǔ)句的失敗PROCEDURECREATE或DROP FUNCTION、LIBRARY、PACKAGE、PACKAGE BODY或PROCEDUREPROFILECREATE、ALTER或DROP配置文件PUBLIC DATABASE LINKCREATE或DROP公有數(shù)據(jù)庫(kù)鏈接PUBLIC SYNONYMCREATE或DROP公有同義詞ROLECREATE、ALTER、DROP或SET角色ROLLBACK SEGMENTCREATE、ALTER或DROP回滾段SEQUENCEC

8、REATE或DROP序列SESSION登錄和退出SYNONYMCREATE或DROP同義詞SYSTEM AUDIT系統(tǒng)權(quán)限的AUDIT或NOAUDITSYSTEM GRANTGRANT或REVOKE系統(tǒng)權(quán)限和角色TABLECREATE、DROP或TRUNCATE表TABLESPACECREATE、ALTER或DROP表空間TRIGGERCREATE、ALTER(啟用/禁用)、DROP觸發(fā)器;具有ENABLE ALL TRIGGERS或DISABLE ALL TRIGGERS的ALTER TABLETYPECREATE、ALTER和DROP類型以及類型主體USERCREATE、ALTER或DRO

9、P用戶VIEWCREATE或DROP視圖表2 顯式指定的語(yǔ)句類型語(yǔ) 句 選 項(xiàng)SQL 操 作ALTER SEQUENCE任何ALTER SEQUENCE命令A(yù)LTER TABLE任何ALTER TABLE命令COMMENT TABLE添加注釋到表、視圖、物化視圖或它們中的任何列DELETE TABLE刪除表或視圖中的行EXECUTE PROCEDURE執(zhí)行程序包中的過(guò)程、函數(shù)或任何變量或游標(biāo)GRANT DIRECTORYGRANT或REVOKE DIRECTORY對(duì)象上的權(quán)限GRANT PROCEDUREGRANT或REVOKE過(guò)程、函數(shù)或程序包上的權(quán)限GRANT SEQUENCEGRANT或

10、REVOKE序列上的權(quán)限GRANT TABLEGRANT或REVOKE表、視圖或物化視圖上的權(quán)限GRANT TYPEGRANT或REVOKE TYPE上的權(quán)限INSERT TABLEINSERT INTO表或視圖LOCK TABLE表或視圖上的LOCK TABLE命令SELECT SEQUENCE引用序列的CURRVAL或NEXTVAL的任何命令SELECT TABLESELECT FROM表、視圖或物化視圖UPDATE TABLE在表或視圖上執(zhí)行UPDATEPrivilege:按權(quán)限來(lái)審計(jì),當(dāng)用戶使用了該權(quán)限則被審計(jì),如執(zhí)行g(shù)rant select any table to a,當(dāng)執(zhí)行了au

11、dit 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ì)。用法:審計(jì)系統(tǒng)權(quán)限具有與語(yǔ)句審計(jì)相同的基本語(yǔ)法,但審計(jì)系統(tǒng)權(quán)限是在sql_statement_clause中,而不是在語(yǔ)句中,指定系統(tǒng)權(quán)限Object:按對(duì)象審計(jì),只審計(jì)on要害字指定對(duì)象的相關(guān)操作,如aduit alter,delete,drop,insert on cmy.t by scott; 這里會(huì)對(duì)cmy用戶的t表進(jìn)行審計(jì),但同時(shí)使用了by子句,所以只會(huì)對(duì)s

12、cott用戶發(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è)功能稍顯不足。用法:AUDIT schema_object_clause BY SESSION | ACCESS WHENEVER

13、 NOT SUCCESSFUL;schema_object_clause指定對(duì)象訪問(wèn)的類型以及訪問(wèn)的對(duì)象??梢詫徲?jì)特定對(duì)象上14種不同的操作類型,下表中列出了這些操作。對(duì) 象 選 項(xiàng)說(shuō) 明ALTER改變表、序列或物化視圖AUDIT審計(jì)任何對(duì)象上的命令COMMENT添加注釋到表、視圖或物化視圖DELETE從表、視圖或物化視圖中刪除行EXECUTE執(zhí)行過(guò)程、函數(shù)或程序包FLASHBACK執(zhí)行表或視圖上的閃回操作GRANT授予任何類型對(duì)象上的權(quán)限INDEX創(chuàng)建表或物化視圖上的索引INSERT將行插入表、視圖或物化視圖中LOCK鎖定表、視圖或物化視圖READ對(duì)DIRECTORY對(duì)象的內(nèi)容執(zhí)行讀操作RE

14、NAME重命名表、視圖或過(guò)程SELECT從表、視圖、序列或物化視圖中選擇行UPDATE更新表、視圖或物化視圖2.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 反之。省略該子句的

15、話,不管操作成功與否都會(huì)審計(jì)。2.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_o

16、pts:用來(lái)查看數(shù)據(jù)庫(kù)用on default子句設(shè)置了哪些默認(rèn)對(duì)象審計(jì)。1. SYS.AUD$審計(jì)功能的底層視圖,如果需要對(duì)數(shù)據(jù)進(jìn)行刪除,只需要對(duì)aud$視圖進(jìn)行刪除既可,其他視圖里的數(shù)據(jù)都是由aud$所得.2. DBA_AUDIT_EXISTS列出audit not exists和audit exists產(chǎn)生的審計(jì)跟蹤,我們默認(rèn)的都是audit exists.3. DBA_AUDIT_TRAIL可以在里面查處所有審計(jì)所跟蹤的信息,保存所有的audit trail,實(shí)際上它只是一個(gè)基于aud$的視圖。其它的視圖dba_audit_session,dba_audit_object,dba_aud

17、it_statement都只是dba_audit_trail的一個(gè)子集。4. DBA_AUDIT_OBJECT可以查詢所有對(duì)象跟蹤信息.(例如,對(duì)grant,revoke等不記錄),信息完全包含于dba_audit_trail5. DBA_AUDIT_SESSION所得到的數(shù)據(jù)都是有關(guān)logon或者logoff的信息.6. DBA_AUDIT_STATEMENT列出grant ,revoke ,audit ,noaudit ,alter system語(yǔ)句的審計(jì)跟蹤信息.7. DBA_PRIV_AUDIT_OPTS通過(guò)系統(tǒng)和由用戶審計(jì)的當(dāng)前系統(tǒng)特權(quán)8. DBA_OBJ_AUDIT_OPTS可以查

18、詢到所有用戶所有對(duì)象的審計(jì)選項(xiàng)9. DB_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視圖功能與之類似10. ALL_DEF_AUDIT_OPTS用來(lái)查看數(shù)據(jù)庫(kù)用on default子句設(shè)置了哪些默認(rèn)對(duì)象審計(jì)11. AUDIT_ACTIONS可以查詢出在aud$等視圖中actions列的含義12. SYSTEM_PRIVILEGE_MAP可以查詢出aud$等視圖中priv$used列的含義(注意前面加-)13. STM

19、T_AUDIT_OPTION_MAP 審計(jì)選項(xiàng)類型代碼14. DBA_AUDIT_POLICIES審計(jì)POLICIES15. DBA_COMMON_AUDIT_TRAIL標(biāo)準(zhǔn)審計(jì)+細(xì)粒度審計(jì)合并視圖16. DBA_FGA_AUDIT_TRAIL細(xì)粒度審計(jì)策略的審計(jì)跟蹤條目2.6 取消審計(jì)將對(duì)應(yīng)審計(jì)語(yǔ)句的audit改為noaudit即可,如audit session whenever successful對(duì)應(yīng)的取消審計(jì)語(yǔ)句為noaudit session whenever successful;2.7設(shè)置ORACLE標(biāo)準(zhǔn)審計(jì):下列步驟可以設(shè)置ORACLE的標(biāo)準(zhǔn)審計(jì)功能: 1. 修改初始化參數(shù)文件

20、(init.ora)如果使用服務(wù)器參數(shù)文件使用alter system set = scope=spfile|both,詳情參照1.1節(jié)中關(guān)于參數(shù)文件的介紹),設(shè)置 AUDIT_TRAIL參數(shù),并且重啟數(shù)據(jù)庫(kù)。AUDIT_TRAIL的取值如下: l DB/TRUE:?jiǎn)?dòng)審計(jì)功能,并且把審計(jì)結(jié)果存放在數(shù)據(jù)庫(kù)的 SYS.AUD$ 表中l(wèi) DB_EXTENDED:具有DB/TRUE的功能,另外記錄AUD$的SQLBIND和SQLTEXT字段 l OS:?jiǎn)?dòng)審計(jì)功能,并把審計(jì)結(jié)果存放在操作系統(tǒng)的審計(jì)信息中 lXML:?jiǎn)?dòng)審計(jì)功能,并且把審計(jì)結(jié)果以XML格式存放在操作系統(tǒng)的審計(jì)信息中l(wèi)XML_EXTEN

21、DED:具有XML的功能,另外會(huì)記錄SQLBIND和SQLTEXT信息 l NONE/FALSE:關(guān)閉審計(jì)功能 2.設(shè)置AUDIT_TRAIL參數(shù):如果設(shè)置 AUDIT_TRAIL = OS, 還需要修改參數(shù)AUDIT_FILE_DEST。如果操作系統(tǒng)支持設(shè)置AUDIT_TRAIL=OS,文件會(huì)自動(dòng)存放在AUDIT_FILE_DEST所指定的目錄下,并且文件名包含進(jìn)程的PID。 3. 確認(rèn)審計(jì)相關(guān)的表是否已經(jīng)安裝 SQLPLUS connect / AS SYSDBA SQLPLUS select * from sys.aud$; - 沒(méi)有記錄返回 SQLPLUS select * from

22、dba_audit_trail; - 沒(méi)有記錄返回 如果做上述查詢的時(shí)候發(fā)現(xiàn)表不存在,說(shuō)明審計(jì)相關(guān)的表還沒(méi)有安裝,需要安裝。 SQLPLUS connect / as sysdba SQLPLUS $ORACLE_HOME/rdbms/admin/cataudit.sql 審計(jì)表安裝在SYSTEM表空間。所以要確保SYSTEM表空間又足夠的空間存放審計(jì)信息。4. 關(guān)閉并重啟數(shù)據(jù)庫(kù) 5. 設(shè)置所需要的審計(jì)信息 下面是一個(gè)例子 SQL connect system/manager SQL grant audit system to scott; SQL connect scott/tiger SQ

23、L audit session; 停止審計(jì): SQL noaudit session; 通常設(shè)置了標(biāo)準(zhǔn)審計(jì)后都是通過(guò)Audit語(yǔ)句開(kāi)啟審計(jì),使用noaudit語(yǔ)句收回審計(jì)。如下所示:對(duì)修改SC表結(jié)構(gòu)或數(shù)據(jù)的操作進(jìn)行審計(jì)可使用如下語(yǔ)句:AUDIE ALTER,UPDATE ON SC;取消對(duì)SC表的一切審計(jì)可使用如下語(yǔ)句:NOAUDIT ALL ON SC;2.8設(shè)置審計(jì)的實(shí)例(對(duì)試圖嘗試口令的訪問(wèn)的審計(jì)):以下是一個(gè)審計(jì)的實(shí)例,用于記錄嘗試通過(guò)野蠻嘗試法破譯ORACLE帳號(hào)口令的例子:1. 修改審計(jì)相關(guān)參數(shù)(參照上面介紹的方法) 2. 重啟數(shù)據(jù)庫(kù) 3. 設(shè)置審計(jì)信息 SQLAUDIT ALL

24、BY ACCESS WHENEVER NOT SUCCESSFUL 4. 查詢AUD$ SQL select returncode, action#, userid, userhost, terminal,timestamp from aud$ RETURNCODE ACTION# USERID USERHOST TERMINAL - - - - - 1017 100 SCOTT WPRATA-BR 1017 100 SCOTT WPRATA-BR 1017 100 SCOTT WPRATA-BR ORA-1017的含義為錯(cuò)誤的用戶名口令。通過(guò)查看AUD$表可以清楚地看到WPRATA-BR嘗試

25、破譯SCOTT的口令??梢酝ㄟ^(guò)下面一個(gè)存儲(chǔ)過(guò)程來(lái)分析AUD$表,找出可疑的信息:create or replace procedure AuditLogin(Since Varchar2,Times PLS_Integer)isUSER_ID VARCHAR2(20);cursor c1 is select userid,count(*) from sys.aud$ where returncode=1017 and timestamp#=to_date(Since,yyyy-mm-dd) group by userid;cursor C2 IS Select userhost, termin

26、al,TO_CHAR(timestamp#,YYYY-MM-DD:HH24:MI:SS) from sys.aud$ WHERE returncode=1017 and timestamp#=to_date(Since,yyyy-mm-dd) AND USERID=USER_ID;ct PLS_INTEGER;V_USERHOST VARCHAR2(40);V_TERMINAL VARCHAR(40);V_DATE VARCHAR2(40);BEGIN OPEN C1; dbms_output.enable(1024000); LOOP FETCH C1 INTO USER_ID,CT; EX

27、IT WHEN C1%NOTFOUND; IF(CT=TIMES) THEN DBMS_OUTPUT.PUT_LINE(USER BROKEN ALARM:|USER_ID); OPEN C2; LOOP FETCH C2 INTO V_USERhOST,V_TERMINAL,V_DATE; DBMS_OUTPUT.PUT_LINE(CHR(9)|HOST:|V_USERHOST|,TERM:|V_TERMINAL|,TIME:|V_DATE); EXIT WHEN C2%NOTFOUND; END LOOP; close c2; END IF; END LOOP; close c1;END;

28、/一下是執(zhí)行結(jié)果:SQLset serveroutput on;SQL execute auditlogin(2004-01-01,2);USER BROKEN ALARM:SYS HOST:,TERM:XUJI,TIME:2004-09-22:11:08:00 HOST:,TERM:XUJI,TIME:2004-09-22:11:08:01 HOST:,TERM:XUJI,TIME:2004-09-22:11:09:29 HOST:,TERM:XUJI,TIME:2004-09-22:11:09:29PL/SQL 過(guò)程已成功完成。2.9將審計(jì)相關(guān)的表移動(dòng)到其他表空間:由于AUD$表等審計(jì)相關(guān)

29、的表存放在SYSTEM表空間,因此為了不影響系統(tǒng)的性能,保護(hù)SYSTEM表空間,最好把AUD$移動(dòng)到其他的表空間上??梢允褂孟旅娴恼Z(yǔ)句來(lái)進(jìn)行移動(dòng):SQL connect / as sysdba;SQL alter table aud$ move tablespace ;SQL alter index I_aud1 rebuild online tablespace ;SQL alter table audit$ move tablespace ;SQL alter index i_audit rebuild online tablespace ;SQL alter table audit_ac

30、tions move tablespace ;SQL alter index i_audit_actions rebuild online tablespace ;2.10審計(jì)語(yǔ)句樣例多層環(huán)境下的審計(jì):appserve-應(yīng)用服務(wù)器,jackson-clientAUDIT SELECT TABLE BY appserve ON BEHALF OF jackson;審計(jì)連接或斷開(kāi)連接:AUDIT SESSION;AUDIT SESSION BY jeff, lori; - 指定用戶審計(jì)權(quán)限(使用該權(quán)限才能執(zhí)行的操作):AUDIT DELETE ANY TABLE BY ACCESS WHENEVE

31、R NOT SUCCESSFUL;AUDIT DELETE ANY TABLE;AUDIT SELECT TABLE, INSERT TABLE, DELETE TABLE, EXECUTE PROCEDURE BY ACCESS WHENEVER NOT SUCCESSFUL;對(duì)象審計(jì):AUDIT DELETE ON jeff.emp;AUDIT SELECT, INSERT, DELETE ON jward.dept BY ACCESS WHENEVER SUCCESSFUL;取消審計(jì):NOAUDIT session;NOAUDIT session BY jeff, lori;NOAUDI

32、T DELETE ANY TABLE;NOAUDIT SELECT TABLE, INSERT TABLE, DELETE TABLE,EXECUTE PROCEDURE;NOAUDIT ALL; - 取消所有statement審計(jì)NOAUDIT ALL PRIVILEGES; - 取消所有權(quán)限審計(jì)NOAUDIT ALL ON DEFAULT; - 取消所有對(duì)象審計(jì)2.11清除審計(jì)信息DELETE FROM SYS.AUD$;TRUNCATE TABLE SYS.AUD$;DELETE FROM SYS.AUD$ WHERE obj$name=EMP;三、 細(xì)粒度審計(jì): 細(xì)粒度審計(jì) (FGA)

33、(通過(guò) Oracle9i 引入)可以理解為“基于政策的審計(jì)”。與標(biāo)準(zhǔn)的審計(jì)功能相反,F(xiàn)GA 可用于指定生成審計(jì)記錄必需的條件:FGA 政策通過(guò)使用“dbms_fga”程序包以編程方式綁定到對(duì)象(表、視圖)。類似于用于通過(guò) VPD (dbms_rls) 進(jìn)行訪問(wèn)控制的程序包,它允許您創(chuàng)建任何需要的條件,例如:僅當(dāng)以下條件為真時(shí)審計(jì)事件: 在早上九點(diǎn)到下午六點(diǎn)之間或在星期六和星期日對(duì)某個(gè)表進(jìn)行了訪問(wèn)。 使用了公司網(wǎng)絡(luò)外部的某個(gè) IP 地址。 選定或更新了特定列。 使用了該列的特定值。 這將創(chuàng)建更有意義的審計(jì)線索,因?yàn)闊o(wú)需記錄每一個(gè)人對(duì)表的每一次訪問(wèn)。從 Oracle 數(shù)據(jù)庫(kù) 10g 開(kāi)始,F(xiàn)GA

34、支持在一個(gè)策略中使用“選擇”、“插入”、“更新”和“刪除”語(yǔ)句的任意組合。事實(shí)上,綁定到表的 FGA 政策簡(jiǎn)化了審計(jì)政策的管理,因?yàn)檫@將只需在數(shù)據(jù)庫(kù)中對(duì)其更改一次,不用在每個(gè)應(yīng)用程序中一次次進(jìn)行。此外。無(wú)論用戶通過(guò)何種方式連接至數(shù)據(jù)庫(kù)(通過(guò)應(yīng)用程序、Web 接口或通過(guò) SQL*Plus),其操作都會(huì)記錄下來(lái)。細(xì)粒度審計(jì)的程序包DBMS_FGA具有4個(gè)過(guò)程:ADD_POLICY -添加使用謂詞和審計(jì)列的審計(jì)策略DROP_POLICY -刪除審計(jì)策略DISABLE_POLICY -禁用審計(jì)策略,但保留與表或視圖關(guān)聯(lián)的策略ENABLE_POLICY -啟用策略3.1 使用細(xì)粒度審計(jì): 1、創(chuàng)建測(cè)試表

35、: create table ACCOUNT(AACT_NO number not null, CUST_ID number not null, BALANCE number(15,2); 2、添加審計(jì)策略: begin DBMS_FGA.ADD_POLICY(object_schema = TEST, object_name = ACCOUNT, policy_name = ACCOUNT_ACCESS);end;這段代碼必須由具有執(zhí)行程序包 dbms_fga 權(quán)限的用戶來(lái)執(zhí)行。建議應(yīng)該建立一個(gè)專門(mén)的用戶來(lái)專門(mén)負(fù)責(zé)添加審計(jì)策略。該過(guò)程有許多參數(shù),具體含義如下:OBJECT_SCHEMA對(duì)其定

36、義了 FGA 策略的表或視圖的所有者OBJECT_NAME表或視圖的名稱POLICY_NAME策略的名稱,由用戶自定義 例如,ACCOUNTS_ACCESSPOLICY_TEXT在添加策略時(shí)指定的審計(jì)條件 例如,BALANCE = 11000POLICY_COLUMN審計(jì)列 例如,BALANCEENABLED如果啟用則為 YES,否則為 NO PF_SCHEMA擁有策略處理器模塊的模式(如果存在)PF_PACKAGE處理器模塊的程序包名稱(如果存在)PF_FUNCTION處理器模塊的過(guò)程名稱(如果存在)3、在定義了策略以后,當(dāng)用戶以通常的方式對(duì)表進(jìn)行查詢時(shí),如下所示: select * fro

37、m bank.accounts; 審計(jì)線索記錄此操作??梢允褂靡韵抡Z(yǔ)句查看線索: select timestamp, db_user,os_user,object_schema,object_name,sql_textfrom dba_fga_audit_trail;TIMESTAMP DB_USER OS_USER OBJECT_ OBJECT_N SQL_TEXT- - - - - -26-MAR-10 TEST ananda TEST ACCOUNT select * from account注意名為 DBA_FGA_AUDIT_TRAIL 的新視圖,它記錄細(xì)粒度的訪問(wèn)信息。其中顯示了審

38、計(jì)事件的時(shí)間標(biāo)記、查詢者的數(shù)據(jù)庫(kù)用戶 ID、操作系統(tǒng)用戶 ID、查詢中所使用表的名稱和所有者,最后還有確切的查詢語(yǔ)句。3.2 審計(jì)列和審計(jì)條件:默認(rèn)情況下會(huì)對(duì)被審計(jì)對(duì)象的所有列開(kāi)啟審計(jì),當(dāng)任何一列被訪問(wèn)時(shí)都會(huì)紀(jì)錄一條審計(jì)信息,這在現(xiàn)實(shí)情況下不太常見(jiàn),因?yàn)檫@樣會(huì)使審計(jì)信息表增長(zhǎng)過(guò)快造成存儲(chǔ)空間的壓力,因此通常都會(huì)設(shè)置審計(jì)條件,當(dāng)條件觸發(fā)時(shí)再發(fā)起審計(jì)。例如我們可以對(duì)Account表的Balance列設(shè)置審計(jì)條件,當(dāng)訪問(wèn)該列并觸發(fā)審計(jì)條件時(shí)才進(jìn)行審計(jì)。如下所示:begindbms_fga.add_policy (object_schema=TEST,object_name=ACCOUNT,polic

39、y_name=ACCOUNT_ACCESS,audit_column = BALANCE,audit_condition = BALANCE = 11000 );end;該策略將在訪問(wèn)BALANCE列并且只有訪問(wèn)列值大于等于11000時(shí)才發(fā)起審計(jì)。因此根據(jù)該條件戶有如下不同審計(jì)狀態(tài):SQL 語(yǔ)句審計(jì)狀態(tài)select balance from account;進(jìn)行審計(jì)。用戶選擇了在添加策略時(shí)所指定的審計(jì)列 BALANCE。select * from account;進(jìn)行審計(jì)。即使用戶沒(méi)有明確指定列 BALANCE,* 也隱含地選擇了它。select cust_id from account wh

40、ere balance TEST,object_name = ACCOUNT,policy_name = ACCOUNT_ACCESS );end;對(duì)于更改策略而言,沒(méi)有隨取隨用的解決方案。要更改策略中的任何參數(shù),必須刪除策略,再使用更改后的參數(shù)添加策略。但是可以暫時(shí)禁用已有策略,如下所示:begindbms_fga.enable_policy (object_schema = TEST,object_name = ACCOUNT,policy_name = ACCOUNT_ACCESS,enable = FALSE );end;若要重新啟用它,可使用同一函數(shù),只需將參數(shù) enable 設(shè)置為

41、 TRUE。3.5 FGA 數(shù)據(jù)字典視圖:FGA 策略的定義位于數(shù)據(jù)字典視圖 DBA_AUDIT_POLICIES 中。該市途中各列含義如下:SESSION_ID審計(jì)會(huì)話標(biāo)識(shí)符;與 V$SESSION 視圖中的會(huì)話標(biāo)識(shí)符不同TIMESTAMP審計(jì)記錄生成時(shí)的時(shí)間標(biāo)記DB_USER發(fā)出查詢的數(shù)據(jù)庫(kù)用戶OS_USER操作系統(tǒng)用戶USERHOST用戶連接的機(jī)器的主機(jī)名CLIENT_ID客戶標(biāo)識(shí)符(如果由對(duì)打包過(guò)程 dbms_session.set_identifier 的調(diào)用所設(shè)置)EXT_NAME外部認(rèn)證的客戶名稱,如 LDAP 用戶OBJECT_SCHEMA對(duì)該表的訪問(wèn)觸發(fā)了審計(jì)的表所有者OBJ

42、ECT_NAME對(duì)該表的 SELECT 操作觸發(fā)了審計(jì)的表名稱POLICY_NAME觸發(fā)審計(jì)的策略名稱(如果對(duì)表定義了多個(gè)策略,則每個(gè)策略將插入一條記錄。在此情況下,該列顯示哪些行是由哪個(gè)策略插入的。)SCN記錄了審計(jì)的 Oracle 系統(tǒng)更改號(hào)SQL_TEXT由用戶提交的 SQL 語(yǔ)句 SQL_BIND由 SQL 語(yǔ)句使用的綁定變量(如果存在)3.6視圖和 FGA:假定在 ACCOUNTS 表上定義視圖 VW_ACCOUNT 如下: create view vw_account as select * from account;現(xiàn)在,如果用戶從視圖中而不是從表中進(jìn)行選擇: select *

43、from vw_account;您將看到以下審計(jì)線索: select object_name, sql_text from dba_fga_audit_trail;OBJECT_NAME SQL_TEXT- -ACCOUNT select * from vw_account注意,是基表名稱而不是視圖名稱出現(xiàn)在 OBJECT_NAME 列中,因?yàn)橐晥D中的選擇是從基表中進(jìn)行選擇。但是,SQL_TEXT 列記錄了用戶提交的實(shí)際語(yǔ)句。如果只希望審計(jì)對(duì)視圖的查詢而不是對(duì)表的查詢,可以對(duì)視圖本身建立策略。通過(guò)將視圖名稱而不是表的名稱傳遞給打包的過(guò)程 dbms_fga.add_policy 中的參數(shù) obj

44、ect_name,可以完成這項(xiàng)工作。隨后 DBA_FGA_AUDIT_TRAIL 中的 OBJECT_NAME 列將顯示視圖的名稱,并且不會(huì)出現(xiàn)有關(guān)表訪問(wèn)的附加記錄。3.7 其它用途: 除了記錄對(duì)表的選擇訪問(wèn),F(xiàn)GA 還可用于某些其它情況: 可以對(duì)數(shù)據(jù)倉(cāng)庫(kù)使用 FGA,以捕獲特定的表、視圖或物化視圖上發(fā)生的所有語(yǔ)句,這有助于計(jì)劃索引。不需要到 V$SQL 視圖去獲取這些信息。即使 SQL 語(yǔ)句已經(jīng)超出了 V$SQL 的期限,在 FGA 審計(jì)線索中將會(huì)始終提供它。 由于 FGA 捕獲綁定變量,它可以幫助了解綁定變量值的模式,這有助于設(shè)計(jì)直方圖集合等。 可以向?qū)徲?jì)者或 DBA 發(fā)送警告,這有助于跟

45、蹤惡意應(yīng)用程序。 由于 FGA 可以作為 SELECT 語(yǔ)句的觸發(fā)器,可以在需要這種功能的任何時(shí)候使用它。3.8 FGA在10G中的增強(qiáng):3.8.1 對(duì)所有DML的審計(jì): 在9i中FGA只能對(duì)Select語(yǔ)句進(jìn)行審計(jì),而不能對(duì)其他DML語(yǔ)句(Update、Delete、Insert)進(jìn)行審計(jì),如果想對(duì)其他DML語(yǔ)句進(jìn)行審計(jì)那么只能采取數(shù)據(jù)庫(kù)處發(fā)起的形式來(lái)實(shí)現(xiàn)。在10G中實(shí)現(xiàn)了對(duì)所有DML語(yǔ)句的審計(jì),如下所示:begin dbms_fga.add_policy ( object_schema = TEST, object_name = ACCOUNT, policy_name = ACCOUNT

46、_ACCESS, audit_column = BALANCE, audit_condition = BALANCE = 3000, statement_types = INSERT, UPDATE, DELETE, SELECT );end;通過(guò)statement_types = INSERT, UPDATE, DELETE, SELECT參數(shù)制定了新的策略,該策略可以對(duì)Select之外的所有DML操作進(jìn)行審計(jì)。因此根據(jù)新的審計(jì)條件和審計(jì)策略會(huì)有如下不同情況:第 1 種情況 之前:BALANCE = 1000 用戶發(fā)出: update account set balance = 1200 w

47、here ACCOUNT_NO = .舊的和新的 balance 都小于 3,000,審計(jì)條件不滿足;因此這條語(yǔ)句將不會(huì)被審計(jì)。第 2 種情況 之前:BALANCE = 1000 用戶發(fā)出: update account set balance = 3200 where ACCOUNT_NO = .新的 balance 大于 3,000,審計(jì)條件滿足;因此這條語(yǔ)句將 會(huì)被審計(jì)。 第 3 種情況 之前:BALANCE = 3200 用戶發(fā)出: update account set balance = 1200 where ACCOUNT_NO = .新的 balance 小于 3,000,但舊的

48、 balance 大于 3,000。因此審計(jì)條件滿足,這條語(yǔ)句將被審計(jì)。 第 4 種情況 用戶插入一行,其中有 BALANCE = 3000 結(jié)果為 FALSE),這條語(yǔ)句不會(huì)被審計(jì)。重要注意事項(xiàng):假設(shè)該列有一個(gè)大于 3,000 的默認(rèn)值時(shí),這條語(yǔ)句仍然不會(huì)被審計(jì),即使插入行的 balance 列值大于 3000。 注意對(duì)于DML語(yǔ)句的審計(jì)是由一個(gè)自動(dòng)事務(wù)插入的;即使回滾 DML語(yǔ)句的操作,審計(jì)記錄也將存在不會(huì)跟著回滾。3.8.2制定相關(guān)的列策略:在表 ACCOUNT 上定義的一個(gè)策略,如下: begin dbms_fga.add_policy ( object_schema = TEST, object_name = ACCOUNT, policy_name = ACCOUNT_SEL, audit_column = ACCOUNT_NO, BALANC

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論