![Oracle審計功能詳解_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/23/c4786fbd-32f7-4baf-a59a-5dd79a01a08e/c4786fbd-32f7-4baf-a59a-5dd79a01a08e1.gif)
![Oracle審計功能詳解_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/23/c4786fbd-32f7-4baf-a59a-5dd79a01a08e/c4786fbd-32f7-4baf-a59a-5dd79a01a08e2.gif)
![Oracle審計功能詳解_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/23/c4786fbd-32f7-4baf-a59a-5dd79a01a08e/c4786fbd-32f7-4baf-a59a-5dd79a01a08e3.gif)
![Oracle審計功能詳解_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/23/c4786fbd-32f7-4baf-a59a-5dd79a01a08e/c4786fbd-32f7-4baf-a59a-5dd79a01a08e4.gif)
![Oracle審計功能詳解_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/23/c4786fbd-32f7-4baf-a59a-5dd79a01a08e/c4786fbd-32f7-4baf-a59a-5dd79a01a08e5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、Oracle審計功能詳解一、 審計分類:Oracle中審計總體上可分為“標準審計”和“細粒度審計”后者也稱為“基于政策的審計”,在Oracle10G之后功能得到很大增強。其中標準審計可分為用戶級審計和系統(tǒng)級審計。用戶級審計是任何Oracle用戶可設置的審計,主要是用戶針對自己創(chuàng)建的數(shù)據(jù)庫表或視圖進行審計,記錄所有用戶對這些表或視圖的一切成功和(或)不成功的訪問要求以及各種類型的SQL操作。系統(tǒng)級審計只能由DBA設置,用以監(jiān)測成功或失敗的登錄要求、監(jiān)測GRANT和REVOKE操作以及其他數(shù)據(jù)庫級權(quán)限下的操作。二、 標準審計:2.1 分類:在ORACLE中分別支持以下三種標準審計類型:u 語句審計
2、,對某種類型的SQL語句審計,不指定結(jié)構(gòu)或?qū)ο?。u 特權(quán)審計,對執(zhí)行相應動作的系統(tǒng)特權(quán)的使用審計。u 對象審計,對一特殊模式對象上的指定語句的審計。這三種標準審計類型分別對如下3方面進行審計:u 審計語句的成功執(zhí)行、不成功執(zhí)行,或者其兩者。u 對每一用戶會話審計語句執(zhí)行一次或者對語句每次執(zhí)行審計一次。u 對全部用戶或指定用戶的活動的審計。當數(shù)據(jù)庫的審計功能打開后,在語句執(zhí)行階段產(chǎn)生審計記錄。審計記錄包含有審計的操作、用戶執(zhí)行的操作、操作的日期和時間等信息。審計記錄可存在數(shù)據(jù)字典表(稱為審計記錄)或操作系統(tǒng)審計記錄中。數(shù)據(jù)庫審計記錄是在SYS模式的AUD$表中。2.2 和審計相關(guān)的兩個主要參數(shù)A
3、udit_sys_operations:默認為false,當設置為true時,所有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ù)庫的審
4、計相關(guān)表中,如aud$,審計的結(jié)果只有連接信息;DB,Extended:與DB一樣,但是審計結(jié)果里面除了連接信息還包含了當時執(zhí)行的SQL_TEXT和SQL_BIND;OS:將audit trail 記錄在操作系統(tǒng)文件中,文件名由audit_file_dest參數(shù)指定;XML:10g里新增,將audit trail以XML格式記錄在操作系統(tǒng)文件中;XML,Extended:與XML一樣,但是審計結(jié)果里面除了連接信息還包含了當時執(zhí)行的SQL_TEXT和SQL_BIND注:這兩個參數(shù)是static參數(shù),需要重新啟動數(shù)據(jù)庫才能生效。2.3 審計級別當開啟審計功能后,可在三個級別對數(shù)據(jù)庫進行審計:Sta
5、tement(語句)、Privilege(權(quán)限)、object(對象)。Statement:按語句來審計,比如audit table 會審計數(shù)據(jù)庫中所有的create table,drop table,truncate table語句,alter session by cmy會審計cmy用戶所有的數(shù)據(jù)庫連接。用法:AUDIT sql_statement_clause BY SESSION | ACCESS WHENEVER NOT SUCCESSFUL;表1列出了可以審計的語句類型,并且在每個類別中包含了相關(guān)語句的簡要描述。如果指定all,則審計該列表中的任何語句。然而,表2中的語句類型在啟用
6、審計時不屬于all類別;必須在audit命令中顯式地指定它們。表1 包括在ALL類別中的可審計語句語 句 選 項SQL操作ALTER SYSTEM所有ALTER SYSTEM選項,例如,動態(tài)改變實例參數(shù),切換到下一個日志文件組,以及終止用戶會話CLUSTERCREATE、ALTER、DROP或TRUNCATE集群CONTEXTCREATE CONTEXT或DROP CONTEXTDATABASE LINKCREATE或DROP數(shù)據(jù)庫鏈接DIMENSIONCREATE、ALTER或DROP維數(shù)DIRECTORYCREATE或DROP目錄INDEXCREATE、ALTER或DROP索引MATERI
7、ALIZED VIEWCREATE、ALTER或DROP物化視圖NOT EXISTS由于不存在的引用對象而造成的SQL語句的失敗PROCEDURECREATE或DROP FUNCTION、LIBRARY、PACKAGE、PACKAGE BODY或PROCEDUREPROFILECREATE、ALTER或DROP配置文件PUBLIC DATABASE LINKCREATE或DROP公有數(shù)據(jù)庫鏈接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 顯式指定的語句類型語 句 選 項SQL 操 作ALTER SEQUENCE任何ALTER SEQUENCE命令ALTER TABLE任何ALTER TABLE命令COMMENT TABLE添加注釋到表、視圖、物化視圖或它們中的任何列DELETE TABLE刪除表或視圖中的行EXECUTE PROCEDURE執(zhí)行程序包中的過程、函數(shù)或任何變量或游標GRANT DIRECTORYGRANT或REVOKE DIRECTORY對象上的權(quán)限GRANT PROCEDUREGRANT或REVOKE過程、函數(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)限來審計,當用戶使用了該權(quán)限則被審計,如執(zhí)行g(shù)rant select any table to a,當執(zhí)行了au
11、dit select any table語句后,當用戶a 訪問了用戶b的表時(如select * from b.t)會用到select any table權(quán)限,故會被審計。注重用戶是自己表的所有者,所以用戶訪問自己的表不會被審計。用法:審計系統(tǒng)權(quán)限具有與語句審計相同的基本語法,但審計系統(tǒng)權(quán)限是在sql_statement_clause中,而不是在語句中,指定系統(tǒng)權(quán)限Object:按對象審計,只審計on要害字指定對象的相關(guān)操作,如aduit alter,delete,drop,insert on cmy.t by scott; 這里會對cmy用戶的t表進行審計,但同時使用了by子句,所以只會對s
12、cott用戶發(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進行“審計”,這個功能稍顯不足。用法:AUDIT schema_object_clause BY SESSION | ACCESS WHENEVER
13、 NOT SUCCESSFUL;schema_object_clause指定對象訪問的類型以及訪問的對象??梢詫徲嬏囟▽ο笊?4種不同的操作類型,下表中列出了這些操作。對 象 選 項說 明ALTER改變表、序列或物化視圖AUDIT審計任何對象上的命令COMMENT添加注釋到表、視圖或物化視圖DELETE從表、視圖或物化視圖中刪除行EXECUTE執(zhí)行過程、函數(shù)或程序包FLASHBACK執(zhí)行表或視圖上的閃回操作GRANT授予任何類型對象上的權(quán)限INDEX創(chuàng)建表或物化視圖上的索引INSERT將行插入表、視圖或物化視圖中LOCK鎖定表、視圖或物化視圖READ對DIRECTORY對象的內(nèi)容執(zhí)行讀操作RE
14、NAME重命名表、視圖或過程SELECT從表、視圖、序列或物化視圖中選擇行UPDATE更新表、視圖或物化視圖2.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 反之。省略該子句的
15、話,不管操作成功與否都會審計。2.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ù)庫設置過哪些statement級別的審計。dba_obj_audit_opts,dba_priv_audit_opts視圖功能與之類似all_def_audit_o
16、pts:用來查看數(shù)據(jù)庫用on default子句設置了哪些默認對象審計。1. SYS.AUD$審計功能的底層視圖,如果需要對數(shù)據(jù)進行刪除,只需要對aud$視圖進行刪除既可,其他視圖里的數(shù)據(jù)都是由aud$所得.2. DBA_AUDIT_EXISTS列出audit not exists和audit exists產(chǎn)生的審計跟蹤,我們默認的都是audit exists.3. DBA_AUDIT_TRAIL可以在里面查處所有審計所跟蹤的信息,保存所有的audit trail,實際上它只是一個基于aud$的視圖。其它的視圖dba_audit_session,dba_audit_object,dba_aud
17、it_statement都只是dba_audit_trail的一個子集。4. DBA_AUDIT_OBJECT可以查詢所有對象跟蹤信息.(例如,對grant,revoke等不記錄),信息完全包含于dba_audit_trail5. DBA_AUDIT_SESSION所得到的數(shù)據(jù)都是有關(guān)logon或者logoff的信息.6. DBA_AUDIT_STATEMENT列出grant ,revoke ,audit ,noaudit ,alter system語句的審計跟蹤信息.7. DBA_PRIV_AUDIT_OPTS通過系統(tǒng)和由用戶審計的當前系統(tǒng)特權(quán)8. DBA_OBJ_AUDIT_OPTS可以查
18、詢到所有用戶所有對象的審計選項9. DB_STMT_AUDIT_OPTS可以用來查看statement審計級別的audit options,即數(shù)據(jù)庫設置過哪些statement級別的審計。dba_obj_audit_opts,dba_priv_audit_opts視圖功能與之類似10. ALL_DEF_AUDIT_OPTS用來查看數(shù)據(jù)庫用on default子句設置了哪些默認對象審計11. AUDIT_ACTIONS可以查詢出在aud$等視圖中actions列的含義12. SYSTEM_PRIVILEGE_MAP可以查詢出aud$等視圖中priv$used列的含義(注意前面加-)13. STM
19、T_AUDIT_OPTION_MAP 審計選項類型代碼14. DBA_AUDIT_POLICIES審計POLICIES15. DBA_COMMON_AUDIT_TRAIL標準審計+細粒度審計合并視圖16. DBA_FGA_AUDIT_TRAIL細粒度審計策略的審計跟蹤條目2.6 取消審計將對應審計語句的audit改為noaudit即可,如audit session whenever successful對應的取消審計語句為noaudit session whenever successful;2.7設置ORACLE標準審計:下列步驟可以設置ORACLE的標準審計功能: 1. 修改初始化參數(shù)文件
20、(init.ora)如果使用服務器參數(shù)文件使用alter system set = scope=spfile|both,詳情參照1.1節(jié)中關(guān)于參數(shù)文件的介紹),設置 AUDIT_TRAIL參數(shù),并且重啟數(shù)據(jù)庫。AUDIT_TRAIL的取值如下: l DB/TRUE:啟動審計功能,并且把審計結(jié)果存放在數(shù)據(jù)庫的 SYS.AUD$ 表中l(wèi) DB_EXTENDED:具有DB/TRUE的功能,另外記錄AUD$的SQLBIND和SQLTEXT字段 l OS:啟動審計功能,并把審計結(jié)果存放在操作系統(tǒng)的審計信息中 lXML:啟動審計功能,并且把審計結(jié)果以XML格式存放在操作系統(tǒng)的審計信息中l(wèi)XML_EXTEN
21、DED:具有XML的功能,另外會記錄SQLBIND和SQLTEXT信息 l NONE/FALSE:關(guān)閉審計功能 2.設置AUDIT_TRAIL參數(shù):如果設置 AUDIT_TRAIL = OS, 還需要修改參數(shù)AUDIT_FILE_DEST。如果操作系統(tǒng)支持設置AUDIT_TRAIL=OS,文件會自動存放在AUDIT_FILE_DEST所指定的目錄下,并且文件名包含進程的PID。 3. 確認審計相關(guān)的表是否已經(jīng)安裝 SQLPLUS connect / AS SYSDBA SQLPLUS select * from sys.aud$; - 沒有記錄返回 SQLPLUS select * from
22、dba_audit_trail; - 沒有記錄返回 如果做上述查詢的時候發(fā)現(xiàn)表不存在,說明審計相關(guān)的表還沒有安裝,需要安裝。 SQLPLUS connect / as sysdba SQLPLUS $ORACLE_HOME/rdbms/admin/cataudit.sql 審計表安裝在SYSTEM表空間。所以要確保SYSTEM表空間又足夠的空間存放審計信息。4. 關(guān)閉并重啟數(shù)據(jù)庫 5. 設置所需要的審計信息 下面是一個例子 SQL connect system/manager SQL grant audit system to scott; SQL connect scott/tiger SQ
23、L audit session; 停止審計: SQL noaudit session; 通常設置了標準審計后都是通過Audit語句開啟審計,使用noaudit語句收回審計。如下所示:對修改SC表結(jié)構(gòu)或數(shù)據(jù)的操作進行審計可使用如下語句:AUDIE ALTER,UPDATE ON SC;取消對SC表的一切審計可使用如下語句:NOAUDIT ALL ON SC;2.8設置審計的實例(對試圖嘗試口令的訪問的審計):以下是一個審計的實例,用于記錄嘗試通過野蠻嘗試法破譯ORACLE帳號口令的例子:1. 修改審計相關(guān)參數(shù)(參照上面介紹的方法) 2. 重啟數(shù)據(jù)庫 3. 設置審計信息 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的含義為錯誤的用戶名口令。通過查看AUD$表可以清楚地看到WPRATA-BR嘗試
25、破譯SCOTT的口令??梢酝ㄟ^下面一個存儲過程來分析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 過程已成功完成。2.9將審計相關(guān)的表移動到其他表空間:由于AUD$表等審計相關(guān)
29、的表存放在SYSTEM表空間,因此為了不影響系統(tǒng)的性能,保護SYSTEM表空間,最好把AUD$移動到其他的表空間上??梢允褂孟旅娴恼Z句來進行移動: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審計語句樣例多層環(huán)境下的審計:appserve-應用服務器,jackson-clientAUDIT SELECT TABLE BY appserve ON BEHALF OF jackson;審計連接或斷開連接:AUDIT SESSION;AUDIT SESSION BY jeff, lori; - 指定用戶審計權(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;對象審計:AUDIT DELETE ON jeff.emp;AUDIT SELECT, INSERT, DELETE ON jward.dept BY ACCESS WHENEVER SUCCESSFUL;取消審計: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審計NOAUDIT ALL PRIVILEGES; - 取消所有權(quán)限審計NOAUDIT ALL ON DEFAULT; - 取消所有對象審計2.11清除審計信息DELETE FROM SYS.AUD$;TRUNCATE TABLE SYS.AUD$;DELETE FROM SYS.AUD$ WHERE obj$name=EMP;三、 細粒度審計: 細粒度審計 (FGA)
33、(通過 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
34、支持在一個策略中使用“選擇”、“插入”、“更新”和“刪除”語句的任意組合。事實上,綁定到表的 FGA 政策簡化了審計政策的管理,因為這將只需在數(shù)據(jù)庫中對其更改一次,不用在每個應用程序中一次次進行。此外。無論用戶通過何種方式連接至數(shù)據(jù)庫(通過應用程序、Web 接口或通過 SQL*Plus),其操作都會記錄下來。細粒度審計的程序包DBMS_FGA具有4個過程:ADD_POLICY -添加使用謂詞和審計列的審計策略DROP_POLICY -刪除審計策略DISABLE_POLICY -禁用審計策略,但保留與表或視圖關(guān)聯(lián)的策略ENABLE_POLICY -啟用策略3.1 使用細粒度審計: 1、創(chuàng)建測試表
35、: create table ACCOUNT(AACT_NO number not null, CUST_ID number not null, BALANCE number(15,2); 2、添加審計策略: begin DBMS_FGA.ADD_POLICY(object_schema = TEST, object_name = ACCOUNT, policy_name = ACCOUNT_ACCESS);end;這段代碼必須由具有執(zhí)行程序包 dbms_fga 權(quán)限的用戶來執(zhí)行。建議應該建立一個專門的用戶來專門負責添加審計策略。該過程有許多參數(shù),具體含義如下:OBJECT_SCHEMA對其定
36、義了 FGA 策略的表或視圖的所有者OBJECT_NAME表或視圖的名稱POLICY_NAME策略的名稱,由用戶自定義 例如,ACCOUNTS_ACCESSPOLICY_TEXT在添加策略時指定的審計條件 例如,BALANCE = 11000POLICY_COLUMN審計列 例如,BALANCEENABLED如果啟用則為 YES,否則為 NO PF_SCHEMA擁有策略處理器模塊的模式(如果存在)PF_PACKAGE處理器模塊的程序包名稱(如果存在)PF_FUNCTION處理器模塊的過程名稱(如果存在)3、在定義了策略以后,當用戶以通常的方式對表進行查詢時,如下所示: select * fro
37、m bank.accounts; 審計線索記錄此操作??梢允褂靡韵抡Z句查看線索: 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 的新視圖,它記錄細粒度的訪問信息。其中顯示了審
38、計事件的時間標記、查詢者的數(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,polic
39、y_name=ACCOUNT_ACCESS,audit_column = BALANCE,audit_condition = BALANCE = 11000 );end;該策略將在訪問BALANCE列并且只有訪問列值大于等于11000時才發(fā)起審計。因此根據(jù)該條件戶有如下不同審計狀態(tài):SQL 語句審計狀態(tài)select balance from account;進行審計。用戶選擇了在添加策略時所指定的審計列 BALANCE。select * from account;進行審計。即使用戶沒有明確指定列 BALANCE,* 也隱含地選擇了它。select cust_id from account wh
40、ere balance 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 設置為
41、 TRUE。3.5 FGA 數(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 的調(diào)用所設置)EXT_NAME外部認證的客戶名稱,如 LDAP 用戶OBJECT_SCHEMA對該表的訪問觸發(fā)了審計的表所有者OBJ
42、ECT_NAME對該表的 SELECT 操作觸發(fā)了審計的表名稱POLICY_NAME觸發(fā)審計的策略名稱(如果對表定義了多個策略,則每個策略將插入一條記錄。在此情況下,該列顯示哪些行是由哪個策略插入的。)SCN記錄了審計的 Oracle 系統(tǒng)更改號SQL_TEXT由用戶提交的 SQL 語句 SQL_BIND由 SQL 語句使用的綁定變量(如果存在)3.6視圖和 FGA:假定在 ACCOUNTS 表上定義視圖 VW_ACCOUNT 如下: create view vw_account as select * from account;現(xiàn)在,如果用戶從視圖中而不是從表中進行選擇: select *
43、from vw_account;您將看到以下審計線索: select object_name, sql_text from dba_fga_audit_trail;OBJECT_NAME SQL_TEXT- -ACCOUNT select * from vw_account注意,是基表名稱而不是視圖名稱出現(xiàn)在 OBJECT_NAME 列中,因為視圖中的選擇是從基表中進行選擇。但是,SQL_TEXT 列記錄了用戶提交的實際語句。如果只希望審計對視圖的查詢而不是對表的查詢,可以對視圖本身建立策略。通過將視圖名稱而不是表的名稱傳遞給打包的過程 dbms_fga.add_policy 中的參數(shù) obj
44、ect_name,可以完成這項工作。隨后 DBA_FGA_AUDIT_TRAIL 中的 OBJECT_NAME 列將顯示視圖的名稱,并且不會出現(xiàn)有關(guān)表訪問的附加記錄。3.7 其它用途: 除了記錄對表的選擇訪問,F(xiàn)GA 還可用于某些其它情況: 可以對數(shù)據(jù)倉庫使用 FGA,以捕獲特定的表、視圖或物化視圖上發(fā)生的所有語句,這有助于計劃索引。不需要到 V$SQL 視圖去獲取這些信息。即使 SQL 語句已經(jīng)超出了 V$SQL 的期限,在 FGA 審計線索中將會始終提供它。 由于 FGA 捕獲綁定變量,它可以幫助了解綁定變量值的模式,這有助于設計直方圖集合等。 可以向?qū)徲嬚呋?DBA 發(fā)送警告,這有助于跟
45、蹤惡意應用程序。 由于 FGA 可以作為 SELECT 語句的觸發(fā)器,可以在需要這種功能的任何時候使用它。3.8 FGA在10G中的增強:3.8.1 對所有DML的審計: 在9i中FGA只能對Select語句進行審計,而不能對其他DML語句(Update、Delete、Insert)進行審計,如果想對其他DML語句進行審計那么只能采取數(shù)據(jù)庫處發(fā)起的形式來實現(xiàn)。在10G中實現(xiàn)了對所有DML語句的審計,如下所示: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;通過statement_types = INSERT, UPDATE, DELETE, SELECT參數(shù)制定了新的策略,該策略可以對Select之外的所有DML操作進行審計。因此根據(jù)新的審計條件和審計策略會有如下不同情況:第 1 種情況 之前:BALANCE = 1000 用戶發(fā)出: update account set balance = 1200 w
47、here ACCOUNT_NO = .舊的和新的 balance 都小于 3,000,審計條件不滿足;因此這條語句將不會被審計。第 2 種情況 之前:BALANCE = 1000 用戶發(fā)出: update account set balance = 3200 where ACCOUNT_NO = .新的 balance 大于 3,000,審計條件滿足;因此這條語句將 會被審計。 第 3 種情況 之前:BALANCE = 3200 用戶發(fā)出: update account set balance = 1200 where ACCOUNT_NO = .新的 balance 小于 3,000,但舊的
48、 balance 大于 3,000。因此審計條件滿足,這條語句將被審計。 第 4 種情況 用戶插入一行,其中有 BALANCE = 3000 結(jié)果為 FALSE),這條語句不會被審計。重要注意事項:假設該列有一個大于 3,000 的默認值時,這條語句仍然不會被審計,即使插入行的 balance 列值大于 3000。 注意對于DML語句的審計是由一個自動事務插入的;即使回滾 DML語句的操作,審計記錄也將存在不會跟著回滾。3.8.2制定相關(guān)的列策略:在表 ACCOUNT 上定義的一個策略,如下: begin dbms_fga.add_policy ( object_schema = TEST, object_name = ACCOUNT, policy_name = ACCOUNT_SEL, audit_column = ACCOUNT_NO, BALANC
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度牛乳加工企業(yè)原奶供應合同
- 2025年度環(huán)保管家環(huán)境損害賠償調(diào)解服務合同
- 2025年度戶外拓展賽事安全保障合同
- 二零二五年度廠房租賃合同補充協(xié)議(含租賃期延長條款)3篇
- 2025年度國際知識產(chǎn)權(quán)授權(quán)許可合同范本
- 2025年黃沙水泥綠色建筑材料購銷合同
- 二零二四年停薪留職合同范本:企業(yè)重組與員工安置3篇
- 2025年度河砂開采權(quán)轉(zhuǎn)讓及開采合同
- 2025年度新型節(jié)能環(huán)保設備采購及安裝服務合同范本
- 2025年度科技產(chǎn)品廣告設計服務合同
- 2025年山西國際能源集團限公司所屬企業(yè)招聘43人高頻重點提升(共500題)附帶答案詳解
- 青海省海北藏族自治州(2024年-2025年小學六年級語文)統(tǒng)編版隨堂測試(上學期)試卷及答案
- 江蘇省無錫市2023-2024學年高三上學期期終教學質(zhì)量調(diào)研測試語文試題(解析版)
- 《民航安全檢查(安檢技能實操)》課件-第一章 民航安全檢查員職業(yè)道德
- DB34T4826-2024畜禽養(yǎng)殖業(yè)污染防治技術(shù)規(guī)范
- 腰麻課件教學課件
- 石油化工企業(yè)環(huán)境保護管理制度預案
- 2024年甘肅省高考歷史試卷(含答案解析)
- 2024年山東省煙臺市初中學業(yè)水平考試地理試卷含答案
- 《小英雄雨來》讀書分享會
- 中央導管相關(guān)血流感染防控
評論
0/150
提交評論