Oracle FGA細粒度審計——基於內容的資料庫審計(二)
Oracle FGA細粒度審計特性是Oracle推出的基於內容靈活審計策略工具。藉助FGA,很多過去需要使用觸發器和應用程式碼的需求都可以方便的實現。
上篇(http://space.itpub.net/17203031/viewspace-700767)已經介紹FGA的原理和配置,本篇繼續檢視應用情況。
4、FGA審計實驗
下面我們分別對上面設定的FGA審計規則結果進行檢視。首先,我們介紹一下檢視FGA審計結果的方式。
FGA審計策略和審計結果分別要記錄在SYS使用者下的fga$和fga_log$資料表中。注意,這兩個物件是xx$資料表,屬於Oracle資料字典後設資料資訊層,是後設資料的底層內容。該型別資料表只屬於sys使用者,而且只能被sys使用者訪問到。通常,該型別資料表是不能透過許可權機制進行訪問許可權賦予的。
Xxx$資料表只有透過設定引數o7_DICTIONARY_ACCESSIBILITY開關設定才可能為非sys使用者訪問到。一般處於安全性考慮,我們也不進行這部分許可權的開放。
SQL> show parameter o7
NAME TYPE VALUE
------------------------------------ -----------------------------------------------
O7_DICTIONARY_ACCESSIBILITY boolean FALSE
兩個fga$和fga_log$資料表中,fga$記錄FGA審計策略資訊,而fga_log$記錄審計結果記錄。
SQL> select obj#, pname, ptxt from fga$;
OBJ# PNAME PTXT
---------- -------------------- --------------------------------------------------------------------------------
75156 POL_VID_LENGTH length(vid)>5
75156 POL_VID_MODIFY
75156 POL_DT_DEL trunc(dt)
75156 POL_VID_SELECT to_char(sysdate,'Day') in ('星期六','星期日')
和
SQL> desc fga_log$;
Name Type Nullable Default Comments
------------ -------------- -------- ------- --------
SESSIONID NUMBER
TIMESTAMP# DATE Y
DBUID VARCHAR2(30) Y
OSUID VARCHAR2(255) Y
OSHST VARCHAR2(128) Y
CLIENTID VARCHAR2(64) Y
EXTID VARCHAR2(4000) Y
OBJ$SCHEMA VARCHAR2(30) Y
OBJ$NAME VARCHAR2(128) Y
POLICYNAME VARCHAR2(30) Y
(篇幅原因,有省略……)
通常我們檢查FGA審計策略或者結果,都可以使用dba_audit_policies和dba_fga_audit_trail兩個檢視。這兩個檢視分別與fga$和fga_log$對應。如果非sys使用者進行FGA相關操作,擁有該兩個檢視的訪問許可權即可。
下面分別檢視上面設定四個fga policy的情況。
ü 對資料表T插入VID長度超過5的操作進行審計記錄;
對應審計策略:POL_VID_LENGTH
SQL> show user;
User is "scott"
SQL> insert into t values (4,'k45545', sysdate);
1 row inserted
SQL> commit;
Commit complete
--此時檢查dba_fga_audit_trail
SQL> select session_id, timestamp, db_user, os_user, userhost,POLICY_NAME, SCN, SQL_TEXT from dba_fga_audit_trail;
SESSION_ID TIMESTAMP DB_USER OS_USER USERHOST POLICY_NAME SCN SQL_TEXT
---------- ----------- ---------- --------------- -------------------- -------------------- ---------- --------------------------------------------------------------------------------
1630861 2011-6-24 2 SCOTT Administrator WORKGROUP\WWW-0E6111 DFF74 POL_VID_LENGTH 3861334 insert into t values (4,'k45545', sysdate)
審計記錄成功,當我們插入一條vid長度超過5的記錄時,FGA記錄下了審計資訊。當我們插入非vid大於5的記錄時,FGA是否記錄呢?
SQL> insert into t values (5,'k', sysdate);
1 row inserted
SQL> commit;
Commit complete
SQL> select session_id, SCN, SQL_TEXT from dba_fga_audit_trail;
SESSION_ID SCN SQL_TEXT
---------- ---------- --------------------------------------------------------------------------------
1630861 3861334 insert into t values (4,'k45545', sysdate)
當不滿足審計條件的時候,Oracle不會計入FGA審計記錄。
ü 修改資料表VID的所有操作;
對應審計策略:POL_VID_MODIFY
SQL> update t set id=6 where id=5;
1 row updated
SQL> update t set vid='kkl' where id=1;
1 row updated
SQL> commit;
Commit complete
兩條update語句,檢查審計記錄。
SQL> select session_id, SCN, SQL_TEXT from dba_fga_audit_trail;
SESSION_ID SCN SQL_TEXT
---------- ---------- --------------------------------------------------------------------------------
1630861 3861334 insert into t values (4,'k45545', sysdate)
1630861 3862855 update t set vid='kkl' where id=1
對兩條Update語句,只有針對vid有修改的那句SQL被審計資訊記錄下來。這點現象同FGA審計策略的要求相同。
ü 刪除資料表T中DT列為當前天之前日期記錄的操作;
對應審計策略:POL_DT_DEL
SQL> select sysdate from dual;
SYSDATE
-----------
2011-6-24 2
SQL> select * from t;
ID VID DT
---------- ---------- -----------
1 kkl 2011-6-23 1
2 dfse 2011-6-22 1
3 ffdfse 2011-6-24 1
4 k45545 2011-6-24 2
6 k 2011-6-24 2
進行刪除實驗。
SQL> delete t where id=2; //dt=2011-6-22
1 row deleted
SQL> delete t where id=6; //dt=2011-6-27
1 row deleted
SQL> commit;
Commit complete
SQL> select session_id, SCN, SQL_TEXT from dba_fga_audit_trail;
SESSION_ID SCN SQL_TEXT
---------- ---------- --------------------------------------------------------------------------------
1630861 3861334 insert into t values (4,'k45545', sysdate)
1630861 3862855 update t set vid='kkl' where id=1
1630861 3863122 delete t where id=2
對dt在當前日期之前記錄進行刪除delete的操作,會被審計策略記錄下來。
ü 在週末(週日、週六),檢索VID資料的操作;
對應FGA審計策略POL_VID_SELECT
//當天是週五的情況下
SQL> select to_char(sysdate,'Day') from dual;
TO_CHAR(SYSDATE,'DAY')
----------------------
星期五
我們進行兩次檢索實驗。
//檢索操作涉及到vid欄位;
SQL> select * from t;
ID VID DT
---------- ---------- -----------
1 kkl 2011-6-23 1
3 ffdfse 2011-6-24 1
4 k45545 2011-6-24 2
//檢索操作為涉及到vid欄位;
SQL> select id from t;
ID
----------
1
3
4
此時,檢索結果。
SQL> select session_id, SCN, SQL_TEXT from dba_fga_audit_trail;
SESSION_ID SCN SQL_TEXT
---------- ---------- --------------------------------------------------------------------------------
1630861 3861334 insert into t values (4,'k45545', sysdate)
1630861 3862855 update t set vid='kkl' where id=1
1630861 3863122 delete t where id=2
沒有新的審計結果出現。
在Linux下修改系統時間資訊。
//當前系統時間
[root@oracle11g ~]# date
Fri Jun 24 22:42:06 CST 2011
//系統時間設定
[root@oracle11g ~]# date 062522452011.30
Sat Jun 25 22:45:30 CST 2011
此時,Oracle資料庫立即反應出變化。
SQL> select sysdate from dual;
SYSDATE
-----------
2011-6-25 2
SQL> select to_char(sysdate,'Day') from dual;
TO_CHAR(SYSDATE,'DAY')
----------------------
星期六
此時,我們進行相同的操作,就可以發現策略應用。
SQL> select * from t;
ID VID DT
---------- ---------- -----------
1 kkl 2011-6-23 1
3 ffdfse 2011-6-24 1
4 k45545 2011-6-24 2
SQL> select id from t;
ID
----------
1
3
4
SQL> select session_id, SCN, SQL_TEXT from dba_fga_audit_trail;
SESSION_ID SCN SQL_TEXT
---------- ---------- --------------------------------------------------------------------------------
1630861 3861334 insert into t values (4,'k45545', sysdate)
1630861 3862855 update t set vid='kkl' where id=1
1630861 3863122 delete t where id=2
1630861 3868781 select * from t
4 rows selected
FGA策略pol_vid_select的應用成功。只有在週末的時候,對vid欄位的select操作進行操作才會被審計記錄。
本篇中我們觀察了設定的四個policies的審計實現。下面我們來觀察一下dbms_fga的其他方法和審計記錄purge的方式。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/17203031/viewspace-700837/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle FGA細粒度審計——基於內容的資料庫審計(一)Oracle資料庫
- Oracle FGA細粒度審計——基於內容的資料庫審計(三)Oracle資料庫
- oracle 細粒度審計(fga)Oracle
- 【FGA】將FGA細粒度審計功能的審計結果記錄在資料庫中資料庫
- oracle細粒度審計Oracle
- Fine-grainedauditing(FGA) 細粒度審計AI
- 【FGA】將FGA細粒度審計功能的審計結果記錄在XML檔案中XML
- oracle審計-細粒度(轉)Oracle
- 細粒度審計FGA儲存過程含義儲存過程
- oracle 10g 增強審計(二)----細粒度訪問審計Oracle 10g
- Oracle OCP(52):細粒度審計Oracle
- Oracle Database標準審計和細粒度審計功能OracleDatabase
- Oracle FGA審計功能Oracle
- 【實驗】【審計】【FGA】使用Oracle的審計功能監控資料庫中的可疑操作Oracle資料庫
- 【FGA】擴充套件Oracle細粒度審計功能——呼叫定製的儲存過程套件Oracle儲存過程
- oracle fga審計(欄位級)Oracle
- 利用Oracle FGA實現審計Oracle
- 【審計】標準資料庫審計資料庫
- 審計Oracle資料庫的使用Oracle資料庫
- ORACLE 資料庫審計詳解Oracle資料庫
- ORACLE資料庫標準審計Oracle資料庫
- Oracle資料庫審計功能介紹Oracle資料庫
- 資料庫審計-hexorbase資料庫HexoORB
- 拍拍貸資料庫審計資料庫
- 資料庫DDL操作審計資料庫
- FGA審計及audit_trail引數AI
- 舉例說明Oracle資料庫審計的用法Oracle資料庫
- Fine-Grained Auditing test (精細審計:FGA測試)AI
- 關於oracle審計功能Oracle
- MySQL資料庫審計系統MySql資料庫
- Access資料庫審計工具mdbtools資料庫
- Oracle審計Oracle
- oracle 審計Oracle
- Oracle資料庫內部安全威脅:審計特權使用者Oracle資料庫
- 網路安全審計主要包括哪些內容?
- RHEL審計內容/etc/audit/audit.rules
- 資料庫審計技術進化資料庫
- 開啟mysql 資料庫審計功能。MySql資料庫