首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle 審計功能完整指南:標準審計與細粒度審計(FGA)配置、查詢與管理

     編輯:Oracle 資料庫基礎

Oracle 審計分標準審計(Statement/Privilege/Object)與細粒度審計 FGA(Policy-based,9i+ 引入,10g 大幅增強)。本文涵蓋啟用、配置、查詢、管理全流程。

一、標準審計

啟用步驟

  1. 修改參數:ALTER SYSTEM SET audit_trail = DB_EXTENDED SCOPE=SPFILE;(值:NONE/DB/DB_EXTENDED/OS)。
  2. 重啟資料庫。
  3. 執行 @$ORACLE_HOME/rdbms/admin/cataudit.sql 建立審計表(SYS.AUD$)。
  4. 授權:GRANT AUDIT SYSTEM TO user;
  5. 開啟審計:AUDIT SESSION; AUDIT SELECT, INSERT, UPDATE, DELETE ON scott.emp BY ACCESS WHENEVER NOT SUCCESSFUL;

審計類型與語法

類型語法範例說明
陳述式審計AUDIT TABLE, CREATE SESSION;針對 SQL 陳述式類型
權限審計AUDIT CREATE ANY TABLE;針對系統權限使用
物件審計AUDIT SELECT, UPDATE ON scott.emp BY ACCESS;針對特定物件操作
  • BY ACCESS:每次操作記錄一筆;BY SESSION:每 Session 記錄一筆(預設)。
  • WHENEVER SUCCESSFUL / NOT SUCCESSFUL:篩選成敗。

查詢審計記錄

-- 標準審計視圖
SELECT * FROM DBA_AUDIT_TRAIL;
SELECT * FROM DBA_AUDIT_SESSION;
SELECT * FROM DBA_AUDIT_OBJECT;

移動 AUD$ 表空間(保護 SYSTEM)

ALTER TABLE AUD$ MOVE TABLESPACE audit_ts;
ALTER INDEX I_AUD1 REBUILD ONLINE TABLESPACE audit_ts;
-- 同步移動 FGA_LOG$ 等相關表

二、細粒度審計 (FGA)

核心優勢

  • 條件觸發:audit_condition => 'salary > 10000'。
  • 欄位級:audit_column => 'salary'(僅存取該欄才審計)。
  • 支援 SELECT/INSERT/UPDATE/DELETE 任意組合(10g+)。
  • 無視連線方式(JDBC/ODBC/SQL*Plus/APEX 皆記錄)。

建立 Policy 範例

BEGIN
  DBMS_FGA.ADD_POLICY(
    object_schema => 'SCOTT',
    object_name   => 'EMP',
    policy_name   => 'EMP_SALARY_AUDIT',
    audit_column  => 'SAL',
    audit_condition => 'SAL > 10000',
    enable        => TRUE
  );
END;
/

查詢 FGA 審計軌跡

SELECT timestamp, db_user, os_user, object_schema, object_name, sql_text
FROM   DBA_FGA_AUDIT_TRAIL;

Policy 管理

  • 停用:DBMS_FGA.ENABLE_POLICY(..., enable=>FALSE);
  • 刪除:DBMS_FGA.DROP_POLICY(...);
  • 修改:須 Drop 再 Add。

視圖與 FGA 互動

  • 對 View 審計:Policy 建在 Base Table,OBJECT_NAME 顯示 Base Table,SQL_TEXT 記錄原始查詢 View 的 SQL。
  • 僅審計 View 存取:Policy 直接建在 View 名稱上。

優化器要求

FGA 需 CBO (Cost-Based Optimizer) 且統計資料最新,RBO 模式下會誤觸發審計。

標準審計適合合規「全記錄」,FGA 適合安全「精準記錄」。兩者可並行,但需注意 AUD$/FGA_LOG$ 表空間增長,建立定期歸檔清理作業。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved