Oracle審計(jì)功能介紹(共13頁(yè)).doc_第1頁(yè)
Oracle審計(jì)功能介紹(共13頁(yè)).doc_第2頁(yè)
Oracle審計(jì)功能介紹(共13頁(yè)).doc_第3頁(yè)
Oracle審計(jì)功能介紹(共13頁(yè)).doc_第4頁(yè)
Oracle審計(jì)功能介紹(共13頁(yè)).doc_第5頁(yè)
已閱讀5頁(yè),還剩8頁(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ì),對(duì)某

2、種類型的SQL語(yǔ)句審計(jì),不指定結(jié)構(gòu)或?qū)ο?。u特權(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ì)功能打開后,在語(yǔ)句執(zhí)行階段產(chǎn)生審計(jì)記錄。審計(jì)記錄包含有審計(jì)的操作、用戶執(zhí)行的操作、操作的日期和時(shí)間等信息。審計(jì)記錄可存在數(shù)據(jù)字典表(稱為審計(jì)記錄)或操作系統(tǒng)審計(jì)記錄中。數(shù)據(jù)庫(kù)審計(jì)記錄是在SYS模式的AUD$表中。2.2設(shè)置ORACLE標(biāo)準(zhǔn)審計(jì):下列步驟可以設(shè)置O

3、RACLE的標(biāo)準(zhǔn)審計(jì)功能: 1. 修改初始化參數(shù)文件(init<sid>.ora)如果使用服務(wù)器參數(shù)文件使用alter system set<parameter>=<value> scope=spfile|both,詳情參照1.1節(jié)中關(guān)于參數(shù)文件的介紹),設(shè)置 AUDIT_TRAIL參數(shù),并且重啟數(shù)據(jù)庫(kù)。AUDIT_TRAIL的取值如下:lDB/TRUE:?jiǎn)?dòng)審計(jì)功能,并且把審計(jì)結(jié)果存放在數(shù)據(jù)庫(kù)的 SYS.AUD$ 表中l(wèi)OS:?jiǎn)?dòng)審計(jì)功能,并把審計(jì)結(jié)果存放在操作系統(tǒng)的審計(jì)信息中l(wèi)DB_EXTENDED:具有DB/TRUE的功能,另外填寫AUD$的SQLBI

4、ND和SQLTEXT字段lNONE/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。 比如: AUDIT_FILE_DEST = $ORACLE_HOME/rdbms/audit $ ls -l $ORACLE_HOME/rdbms/audit -rw-rw- 1 ora92 dba 881 Mar 17 09:57 ora_13264.aud $ ps

5、-ef|grep 13264 ora92 13264 13235 0 09:56:43 ? 0:00 oracleV92 (DESCRIPTION=(LOCAL=Y) SQL> select spid, program, username from v$process; SPID PROGRAM USERNAME - - - . 13264 oraclefrhp11 (TNS V1-V3) ora92 3. 確認(rèn)審計(jì)相關(guān)的表是否已經(jīng)安裝 SQLPLUS> connect / AS SYSDBA SQLPLUS> select * from sys.aud$; - 沒有記錄返回

6、 SQLPLUS> select * from dba_audit_trail; - 沒有記錄返回如果做上述查詢的時(shí)候發(fā)現(xiàn)表不存在,說(shuō)明審計(jì)相關(guān)的表還沒有安裝,需要安裝。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 syste

7、m to scott; SQL> connect scott/tiger SQL> audit session; 停止審計(jì):SQL> noaudit session; 通常設(shè)置了標(biāo)準(zhǔn)審計(jì)后都是通過(guò)Audit語(yǔ)句開啟審計(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.3設(shè)置審計(jì)的實(shí)例(對(duì)試圖嘗試口令的訪問(wèn)的審計(jì)):以下是一個(gè)審計(jì)的實(shí)例,用于記錄嘗試通過(guò)野蠻嘗試法破譯ORACLE帳號(hào)口令的例子:1. 修改審

8、計(jì)相關(guān)參數(shù)(參照上面介紹的方法)2. 重啟數(shù)據(jù)庫(kù)3. 設(shè)置審計(jì)信息 SQL>AUDIT ALL 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 WPR

9、ATA-BR ORA-1017的含義為錯(cuò)誤的用戶名口令。通過(guò)查看AUD$表可以清楚地看到WPRATA-BR嘗試破譯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(S

10、ince,'yyyy-mm-dd') group by userid;cursor C2 IS Select userhost, terminal,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_TERMI

11、NAL VARCHAR(40);V_DATE VARCHAR2(40);BEGIN OPEN C1; dbms_output.enable(1024000); LOOP FETCH C1 INTO USER_ID,CT; EXIT 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)

12、|'HOST:'|V_USERHOST|',TERM:'|V_TERMINAL|',TIME:'|V_DATE); EXIT WHEN C2%NOTFOUND; END LOOP; close c2; END IF; END LOOP; close c1;END;/一下是執(zhí)行結(jié)果:SQL>set serveroutput on;SQL> execute auditlogin('2004-01-01',2);USER BROKEN ALARM:SYS HOST:,TERM:XUJI,TIME:2004-09-22:11:

13、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.4將審計(jì)相關(guān)的表移動(dòng)到其他表空間:由于AUD$表等審計(jì)相關(guān)的表存放在SYSTEM表空間,因此為了不影響系統(tǒng)的性能,保護(hù)SYSTEM表空間,最好把AUD$移動(dòng)到其他的表空間上??梢允褂孟旅娴恼Z(yǔ)句來(lái)進(jìn)行移動(dòng):sql>connect / as sysdba;sql>alter table aud$ mov

14、e tablespace <new tablespace>sql>alter index I_aud1 rebuild online tablespace <new tablespace>SQL> alter table audit$ move tablespace <new tablespace>SQL> alter index i_audit rebuild online tablespace <new tablespace>SQL> alter table audit_actions move tablespace

15、<new tablespace>SQL> alter index i_audit_actions rebuild online tablespace <new tablespace>三、 細(xì)粒度審計(jì):細(xì)粒度審計(jì) (FGA)(通過(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)以下條件為真

16、時(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 開始,F(xiàn)GA 支持在一個(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ò)

17、 SQL*Plus),其操作都會(huì)記錄下來(lái)。3.1 使用細(xì)粒度審計(jì): 1、創(chuàng)建測(cè)試表:createtableACCOUNT(AACT_NO numbernotnull,CUST_ID numbernotnull,BALANCE number(15,2);2、添加審計(jì)策略:beginDBMS_FGA.DROP_POLICY(object_schema => 'TEST', object_name => 'ACCOUNT', policy_name => 'ACCOUNT_ACCESS');end;這段代碼必須由具有執(zhí)行程序包 dbm

18、s_fga 權(quán)限的用戶來(lái)執(zhí)行。建議應(yīng)該建立一個(gè)專門的用戶來(lái)專門負(fù)責(zé)添加審計(jì)策略。該過(guò)程有許多參數(shù),具體含義如下:OBJECT_SCHEMA對(duì)其定義了 FGA 策略的表或視圖的所有者OBJECT_NAME表或視圖的名稱POLICY_NAME策略的名稱,由用戶自定義 例如,ACCOUNTS_ACCESSPOLICY_TEXT在添加策略時(shí)指定的審計(jì)條件 例如,BALANCE >= 11000POLICY_COLUMN審計(jì)列 例如,BALANCEENABLED如果啟用則為 YES,否則為 NO PF_SCHEMA擁有策略處理器模塊的模式(如果存在)PF_PACKAGE處理器模塊的程序包名稱(如果

19、存在)PF_FUNCTION處理器模塊的過(guò)程名稱(如果存在)3、在定義了策略以后,當(dāng)用戶以通常的方式對(duì)表進(jìn)行查詢時(shí),如下所示: select * from 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-10TEST ananda TEST AC

20、COUNT select * from account注意名為 DBA_FGA_AUDIT_TRAIL 的新視圖,它記錄細(xì)粒度的訪問(wèn)信息。其中顯示了審計(jì)事件的時(shí)間標(biāo)記、查詢者的數(shù)據(jù)庫(kù)用戶 ID、操作系統(tǒng)用戶 ID、查詢中所使用表的名稱和所有者,最后還有確切的查詢語(yǔ)句。3.2審計(jì)列和審計(jì)條件:默認(rèn)情況下會(huì)對(duì)被審計(jì)對(duì)象的所有列開啟審計(jì),當(dāng)任何一列被訪問(wèn)時(shí)都會(huì)紀(jì)錄一條審計(jì)信息,這在現(xiàn)實(shí)情況下不太常見,因?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ì)。如

21、下所示:begindbms_fga.add_policy (object_schema=>'TEST',object_name=>'ACCOUNT',policy_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)

22、select balance from account;進(jìn)行審計(jì)。用戶選擇了在添加策略時(shí)所指定的審計(jì)列 BALANCE。select * from account;進(jìn)行審計(jì)。即使用戶沒有明確指定列 BALANCE,* 也隱含地選擇了它。select cust_id from account where balance < 10000;進(jìn)行審計(jì)。即使用戶沒有明確指定列 BALANCE,where 子句也隱含地選擇了它。select cust_id from account;不進(jìn)行審計(jì)。用戶沒有選擇列 BALANCE。select count(*) from account;不進(jìn)行審計(jì)。用戶

23、沒有明確或隱含地選擇列 BALANCE。3.3優(yōu)化器模式:FGA 需要基于成本的優(yōu)化 (CBO),以便正確地工作。在基于規(guī)則的優(yōu)化時(shí),只要用戶從表中進(jìn)行選擇,無(wú)論是否選擇了相關(guān)的列,都始終生成審計(jì)線索,增加了誤導(dǎo)項(xiàng)目出現(xiàn)的可能性。為使 FGA 正確地工作,除了在實(shí)例級(jí)啟用 CBO 之外,在 SQL 語(yǔ)句中應(yīng)該沒有規(guī)則暗示(hint),并且必須至少使用評(píng)估選項(xiàng)對(duì)查詢中的所有表進(jìn)行分析。3.4管理 FGA 策略:要?jiǎng)h除策略,您可以使用以下語(yǔ)句: begindbms_fga.drop_policy (object_schema => 'TEST',object_name =&g

24、t; 'ACCOUNT',policy_name => 'ACCOUNT_ACCESS' );end;對(duì)于更改策略而言,沒有隨取隨用的解決方案。要更改策略中的任何參數(shù),必須刪除策略,再使用更改后的參數(shù)添加策略。但是可以暫時(shí)禁用已有策略,如下所示:begindbms_fga.enable_policy (object_schema => 'TEST',object_name => 'ACCOUNT',policy_name => 'ACCOUNT_ACCESS',enable => FA

25、LSE );end;若要重新啟用它,可使用同一函數(shù),只需將參數(shù) enable 設(shè)置為 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)證的客戶名稱

26、,如 LDAP 用戶OBJECT_SCHEMA對(duì)該表的訪問(wèn)觸發(fā)了審計(jì)的表所有者OBJECT_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 * fro

27、m account;現(xiàn)在,如果用戶從視圖中而不是從表中進(jìn)行選擇: select * 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ò)將視圖名稱而不

28、是表的名稱傳遞給打包的過(guò)程 dbms_fga.add_policy 中的參數(shù) object_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 捕獲綁定變

29、量,它可以幫助了解綁定變量值的模式,這有助于設(shè)計(jì)直方圖集合等。 · 可以向?qū)徲?jì)者或 DBA 發(fā)送警告,這有助于跟蹤惡意應(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 ( objec

30、t_schema => 'TEST', object_name => 'ACCOUNT', policy_name => 'ACCOUNT_ACCESS', audit_column => 'BALANCE', audit_condition => 'BALANCE >= 3000',statement_types => 'INSERT, UPDATE, DELETE, SELECT' );end;通過(guò)statement_types => 'I

31、NSERT, UPDATE, DELETE, SELECT'參數(shù)制定了新的策略,該策略可以對(duì)Select之外的所有DML操作進(jìn)行審計(jì)。因此根據(jù)新的審計(jì)條件和審計(jì)策略會(huì)有如下不同情況:第 1 種情況 之前:BALANCE = 1000 用戶發(fā)出: update account set balance = 1200 where ACCOUNT_NO = .舊的和新的 balance 都小于 3,000,審計(jì)條件不滿足;因此這條語(yǔ)句將不會(huì)被審計(jì)。第 2 種情況 之前:BALANCE = 1000 用戶發(fā)出: update account set balance = 3200 where AC

32、COUNT_NO = .新的 balance 大于 3,000,審計(jì)條件滿足;因此這條語(yǔ)句將 會(huì)被審計(jì)。 第 3 種情況 之前:BALANCE = 3200 用戶發(fā)出: update account set balance = 1200 where ACCOUNT_NO = .新的 balance 小于 3,000,但舊的 balance 大于 3,000。因此審計(jì)條件滿足,這條語(yǔ)句將被審計(jì)。 第 4 種情況 用戶插入一行,其中有 BALANCE < 3000。 insert into account values (9999,1200,'X');因?yàn)?balance 1

33、,200 不滿足審計(jì)條件,所以這條語(yǔ)句不被審計(jì)。如果 balance 列大于或等于 3,000,它將被審計(jì)。 第 5 種情況 用戶插入一行,其中 balance 的值為空。 insert into account (account_no, status) values (9997, 'X');因?yàn)?balance 為空,該列沒有任何默認(rèn)值,所以審計(jì)條件不滿足(比較 NULL >= 3000 結(jié)果為 FALSE),這條語(yǔ)句不會(huì)被審計(jì)。重要注意事項(xiàng):假設(shè)該列有一個(gè)大于 3,000 的默認(rèn)值時(shí),這條語(yǔ)句仍然不會(huì)被審計(jì),即使插入行的 balance 列值大于 3000。 注意對(duì)于

34、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, BALANCE', audit_condition =>

35、'BALANCE >= 3000', statement_types => 'SELECT' );end;在某些情況下,列的組合可能很重要,而不是某個(gè)特定的列。以上策略是在 ACCOUNT_NO 和 BALANCE 上定義的。那么如果用戶發(fā)出以下語(yǔ)句: select balance from accounts where account_no = 9995;這條語(yǔ)句將被審計(jì),因?yàn)?balance 列被選中,且余額為 3,200,大于 3,000,滿足審計(jì)條件。如果一個(gè)用戶想查出在銀行的總余額,他發(fā)出: select sum(balance) from

36、 account;這條查詢幾乎沒什么害處;它不明確指出帳戶所有者和帳戶余額。因此安全策略可能不會(huì)要求審計(jì)這條查詢。不過(guò),這條查詢 select balance from account where account_no = 9995必須被審計(jì);因?yàn)樗鞔_地指定了一個(gè)帳戶。默認(rèn)地,所有語(yǔ)句都被審計(jì)(無(wú)論使用了什么樣的列組合)。這將創(chuàng)建大量不需要的審計(jì)線索項(xiàng)目,并可能帶來(lái)一些空間限制問(wèn)題。為了限制它們,您可以指定僅當(dāng)在查詢中使用了希望的列組合時(shí)才開始審計(jì)。當(dāng)定義策略時(shí),您可以使用一個(gè)新的參數(shù): audit_column_opts => DBMS_FGA.ALL_COLUMNS這個(gè)參數(shù)將使策略

37、僅當(dāng)列 ACCOUNT_NO 和 BALANCE 在查詢中都被訪問(wèn)時(shí)才創(chuàng)建審計(jì)線索項(xiàng)目。例如,以下查詢將產(chǎn)生一個(gè)審計(jì)線索項(xiàng)目。 select account_no, balance from account;但這條查詢不會(huì)產(chǎn)生審計(jì)線索項(xiàng)目。 select account_no from account;使用這個(gè)參數(shù)將把審計(jì)的數(shù)量限制在一個(gè)更易管理的大小。如果希望采用默認(rèn)的行為 即任意列被選中時(shí)都進(jìn)行審計(jì),那么您可以對(duì)同一參數(shù)的使用不同值。 audit_column_opts => DBMS_FGA.ANY_COLUMNS3.8.3 與標(biāo)準(zhǔn)審計(jì)的結(jié)合: 通過(guò)制定如下審計(jì)策略實(shí)現(xiàn)標(biāo)準(zhǔn)審計(jì)與細(xì)

38、粒度審計(jì)的結(jié)合begin dbms_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', audit_column_opts => DBMS_FGA.ALL_COLUMNS, audit_trail => DB );en

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論