Oracle OCP(52):細粒度審計
細粒度審計 (FGA)(通過 Oracle9i 引入)可以理解為“基於策略的審計”。與標準的審計功能相反,FGA 可用於指定生成審計記錄必需的條件:
FGA 策略通過使用“dbms_fga”程式包以程式設計方式繫結到物件(表、檢視)。類似於用於通過 VPD ("dbms_rls") 進行訪問控制的程式包,它允許您建立任何需要的條件
一、建立策略
語法:
DBMS_FGA.ADD_POLICY( object_schema VARCHAR2, --要審計物件所在使用者的名稱,如果是空,就預設是當前使用者 object_name VARCHAR2, --要審計的物件 policy_name VARCHAR2, --審計策略的名稱 audit_condition VARCHAR2, --制定一個布林條件,若為空,就表示true,即對所有行為 audit_column VARCHAR2, --執行一列或多列,包括隱藏列。未指定表示所有列 handler_schema VARCHAR2, --如果違反策略時要向其他使用者傳送告警,執行此使用者名稱 handler_module VARCHAR2, --指定處理措施的名稱。包含處理措施所在的包。 --不能造成某個動作死迴圈或者啟用、禁用細粒度審計策略,否則報錯ora1000、36、28144 enable BOOLEAN, --啟用或禁用策略,預設為ture,即啟用 statement_types VARCHAR2,--指定要審計的動作,如insert、update、delete、select audit_trail BINARY_INTEGER IN DEFAULT,--指定審計記錄儲存位置以及是否統計fga_log$的lsqltext和lsqlbind列;如果指定audit_Trail為xml,會將xml檔案寫入到audit_File_Dest引數指定位置;對只讀資料庫,oracle將審計記錄寫入xml格式檔案,不管audit_trail如何設定 audit_column_opts BINARY_INTEGER IN DEFAULT);--如果制定了多行,該引數判斷是否審計所有或單獨的行(DBMS_FGA.ALL_COLUMNS和DBMS_FGA.ANY_COLUMNS兩個值)
例句:
BEGIN DBMS_FGA.ADD_POLICY( object_schema => 'HR', object_name => 'EMPLOYEES', policy_name => 'chk_hr_employees', enable => TRUE, statement_types => 'INSERT, UPDATE, SELECT, DELETE', audit_trail => DBMS_FGA.DB); END; /
二、刪除策略
DBMS_FGA.DROP_POLICY( object_schema VARCHAR2, --要審計物件所在使用者的名稱,如果是空,就預設是當前使用者 object_name VARCHAR2, --要審計的物件 policy_name VARCHAR2 ); --審計策略的名稱
三、禁用策略
DBMS_FGA.DISABLE_POLICY( object_schema VARCHAR2, --要審計物件所在使用者的名稱,如果是空,就預設是當前使用者 object_name VARCHAR2, --要審計的物件 policy_name VARCHAR2 ); --審計策略的名稱
四、啟用策略
DBMS_FGA.ENABLE_POLICY( object_schema VARCHAR2, --要審計物件所在使用者的名稱,如果是空,就預設是當前使用者 object_name VARCHAR2, --要審計的物件 policy_name VARCHAR2, --審計策略的名稱 enable BOOLEAN); --啟用
五、查詢策略
SELECT OBJECT_SCHEMA, --要審計物件所在使用者的名稱 OBJECT_NAME, --要審計的物件 POLICY_OWNER, --審計策略的擁有者 POLICY_NAME, --審計策略的名稱 POLICY_TEXT, --審計內容 POLICY_COLUMN, --執行一列或多列,包括隱藏列。未指定表示所有列 PF_SCHEMA, -- PF_PACKAGE, PF_FUNCTION, ENABLED, SEL, INS, UPD, DEL, AUDIT_TRAIL, POLICY_COLUMN_OPTIONS FROM DBA_AUDIT_POLICIES;
六、例句
-
建立使用者賬戶,確認狀態
sysdba使用者登入,建立sysadmin_fga賬號,授權:
GRANT CREATE SESSION, DBA TO sysadmin_fga IDENTIFIED BY password; GRANT SELECT ON OE.ORDERS TO sysadmin_fga; GRANT EXECUTE ON DBMS_FGA TO sysadmin_fga; GRANT SELECT ON SYS.FGA_LOG$ TO sysadmin_fga;
確保實驗所需的OE使用者可登陸
-
建立細粒度審計策略
sysadmin_fga使用者登入,執行:
表示對非資料庫的使用者Robert的增刪改查操作進行審計。
BEGIN DBMS_FGA.ADD_POLICY(OBJECT_SCHEMA => 'OE', OBJECT_NAME => 'ORDERS', POLICY_NAME => 'ORDERS_FGA_POL', AUDIT_CONDITION => 'SYS_CONTEXT(''USERENV'', ''CLIENT_IDENTIFIER'') = ''Robert''', HANDLER_SCHEMA => NULL, HANDLER_MODULE => NULL, ENABLE => True, STATEMENT_TYPES => 'INSERT,UPDATE,DELETE,SELECT', AUDIT_TRAIL => DBMS_FGA.DB + DBMS_FGA.EXTENDED, AUDIT_COLUMN_OPTS => DBMS_FGA.ANY_COLUMNS); END; /
-
測試策略
-
sysadmin_fga登入並查詢:
SELECT DBUID, LSQLTEXT FROM SYS.FGA_LOG$ WHERE POLICYNAME='ORDERS_FGA_POL';
-
然後用OE使用者登入,並執行:
EXEC DBMS_SESSION.SET_IDENTIFIER('Robert');
-
表示身份模擬為Robert。
對開啟審計的ORDERS表進行查詢:
SELECT COUNT(*) FROM ORDERS;
-
sysadmin_fga再次檢視:
發現多了一條記錄
SELECT DBUID, LSQLTEXT FROM SYS.FGA_LOG$ WHERE POLICYNAME='ORDERS_FGA_POL';
刪除內容
DROP USER sysadmin_fga CASCADE;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31490526/viewspace-2644965/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle審計-細粒度(轉)Oracle
- oracle 細粒度審計(fga)Oracle
- Oracle OCP(51):簡單審計Oracle
- Oracle OCP(50):審計簡介Oracle
- Oracle審計(轉)Oracle
- Oracle:審計清理Oracle
- ORACLE AUDIT審計(1)Oracle
- 細粒度影象分類
- Oracle OCP(56)Oracle
- Java 細粒度鎖續篇Java
- Oracle OCP(23):序列Oracle
- Oracle OCP(29):PROFILEOracle
- Oracle OCP(54):EXPOracle
- Oracle OCP(54):IMPOracle
- Oracle OCP(57):IMPDPOracle
- Oracle OCP(44):LSNRCTLOracle
- Oracle OCP(28):USEROracle
- Oracle OCP(25):索引Oracle索引
- Oracle OCP(30):ROLEOracle
- oracle fga審計(欄位級)Oracle
- oracle10g審計(轉)Oracle
- Golang 自制簡易細粒度鎖Golang
- Oracle OCP(33):官方文件Oracle
- Oracle OCP(20):建立表Oracle
- Oracle OCP(21):管理表Oracle
- Oracle OCP(12):ROLLUP & CUBEOracle
- Oracle OCP(48):UNDO TABLESPACEOracle
- Oracle OCP(58):ARCHIVELOG 管理OracleHive
- Oracle OCP(24):檢視Oracle
- Oracle OCP(26):其它ObjectOracleObject
- Oracle OCP(32):SUPPORT:MOSOracle
- 【AUDIT]Oracle審計配置及常用sqlOracleSQL
- 深入解析 Flink 細粒度資源管理
- Oracle OCP(35):Database 安裝OracleDatabase
- Oracle OCP(36):DBCA建庫Oracle
- Oracle OCP(04):聚合函式Oracle函式
- Oracle OCP(43):listener.oraOracle
- Oracle OCP(40):程式結構Oracle