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

Oracle 稽核 (AUDIT) 快速上手:配置、層級、選項與管理全攻略

     編輯:Oracle 資料庫基礎

從零建立資料庫操作稽核體系的標準化流程

Oracle AUDIT 是原生安全稽核功能,支援陳述式、權限、物件三層級稽核。本文系統說明核心參數、三大稽核層級、BY ACCESS/SESSION 差異、成功/失敗過濾、稽核視圖查詢與停用管理,助你在 30 分鐘內建立可用的稽核基線。

核心參數配置 (需重啟生效)

參數預設值建議值說明
AUDIT_TRAILNONEDB / DB,EXTENDED / XMLDB=寫入 SYS.AUD$;EXTENDED 含 SQL_BIND/TEXT;XML=寫作業系統 XML 檔
AUDIT_SYS_OPERATIONSFALSETRUE強制稽核 SYS/SYSDBA/SYSOPER 所有操作,寫 OS 稽核檔 (不受資料庫狀態影響)
AUDIT_FILE_DEST$ORACLE_HOME/rdbms/audit獨立磁碟目錄OS 稽核檔儲存路徑

三大稽核層級詳細說明

層級語法範例稽核範圍典型用途
Statement (陳述式)AUDIT TABLE;
AUDIT SESSION BY scott;
指定 SQL 陳述式類型 (CREATE/DROP/ALTER TABLE 等) 或特定用戶會話DDL 變更追蹤、登入監控
Privilege (系統權限)AUDIT SELECT ANY TABLE;使用特定系統權限的操作 (如跨 Schema 查詢)高權限操作監控
Object (物件)AUDIT SELECT, INSERT ON scott.emp BY ACCESS;
AUDIT DROP ON DEFAULT BY ACCESS;
特定物件的操作;DEFAULT 子句自動套用至後建立物件敏感表存取稽核、新物件自動納管

關鍵選項深度解析

  • BY ACCESS vs BY SESSION:
    • BY ACCESS:每次操作產生一筆稽核記錄 (精細、量大)
    • BY SESSION (預設):同一 Session 同類操作僅記錄一次 (精簡、可能遺漏細節)
    • 建議敏感操作用 BY ACCESS
  • WHENEVER SUCCESSFUL / NOT SUCCESSFUL:
    • WHENEVER SUCCESSFUL:僅記錄成功操作 (RETURNCODE=0)
    • WHENEVER NOT SUCCESSFUL:僅記錄失敗操作 (偵測攻擊嘗試)
    • 省略則成功失敗皆記錄

稽核管理實戰指令

-- 1. 啟用稽核 (範例)
AUDIT SESSION WHENEVER SUCCESSFUL;
AUDIT CREATE TABLE, DROP TABLE BY ACCESS;
AUDIT SELECT, INSERT, UPDATE, DELETE ON scott.emp BY ACCESS WHENEVER NOT SUCCESSFUL;
AUDIT SELECT ANY TABLE BY ACCESS;

-- 2. 查看稽核記錄
SELECT username, obj_name, action_name, returncode, timestamp
FROM dba_audit_trail
WHERE timestamp > SYSDATE - 1
ORDER BY timestamp DESC;

-- 3. 查看已配置稽核策略
SELECT * FROM dba_stmt_audit_opts;   -- 陳述式層級
SELECT * FROM dba_priv_audit_opts;   -- 權限層級
SELECT * FROM dba_obj_audit_opts;    -- 物件層級
SELECT * FROM all_def_audit_opts;    -- DEFAULT 子句配置

-- 4. 停用稽核 (對應語法改 NOAUDIT)
NOAUDIT SESSION WHENEVER SUCCESSFUL;
NOAUDIT CREATE TABLE, DROP TABLE;
NOAUDIT SELECT, INSERT ON scott.emp;
NOAUDIT ALL ON DEFAULT;  -- 移除 DEFAULT 自動稽核

稽核視圖體系

  • DBA_AUDIT_TRAIL:核心視圖,基於 SYS.AUD$
  • DBA_AUDIT_SESSION:登入/登出記錄
  • DBA_AUDIT_OBJECT:物件操作記錄
  • DBA_AUDIT_STATEMENT:陳述式執行記錄
  • DBA_COMMON_AUDIT_TRAIL (12c+):統一標準/精細稽核視圖

效能與維運建議

  • 定期清理:DBMS_AUDIT_MGMT (11gR2+) 自動分區/清除舊記錄,避免 SYSAUX 表空間爆滿
  • 精準範圍:避免 AUDIT ALL 全開,依風險等級分級稽核
  • OS 稽核備援:AUDIT_TRAIL=XML 同時寫 OS 檔案,資料庫掛掉仍有記錄
  • 整合 SIEM:定期匯出稽核日誌至安全資訊事件管理系統關聯分析

局限性提醒

  • 無法稽核 SELECT * 具體回傳資料內容 (需觸發器/精細稽核 FGA)
  • SYS 操作若 AUDIT_SYS_OPERATIONS=FALSE 可繞過稽核
  • 大量稽核產生 REDO/UNDO 壓力,影響主業務效能
  • 企業級建議部署專業資料庫防火牆/稽核系統 (旁路零侵入、即時攔截、完整 SQL 重建)

建立分級分類的稽核基線,是資料庫安全合規的基石動作。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved