Oracle審計功能詳解_第1頁
Oracle審計功能詳解_第2頁
Oracle審計功能詳解_第3頁
Oracle審計功能詳解_第4頁
Oracle審計功能詳解_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

**Oracle審計功能詳解一、審計分類:Oracle中審計總體上可分為“標準審計”和“細粒度審計”后者也稱為“基于政策的審計”,在Oracle10G之后功能得到很大增強。其中標準審計可分為用戶級審計和系統(tǒng)級審計。用戶級審計是任何Oracle用戶可設置的審計,主要是用戶針對自己創(chuàng)建的數(shù)據(jù)庫表或視圖進行審計,記錄所有用戶對這些表或視圖的一切成功和(或)不成功的訪問要求以及各種類型的SQL操作。系統(tǒng)級審計只能由DBA設置,用以監(jiān)測成功或失敗的登錄要求、監(jiān)測GRANT和REVOKE操作以及其他數(shù)據(jù)庫級權限下的操作。謝謝閱讀二、標準審計:2.1分類:在ORACLE中分別支持以下三種標準審計類型:語句審計,對某種類型的SQL語句審計,不指定結(jié)構或?qū)ο?。謝謝閱讀特權審計,對執(zhí)行相應動作的系統(tǒng)特權的使用審計。對象審計,對一特殊模式對象上的指定語句的審計。這三種標準審計類型分別對如下3方面進行審計:審計語句的成功執(zhí)行、不成功執(zhí)行,或者其兩者。對每一用戶會話審計語句執(zhí)行一次或者對語句每次執(zhí)行審計一次。精品文檔放心下載對全部用戶或指定用戶的活動的審計。當數(shù)據(jù)庫的審計功能打開后,在語句執(zhí)行階段產(chǎn)生審計記錄。審計記錄包含有審計精品文檔放心下載的操作、用戶執(zhí)行的操作、操作的日期和時間等信息。審計記錄可存在數(shù)據(jù)字典表(稱感謝閱讀為審計記錄)或操作系統(tǒng)審計記錄中。數(shù)據(jù)庫審計記錄是在SYS模式的AUD$表中。謝謝閱讀2.2和審計相關的兩個主要參數(shù)Audit_sys_operations:**默認為false,當設置為true時,所有sys用戶(包括以sysdba,sysoper身份登錄的用精品文檔放心下載戶)的操作都會被記錄,audittrail不會寫在aud$表中,這個很好理解,假如數(shù)據(jù)庫還感謝閱讀未啟動aud$不可用,那么像conn/assysdba這樣的連接信息,只能記錄在其它地方。感謝閱讀假如是windows平臺,audtitrail會記錄在windows的事件管理中,假如是linux/un謝謝閱讀ix平臺則會記錄在audit_file_dest參數(shù)指定的文件中。感謝閱讀Audit_trail:None:是默認值,不做審計;DB:將audittrail記錄在數(shù)據(jù)庫的審計相關表中,如aud$,審計的結(jié)果只有連接信息;感謝閱讀DB,Extended:與DB一樣,但是審計結(jié)果里面除了連接信息還包含了當時執(zhí)行的SQL_謝謝閱讀TEXT和SQL_BIND;OS:將audittrail記錄在操作系統(tǒng)文件中,文件名由audit_file_dest參數(shù)指定;感謝閱讀XML:10g里新增,將audittrail以XML格式記錄在操作系統(tǒng)文件中;精品文檔放心下載XML,Extended:與XML一樣,但是審計結(jié)果里面除了連接信息還包含了當時執(zhí)行的S謝謝閱讀QL_TEXT和SQL_BIND注:這兩個參數(shù)是static參數(shù),需要重新啟動數(shù)據(jù)庫才能生效。精品文檔放心下載2.3審計級別當開啟審計功能后,可在三個級別對數(shù)據(jù)庫進行審計:Statement(語句)、Privilege(權感謝閱讀限)、object(對象)。Statement:**按語句來審計,比如audittable會審計數(shù)據(jù)庫中所有的createtable,droptable,tru精品文檔放心下載ncatetable語句,altersessionbycmy會審計cmy用戶所有的數(shù)據(jù)庫連接。感謝閱讀用法:AUDITsql_statement_clauseBY{SESSION|ACCESS}WHENEVER[NOT]SUCCESSFU謝謝閱讀L;表1列出了可以審計的語句類型,并且在每個類別中包含了相關語句的簡要描述。如果感謝閱讀指定all,則審計該列表中的任何語句。然而,表2中的語句類型在啟用審計時不屬于all謝謝閱讀類別;必須在audit命令中顯式地指定它們。表1包括在ALL類別中的可審計語句語句選項 SQL操作ALTERSYSTEM 所有ALTERSYSTEM選項,例如,動態(tài)改變實例參數(shù),切換到下一謝謝閱讀個日志文件組,以及終止用戶會話CLUSTER CREATE、ALTER、DROP或TRUNCATE集群精品文檔放心下載CONTEXT CREATECONTEXT或DROPCONTEXT感謝閱讀DATABASELINK CREATE或DROP數(shù)據(jù)庫鏈接精品文檔放心下載DIMENSION CREATE、ALTER或DROP維數(shù)感謝閱讀DIRECTORY CREATE或DROP目錄謝謝閱讀INDEX CREATE、ALTER或DROP索引謝謝閱讀MATERIALIZED CREATE、ALTER或DROP物化視圖精品文檔放心下載VIEWNOTEXISTS 由于不存在的引用對象而造成的SQL語句的失敗精品文檔放心下載**PROCEDUREPROFILEPUBLICDATABASE

CREATE或DROPFUNCTION、LIBRARY、PACKAGE、PACKAGE精品文檔放心下載BODY或PROCEDURECREATE、ALTER或DROP配置文件CREATE或DROP公有數(shù)據(jù)庫鏈接LINKPUBLICSYNONYMROLEROLLBACK

CREATE或DROP公有同義詞CREATE、ALTER、DROP或SET角色精品文檔放心下載CREATE、ALTER或DROP回滾段SEGMENTSEQUENCESESSIONSYNONYMSYSTEMAUDITSYSTEMGRANTTABLETABLESPACETRIGGERTYPE

CREATE或DROP序列登錄和退出CREATE或DROP同義詞系統(tǒng)權限的AUDIT或NOAUDITGRANT或REVOKE系統(tǒng)權限和角色CREATE、DROP或TRUNCATE表CREATE、ALTER或DROP表空間CREATE、ALTER(啟用/禁用)、DROP觸發(fā)器;具有ENABLEALL感謝閱讀TRIGGERS或DISABLEALLTRIGGERS的ALTERTABLE精品文檔放心下載CREATE、ALTER和DROP類型以及類型主體感謝閱讀**USERVIEW

CREATE、ALTER或DROP用戶CREATE或DROP視圖表2

顯式指定的語句類型語句選項ALTERSEQUENCEALTERTABLECOMMENTTABLEDELETETABLEEXECUTEPROCEDUREGRANTDIRECTORYGRANTPROCEDUREGRANTSEQUENCEGRANTTABLEGRANTTYPEINSERTTABLELOCKTABLESELECTSEQUENCESELECTTABLEUPDATETABLE謝謝閱讀

SQL操作任何ALTERSEQUENCE命令任何ALTERTABLE命令添加注釋到表、視圖、物化視圖或它們中的任何列刪除表或視圖中的行執(zhí)行程序包中的過程、函數(shù)或任何變量或游標GRANT或REVOKEDIRECTORY對象上的權限感謝閱讀GRANT或REVOKE過程、函數(shù)或程序包上的權限謝謝閱讀GRANT或REVOKE序列上的權限GRANT或REVOKE表、視圖或物化視圖上的權限謝謝閱讀GRANT或REVOKETYPE上的權限INSERTINTO表或視圖表或視圖上的LOCKTABLE命令引用序列的CURRVAL或NEXTVAL的任何命令精品文檔放心下載SELECTFROM表、視圖或物化視圖在表或視圖上執(zhí)行UPDATE**Privilege:按權限來審計,當用戶使用了該權限則被審計,如執(zhí)行grantselectanytabletoa,謝謝閱讀當執(zhí)行了auditselectanytable語句后,當用戶a訪問了用戶b的表時(如select感謝閱讀fromb.t)會用到selectanytable權限,故會被審計。注重用戶是自己表的所有者,所以用戶訪問自己的表不會被審計。感謝閱讀用法:審計系統(tǒng)權限具有與語句審計相同的基本語法,但審計系統(tǒng)權限是在sql_statement_clause中,而不是在語句中,指定系統(tǒng)權限精品文檔放心下載Object:按對象審計,只審計on要害字指定對象的相關操作,如aduitalter,delete,drop,inser感謝閱讀oncmy.tbyscott;這里會對cmy用戶的t表進行審計,但同時使用了by子句,所以只會對scott用戶發(fā)起的操作進行審計。注重Oracle沒有提供對schema中所有對象的審計功能,只能一個一個對象審計,對于后面創(chuàng)建的對象,Oracle則提供ondefault子句來實現(xiàn)自動審計,比如執(zhí)行auditdropondefaultbyaccess;后,對于隨后創(chuàng)建的對象的drop操作都會審計。但這個default會對之后創(chuàng)建的所有數(shù)據(jù)庫對象有效,似乎沒辦法指定只對某個用戶創(chuàng)建的對象有效,想比trigger可以對schema的DDL進謝謝閱讀行“審計”,這個功能稍顯不足。用法:AUDITschema_object_clauseBY{SESSION|ACCESS}WHENEVER[NOT]感謝閱讀SUCCESSFUL;**schema_object_clause指定對象訪問的類型以及訪問的對象。可以審計特定對象上14精品文檔放心下載種不同的操作類型,下表中列出了這些操作。對象選項 說 明ALTER 改變表、序列或物化視圖AUDIT 審計任何對象上的命令COMMENT 添加注釋到表、視圖或物化視圖DELETE 從表、視圖或物化視圖中刪除行EXECUTE 執(zhí)行過程、函數(shù)或程序包FLASHBACK執(zhí)行表或視圖上的閃回操作GRANT 授予任何類型對象上的權限INDEX 創(chuàng)建表或物化視圖上的索引INSERT 將行插入表、視圖或物化視圖中LOCK 鎖定表、視圖或物化視圖READ 對DIRECTORY對象的內(nèi)容執(zhí)行讀操作精品文檔放心下載RENAME 重命名表、視圖或過程SELECT 從表、視圖、序列或物化視圖中選擇行UPDATE 更新表、視圖或物化視圖2.4審計的一些其他選項**byaccess/bysession:byaccess每一個被審計的操作都會生成一條audittrail。謝謝閱讀bysession一個會話里面同類型的操作只會生成一條audittrail,默認為bysession。謝謝閱讀whenever[not]successful:感謝閱讀wheneversuccessful操作成功(dba_audit_trail中returncode字段為0)才審計,謝謝閱讀whenevernotsuccessful反之。省略該子句的話,不管操作成功與否都會審計。精品文檔放心下載2.5和審計相關的視圖dba_audit_trail:保存所有的audittrail,實際上它只是一個基于aud$的視圖。其它的感謝閱讀視圖dba_audit_session,dba_audit_object,dba_audit_statement都只是dba_audit_t感謝閱讀rail的一個子集。dba_stmt_audit_opts:可以用來查看statement審計級別的auditoptions,即數(shù)據(jù)精品文檔放心下載庫設置過哪些statement級別的審計。dba_obj_audit_opts,dba_priv_audit_opts視圖精品文檔放心下載功能與之類似all_def_audit_opts:用來查看數(shù)據(jù)庫用ondefault子句設置了哪些默認對象審計。感謝閱讀1. SYS.AUD$審計功能的底層視圖,如果需要對數(shù)據(jù)進行刪除,只需要對aud$視圖進行刪除既可,其精品文檔放心下載他視圖里的數(shù)據(jù)都是由aud$所得.2. DBA_AUDIT_EXISTS列出auditnotexists和auditexists產(chǎn)生的審計跟蹤,我們默認的都是auditexi謝謝閱讀sts.**3. DBA_AUDIT_TRAIL可以在里面查處所有審計所跟蹤的信息,保存所有的audittrail,實際上它只是一精品文檔放心下載個基于aud$的視圖。其它的視圖dba_audit_session,dba_audit_object,dba_audi精品文檔放心下載t_statement都只是dba_audit_trail的一個子集。謝謝閱讀4. DBA_AUDIT_OBJECT可以查詢所有對象跟蹤信息.(例如,對grant,revoke等不記錄),信息完全包含于dba_精品文檔放心下載audit_trail5. DBA_AUDIT_SESSION所得到的數(shù)據(jù)都是有關logon或者logoff的信息.精品文檔放心下載6. DBA_AUDIT_STATEMENT列出grant,revoke,audit,noaudit,altersystem語句的審計跟蹤信息.感謝閱讀DBA_PRIV_AUDIT_OPTS通過系統(tǒng)和由用戶審計的當前系統(tǒng)特權DBA_OBJ_AUDIT_OPTS可以查詢到所有用戶所有對象的審計選項DB_STMT_AUDIT_OPTS可以用來查看statement審計級別的auditoptions,即數(shù)據(jù)庫設置過哪些statem謝謝閱讀ent級別的審計。dba_obj_audit_opts,dba_priv_audit_opts視圖功能與之類似精品文檔放心下載10.ALL_DEF_AUDIT_OPTS用來查看數(shù)據(jù)庫用ondefault子句設置了哪些默認對象審計精品文檔放心下載11.AUDIT_ACTIONS可以查詢出在aud$等視圖中actions列的含義精品文檔放心下載**12.SYSTEM_PRIVILEGE_MAP可以查詢出aud$等視圖中priv$used列的含義(注意前面加'-')精品文檔放心下載STMT_AUDIT_OPTION_MAP審計選項類型代碼精品文檔放心下載DBA_AUDIT_POLICIES審計POLICIES謝謝閱讀DBA_COMMON_AUDIT_TRAIL標準審計+細粒度審計合并視圖感謝閱讀DBA_FGA_AUDIT_TRAIL細粒度審計策略的審計跟蹤條目2.6取消審計將對應審計語句的audit改為noaudit即可,如auditsessionwheneversucces謝謝閱讀sful對應的取消審計語句為noauditsessionwheneversuccessful;感謝閱讀2.7設置ORACLE標準審計:下列步驟可以設置ORACLE的標準審計功能:修改初始化參數(shù)文件(init<sid>.ora)如果使用服務器參數(shù)文件使用altersystemset<parameter>=<value>scope=s感謝閱讀pfile|both,詳情參照1.1節(jié)中關于參數(shù)文件的介紹),設置AUDIT_TRAIL參數(shù),并精品文檔放心下載且重啟數(shù)據(jù)庫。AUDIT_TRAIL的取值如下:DB/TRUE:啟動審計功能,并且把審計結(jié)果存放在數(shù)據(jù)庫的SYS.AUD$表中感謝閱讀**DB_EXTENDED:具有DB/TRUE的功能,另外記錄AUD$的SQLBIND和SQ感謝閱讀LTEXT字段OS:啟動審計功能,并把審計結(jié)果存放在操作系統(tǒng)的審計信息中精品文檔放心下載XML:啟動審計功能,并且把審計結(jié)果以XML格式存放在操作系統(tǒng)的審計信感謝閱讀息中XML_EXTENDED:具有XML的功能,另外會記錄SQLBIND和SQLTEXT信感謝閱讀息NONE/FALSE:關閉審計功能2.設置AUDIT_TRAIL參數(shù):如果設置AUDIT_TRAIL=OS,還需要修改參數(shù)AUDIT_FILE_DEST。感謝閱讀如果操作系統(tǒng)支持設置AUDIT_TRAIL=OS,文件會自動存放在AUDIT_FILE_DEST所精品文檔放心下載指定的目錄下,并且文件名包含進程的PID。確認審計相關的表是否已經(jīng)安裝SQLPLUS>connect/ASSYSDBA感謝閱讀SQLPLUS>select*fromsys.aud$;--沒有記錄返回SQLPLUS>select*fromdba_audit_trail;--沒有記錄返回感謝閱讀如果做上述查詢的時候發(fā)現(xiàn)表不存在,說明審計相關的表還沒有安裝,需要安裝。精品文檔放心下載SQLPLUS>connect/assysdba謝謝閱讀SQLPLUS>@$ORACLE_HOME/rdbms/admin/cataudit.sql謝謝閱讀**審計表安裝在SYSTEM表空間。所以要確保SYSTEM表空間又足夠的空間存放審計謝謝閱讀信息。關閉并重啟數(shù)據(jù)庫設置所需要的審計信息下面是一個例子SQL>connectsystem/manager精品文檔放心下載SQL>grantauditsystemtoscott;謝謝閱讀SQL>connectscott/tigerSQL>auditsession;停止審計:SQL>noauditsession;通常設置了標準審計后都是通過Audit語句開啟審計,使用noaudit語句收回審計。謝謝閱讀如下所示:對修改SC表結(jié)構或數(shù)據(jù)的操作進行審計可使用如下語句:謝謝閱讀AUDIEALTER,UPDATEONSC;取消對SC表的一切審計可使用如下語句:NOAUDITALLONSC;2.8設置審計的實例(對試圖嘗試口令的訪問的審計):謝謝閱讀以下是一個審計的實例,用于記錄嘗試通過野蠻嘗試法破譯ORACLE帳號精品文檔放心下載口令的例子:1.修改審計相關參數(shù)(參照上面介紹的方法)2.重啟數(shù)據(jù)庫**3.設置審計信息SQL>AUDITALLBYACCESSWHENEVERNOTSUCCESSFUL精品文檔放心下載4.查詢AUD$SQL>selectreturncode,action#,userid,userhost,terminal,timestamp謝謝閱讀fromaud$RETURNCODEACTION#USERIDUSERHOSTTERMINAL--------------------------------------------------------------------1017100SCOTTWPRATA-BR1017100SCOTTWPRATA-BR1017100SCOTTWPRATA-BRORA-1017的含義為錯誤的用戶名口令。通過查看AUD$表可以清楚地看到精品文檔放心下載WPRATA-BR嘗試破譯SCOTT的口令??梢酝ㄟ^下面一個存儲過程來分析AUD$表,找出感謝閱讀可疑的信息:createorreplaceprocedureAuditLogin(SinceVarchar2,TimesPLS_Integer)謝謝閱讀isUSER_IDVARCHAR2(20);cursorc1isselectuserid,count(*)fromsys.aud$wherereturncode='1017'and感謝閱讀timestamp#>=to_date(Since,'yyyy-mm-dd')謝謝閱讀groupbyuserid;**cursorC2ISSelectuserhost,精品文檔放心下載terminal,TO_CHAR(timestamp#,'YYYY-MM-DD:HH24:MI:SS')謝謝閱讀fromsys.aud$WHEREreturncode='1017'and謝謝閱讀timestamp#>=to_date(Since,'yyyy-mm-dd')ANDUSERID=USER_ID;謝謝閱讀ctPLS_INTEGER;V_USERHOSTVARCHAR2(40);V_TERMINALVARCHAR(40);V_DATEVARCHAR2(40);BEGINOPENC1;dbms_output.enable(1024000);精品文檔放心下載LOOPFETCHC1INTOUSER_ID,CT;EXITWHENC1%NOTFOUND;IF(CT>=TIMES)THENDBMS_OUTPUT.PUT_LINE('USERBROKENALARM:'||USER_ID);感謝閱讀OPENC2;LOOPFETCHC2INTOV_USERhOST,V_TERMINAL,V_DATE;感謝閱讀DBMS_OUTPUT.PUT_LINE(CHR(9)||'HOST:'||V_USERHOST||',TERM:'||V_TERMINAL||',T精品文檔放心下載IME:'||V_DATE);**EXITWHENC2%NOTFOUND;ENDLOOP;closec2;ENDIF;ENDLOOP;closec1;END;/一下是執(zhí)行結(jié)果:SQL>setserveroutputon;SQL>executeauditlogin('2004-01-01',2);感謝閱讀USERBROKENALARM:SYSHOST:,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:29感謝閱讀PL/SQL過程已成功完成。2.9將審計相關的表移動到其他表空間:由于AUD$表等審計相關的表存放在SYSTEM表空間,因此為了不影響系統(tǒng)的性能,感謝閱讀保護SYSTEM表空間,最好把AUD$移動到其他的表空間上。可以使用下面的語句來進行謝謝閱讀移動:**SQL>connect/assysdba;SQL>altertableaud$movetablespace<newtablespace>;謝謝閱讀SQL>alterindexI_aud1rebuildonlinetablespace<newtablespace>;謝謝閱讀SQL>altertableaudit$movetablespace<newtablespace>;謝謝閱讀SQL>alterindexi_auditrebuildonlinetablespace<newtablespace>;精品文檔放心下載SQL>altertableaudit_actionsmovetablespace<newtablespace>;謝謝閱讀SQL>alterindexi_audit_actionsrebuildonlinetablespace<newtablespace>;精品文檔放心下載2.10審計語句樣例多層環(huán)境下的審計:appserve-應用服務器,jackson-clientAUDITSELECTTABLEBYappserveONBEHALFOFjackson;感謝閱讀審計連接或斷開連接:AUDITSESSION;AUDITSESSIONBYjeff,lori; --指定用戶精品文檔放心下載審計權限(使用該權限才能執(zhí)行的操作):AUDITDELETEANYTABLEBYACCESSWHENEVERNOTSUCCESSFUL;AUDITDELETEANYTABLE;感謝閱讀AUDITSELECTTABLE,INSERTTABLE,DELETETABLE,EXECUTEPROCEDUREBYACCESSWHENEVERNOTSUCCESSFUL;謝謝閱讀**對象審計:AUDITDELETEONjeff.emp;AUDITSELECT,INSERT,DELETEONjward.deptBYACCESSWHENEVERSUCCESSFUL;感謝閱讀取消審計:NOAUDITsession;NOAUDITsessionBYjeff,lori;謝謝閱讀NOAUDITDELETEANYTABLE;NOAUDITSELECTTABLE,INSERTTABLE,DELETETABLE,EXECUTE精品文檔放心下載PROCEDURE;NOAUDITALL; --取消所有statement審計謝謝閱讀NOAUDITALLPRIVILEGES; --取消所有權限審計感謝閱讀NOAUDITALLONDEFAULT; --取消所有對象審計精品文檔放心下載2.11清除審計信息DELETEFROMSYS.AUD$;TRUNCATETABLESYS.AUD$;DELETEFROMSYS.AUD$WHEREobj$name='EMP';謝謝閱讀**三、細粒度審計:細粒度審計(FGA)(通過Oracle9i引入)可以理解為“基于政策的審計”。感謝閱讀與標準的審計功能相反,F(xiàn)GA可用于指定生成審計記錄必需的條件:精品文檔放心下載FGA政策通過使用“dbms_fga”程序包以編程方式綁定到對象(表、視圖)。類似于用于通過VPD("dbms_rls")進行訪問控制的程序包,它允許您創(chuàng)建任何需要的條件,例如:僅當以下條件為真時審計事件:謝謝閱讀在早上九點到下午六點之間或在星期六和星期日對某個表進行了訪問。謝謝閱讀使用了公司網(wǎng)絡外部的某個IP地址。選定或更新了特定列。使用了該列的特定值。這將創(chuàng)建更有意義的審計線索,因為無需記錄每一個人對表的每一次訪問。從Oracle數(shù)據(jù)庫10g開始,F(xiàn)GA支持在一個策略中使用“選擇”、“插入”、“更新”和“刪除”語句的任意組合。事實上,綁定到表的FGA政策簡化了審計政策的管理,因為這將只需在數(shù)據(jù)庫中對其更改一次,不用在每個應用程序中一次次進行。此外。無論用戶通過何種方式連接至數(shù)據(jù)庫(通過應用程序、Web接口或通過SQL*Plus),其操作都會記錄下來。感謝閱讀細粒度審計的程序包DBMS_FGA具有4個過程:精品文檔放心下載ADD_POLICY --添加使用謂詞和審計列的審計策略感謝閱讀DROP_POLICY --刪除審計策略DISABLE_POLICY --禁用審計策略,但保留與表或視圖關聯(lián)的策略精品文檔放心下載**ENABLE_POLICY --啟用策略3.1使用細粒度審計:1、創(chuàng)建測試表:createtableACCOUNT(AACT_NOnumbernotnull,CUST_IDnumbernotnull,BALANCEnumber(15,2));2、添加審計策略:beginDBMS_FGA.ADD_POLICY(object_schema=>'TEST',感謝閱讀object_name =>'ACCOUNT',policy_name =>'ACCOUNT_ACCESS');謝謝閱讀end;這段代碼必須由具有執(zhí)行程序包dbms_fga權限的用戶來執(zhí)行。建議應該建立一個專門的用戶來專門負責添加審計策略。該過程有許多參數(shù),具體含義如下:精品文檔放心下載OBJECT_SCHE對其定義了FGA策略的表或視圖的所有者MAOBJECT_NAM 表或視圖的名稱**EPOLICY_NAM策略的名稱,由用戶自定義—例如,ACCOUNTS_ACCESS感謝閱讀E在添加策略時指定的審計條件—例如,BALANCE>=謝謝閱讀POLICY_TEXT11000POLICY_COLU審計列—例如,BALANCEMNENABLED 如果啟用則為YES,否則為NOPF_SCHEMA 擁有策略處理器模塊的模式(如果存在)精品文檔放心下載PF_PACKAGE 處理器模塊的程序包名稱(如果存在)感謝閱讀PF_FUNCTIO處理器模塊的過程名稱(如果存在)N3、在定義了策略以后,當用戶以通常的方式對表進行查詢時,如下所示:感謝閱讀select*frombank.accounts;謝謝閱讀審計線索記錄此操作??梢允褂靡韵抡Z句查看線索:selecttimestamp,db_user,**os_user,object_schema,object_name,sql_textfromdba_fga_audit_trail;TIMESTAMPDB_USEROS_USEROBJECT_OBJECT_NSQL_TEXT感謝閱讀------------------------------------------------------------感謝閱讀26-MAR-10TEST ananda TEST ACCOUNTselect*fromaccount感謝閱讀注意名為DBA_FGA_AUDIT_TRAIL的新視圖,它記錄細粒度的訪問信息。其中顯示了審計事件的時間標記、查詢者的數(shù)據(jù)庫用戶ID、操作系統(tǒng)用戶ID、查詢中所使用表的名稱和所有者,最后還有確切的查詢語句。謝謝閱讀3.2審計列和審計條件:默認情況下會對被審計對象的所有列開啟審計,當任何一列被訪問時都會紀感謝閱讀錄一條審計信息,這在現(xiàn)實情況下不太常見,因為這樣會使審計信息表增長過快精品文檔放心下載造成存儲空間的壓力,因此通常都會設置審計條件,當條件觸發(fā)時再發(fā)起審計。精品文檔放心下載例如我們可以對Account表的Balance列設置審計條件,當訪問該列并觸發(fā)審謝謝閱讀計條件時才進行審計。如下所示:begindbms_fga.add_policy(object_schema=>'TEST',object_name=>'ACCOUNT',**policy_name=>'ACCOUNT_ACCESS',感謝閱讀audit_column=>'BALANCE',精品文檔放心下載audit_condition=>'BALANCE>=11000'謝謝閱讀);end;該策略將在訪問BALANCE列并且只有訪問列值大于等于11000時才發(fā)起審計。精品文檔放心下載因此根據(jù)該條件戶有如下不同審計狀態(tài):SQL語句

審計狀態(tài)selectbalancefromaccount;精品文檔放心下載

進行審計。用戶選擇了在添加策略時所指定的審計列BALANCE。謝謝閱讀select*fromaccount;

進行審計。即使用戶沒有明確指定列BALANCE,*也隱含地選擇了它。感謝閱讀selectcust_idfromaccountwherebalance<10000;精品文檔放心下載

進行審計。即使用戶沒有明確指定列BALANCE,where子句也隱含地選擇了它。謝謝閱讀selectcust_idfromaccount;感謝閱讀

不進行審計。用戶沒有選擇列BALANCE。selectcount(*)fromaccount;謝謝閱讀

不進行審計。用戶沒有明確或隱含地選擇列BALANCE。精品文檔放心下載更詳細的設置策略如下:DBMS_FGA.ADD_POLICY(**object_schemaVARCHAR2,--schema的名字,表或視圖的擁有者object_nameVARCHAR2,--對象名,表或視圖的名字感謝閱讀policy_nameVARCHAR2,--審計策略名字,它和數(shù)據(jù)庫中其他對象一樣,需要有一個不重復,唯一的名字謝謝閱讀audit_conditionVARCHAR2,--篩選條件比如可以選擇哪些符合條件的操作被記錄感謝閱讀audit_columnVARCHAR2,--表中的某一列,可以只記錄對表中某一列的操作.如果不指定表示審計所有的列感謝閱讀handler_schemaVARCHAR2,--是下面的handler_module的擁有者,其實也只能是創(chuàng)建policy的用戶,而上面的object_schema可以是任意用戶感謝閱讀handler_moduleVARCHAR2,--可以是一個一個存儲過程或函數(shù),但監(jiān)測到任何一條符合條件的操作時執(zhí)行它.謝謝閱讀enableBOOLEAN,--true或false表示policy是開啟或關閉狀態(tài),如果是false表示不進行審計謝謝閱讀statement_typesVARCHAR2,--表示哪些操作將被審計,可以填上select,insert,update,delete中的一個或幾個感謝閱讀audit_trailBINARY_INTEGERINDEFAULT,--有參數(shù)db,xml表示審計到的信息保存到數(shù)據(jù)庫中或是以xml文件形式保存到磁盤上謝謝閱讀audit_column_optsBINARY_INTEGERINDEFAULT);--這個選項其實只有在audt_column中指定了某列時才起作用.它有any_columns,all_columns兩個選項假如表中有eno,ename兩列,并在audit_column中指定了這兩列,那么選any_columns表示只要操作其中的任意一列都將被記錄,而這里指定精品文檔放心下載**all_columns的話是說只有一個sql語句同時操作了這兩列才被記錄精品文檔放心下載3.3優(yōu)化器模式:FGA需要基于成本的優(yōu)化(CBO),以便正確地工作。在基于規(guī)則的優(yōu)化時,只要用戶從表中進行選擇,無論是否選擇了相關的列,都始終生成審計線索,增加了誤導項目出現(xiàn)的可能性。為使FGA正確地工作,除了在實例級啟用CBO之外,在SQL語句中應該沒有規(guī)則暗示(hint),并且必須至少使用評估選項對查詢中的所有表進行分析。感謝閱讀3.4管理FGA策略:要刪除策略,您可以使用以下語句:begindbms_fga.drop_policy(object_schema=>'TEST',object_name=>'ACCOUNT',policy_name=>'ACCOUNT_ACCESS'謝謝閱讀);end;對于更改策略而言,沒有隨取隨用的解決方案。要更改策略中的任何參數(shù),必須感謝閱讀刪除策略,再使用更改后的參數(shù)添加策略。但是可以暫時禁用已有策略,如下所感謝閱讀示:**begindbms_fga.enable_policy(object_schema=>'TEST',object_name=>'ACCOUNT',policy_name=>'ACCOUNT_ACCESS',謝謝閱讀enable=>FALSE);end;若要重新啟用它,可使用同一函數(shù),只需將參數(shù)enable設置為TRUE。謝謝閱讀3.5FGA數(shù)據(jù)字典視圖:FGA策略的定義位于數(shù)據(jù)字典視圖DBA_AUDIT_POLICIES中。該市途中各列含義如下:感謝閱讀SESSION_ID 審計會話標識符;與V$SESSION視圖中的會話標識符不同謝謝閱讀TIMESTAMP 審計記錄生成時的時間標記DB_USER 發(fā)出查詢的數(shù)據(jù)庫用戶OS_USER 操作系統(tǒng)用戶USERHOST 用戶連接的機器的主機名CLIENT_ID 客戶標識符(如果由對打包過程dbms_session.set_identifier感謝閱讀**EXT_NAME

的調(diào)用所設置)外部認證的客戶名稱,如LDAP用戶OBJECT_SCHEMA

對該表的訪問觸發(fā)了審計的表所有者OBJECT_NAME

對該表的SELECT操作觸發(fā)了審計的表名稱POLICY_NAMESCNSQL_TEXTSQL_BIND

觸發(fā)審計的策略名稱(如果對表定義了多個策略,則每個策略謝謝閱讀將插入一條記錄。在此情況下,該列顯示哪些行是由哪個策略謝謝閱讀插入的。)記錄了審計的Oracle系統(tǒng)更改號由用戶提交的SQL語句由SQL語句使用的綁定變量(如果存在)3.6視圖和FGA:假定在ACCOUNTS表上定義視圖VW_ACCOUNT如下:謝謝閱讀createviewvw_accountasselect*fromaccount;感謝閱讀現(xiàn)在,如果用戶從視圖中而不是從表中進行選擇:select*fromvw_account;**您將看到以下審計線索:selectobject_name,sql_textfromdba_fga_audit_trail;感謝閱讀OBJECT_NAMESQL_TEXT------------------------------------------------------------精品文檔放心下載ACCOUNT select*fromvw_account精品文檔放心下載注意,是基表名稱而不是視圖名稱出現(xiàn)在OBJECT_NAME列中,因為視圖中的選擇是從基表中進行選擇。但是,SQL_TEXT列記錄了用戶提交的實際語句。如果只希望審計對視圖的查詢而不是對表的查詢,可以對視圖本身建立策謝謝閱讀略。通過將視圖名稱而不是表的名稱傳遞給打包的過程dbms_fga.add_policy中的參數(shù)object_name,可以完成這項工作。隨后DBA_FGA_AUDIT_TRAIL中的OBJECT_NAME列將顯示視圖的名稱,并且不會出現(xiàn)有關表訪問的附加記錄。感謝閱讀3.7其它用途:除了記錄對表的選擇訪問,F(xiàn)GA還可用于某些其它情況:感謝閱讀可以對數(shù)據(jù)倉庫使用FGA,以捕獲特定的表、視圖或物化視圖上發(fā)生的所有語句,這有助于計劃索引。不需要到V$SQL視圖去獲取這些信息。即使SQL語句已經(jīng)超出了V$SQL的期限,在FGA審計線索中將會始終提供它。感謝閱讀**由于FGA捕獲綁定變量,它可以幫助了解綁定變量值的模式,這有助于設計直方圖集合等。感謝閱讀可以向?qū)徲嬚呋駾BA發(fā)送警告,這有助于跟蹤惡意應用程序。精品文檔放心下載由于FGA可以作為SELECT語句的觸發(fā)器,可以在需要這種功能的任何時候使用它。感謝閱讀3.8FGA在10G中的增強:3.8.1對所有DML的審計:在9i中FGA只能對Select語句進行審計,而不能對其他DML語句(Update、謝謝閱讀Delete、Insert)進行審計,如果想對其他DML語句進行審計那么只能采取數(shù)精品文檔放心下載據(jù)庫處發(fā)起的形式來實現(xiàn)。在10G中實現(xiàn)了對所有DML語句的審計,如下所精品文檔放心下載示:begindbms_fga.add_policy(object_schema =>'TEST',object_name =>'ACCOUNT',policy_name =>'ACCOUNT_ACCESS',感謝閱讀audit_column =>'BALANCE',感謝閱讀audit_condition=>'BALANCE>=3000',感謝閱讀statement_types=>'INSERT,UPDATE,DELETE,SELECT'謝謝閱讀);end;通過statement_types=>'INSERT,UPDATE,DELETE,SELECT'參數(shù)制定了新的策略,該謝謝閱讀**策略可以對Select之外的所有DML操作進行審計。因此根據(jù)新的審計條件和審計策略會精品文檔放心下載有如下不同情況:第1種情況之前:BALANCE=1000用戶發(fā)出:updateaccountsetbalance=1200whereACCOUNT_NO=....精品文檔放心下載舊的和新的balance都小于3,000,審計條件不滿足;因此這條語句將不會被審計。感謝閱讀第2種情況之前:BALANCE=1000用戶發(fā)出:updateaccountsetbalance=3200whereACCOUNT_NO=....感謝閱讀新的balance大于3,000,審計條件滿足;因此這條語句將會被審計。精品文檔放心下載第3種情況之前:BALANCE=3200用戶發(fā)出:**updateaccountsetbalance=1200whereACCOUNT_NO=....感謝閱讀新的balance小于3,000,但舊的balance大于3,000。因此審計條件滿足,這條語句將被審計。謝謝閱讀第4種情況用戶插入一行,其中有BALANCE<3000。謝謝閱讀insertintoaccountvalues(9999,1200,'X');謝謝閱讀因為balance1,200不滿足審計條件,所以這條語句不被審計。如果balance列大于或等于3,000,它將被審計。精品文檔放心下載第5種情況用戶插入一行,其中balance的值為空。insertintoaccount(account_no,status)values(9997,'X');謝謝閱讀因為balance為空,該列沒有任何默認值,所以審計條件不滿足(比較NULL>=3000結(jié)果為FALSE),這條語句不會被審計。重要注意事項:假設該列有一個大于3,000的默認值時,這條語句仍然不會被審計,即使插入行的謝謝閱讀balance列值大于3000。注意對于DML語句的審計是由一個自動事務插入感謝閱讀的;即使回滾DML語句的操作,審計記錄也將存在不會跟著回滾。感謝閱讀3.8.2制定相關的列策略:**在表ACCOUNT上定義的一個策略,如下:begindbms_fga.add_policy(object_schema =>'TEST',object_name =>'ACCOUNT',policy_name =>'ACCOUNT_SEL',感謝閱讀audit_column =>'ACCOUNT_NO,BALANCE',感謝閱讀audit_condition=>'BALANCE>=3000',精品文檔放心下載statement_types=>'SELECT'精品文檔放心下載);end;在某些情況下,列的組合可能很重要,而不是某個特定的列。以上策略是在謝謝閱讀ACCOUNT_NO和BALANCE上定義的。那么如果用戶發(fā)出以下語句:謝謝閱讀selectbalancefromaccountswhereaccount_no=9995;感謝閱讀這條語句將被審計,因為balance列被選中,且余額為3,200,大于3,000,滿足審計條件。謝謝閱讀如果一個用戶想查出在銀行的總余額,他發(fā)出:selectsum(balance)fromaccount;謝謝閱讀**這條查詢幾乎沒什么害處;它不明確指出帳戶所有者和帳戶余額。因此安全策略可能不會要求審計這條查詢。不過,這條查詢精品文檔放心下載selectbalancefromaccountwhereaccount_no=9995精品文檔放心下載必須被審計;因為它明確地指定了一個帳戶。默認地,所有語句都被審計(無論使用了什么樣的列組合)。這

溫馨提示

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

評論

0/150

提交評論