小伙伴們業務和安全運維中需要數據庫審計都是由哪些模塊來實現的,專門的第三方產品嗎?在醫療領域防統方等業務場景和數據庫的審計集合很是緊密。
在Oracle逐個版本的演進中,Oracle 23ai 的審計特性在安全領域的重大革新,延續傳統審計僅支持可用,新的完全使用統一審計功能,維度更多,策略靈活。
一、Oracle審計技術架構演進
- ?標準審計(9i-19c)??
- ?原理?:基于語句、權限、對象三層監控:
- ?語句審計?:跟蹤特定SQL類型(如AUDIT TABLE監控所有DDL)
- ?權限審計?:記錄系統權限使用(如AUDIT DELETE ANY TABLE)
- ?對象審計?:針對特定對象操作(如AUDIT INSERT ON hr.employees)
- ?存儲?:記錄存于SYS.AUD$表或操作系統文件(由AUDIT_TRAIL=DB/OS控制)
-
- 審計記錄可存于數據庫表?(如SYS.AUD$或12c+的UNIFIED_AUDIT_TRAIL)或操作系統文件?(路徑由AUDIT_FILE_DEST參數指定)
- 支持擴展記錄(AUDIT_TRAIL=DB_EXTENDED可捕獲完整的SQL文本及綁定變量)
- ?細粒度審計(FGA,9i+)??
- ?行級監控?:通過DBMS_FGA.ADD_POLICY定義基于內容的審計策略(如監控salary > 10000的查詢)
- ?局限?:僅支持SELECT語句,DML操作無法覆蓋
- ?統一審計(12c+)??
- ?架構革新?:合并標準審計與FGA,策略統一管理,通過策略化配置(如CREATE AUDIT POLICY)實現集中管理,顯著提升效率:
CREATE AUDIT POLICY policy_name ACTIONS SELECT ON hr.employees;--Audit policy created.
- 性能優化?:審計日志集中存儲在UNIFIED_AUDIT_TRAIL視圖,查詢效率提升
- Oracle強烈建議:12.2及以上版本用戶立即遷移至統一審計。
二、技術特點?
1. 精準可控?
- 可限定審計范圍:按用戶(BY user)、操作結果(WHENEVER SUCCESSFUL/NOT SUCCESSFUL)或頻率(BY ACCESS/SESSION)精細化控制
- ?特權操作強制審計?:啟用AUDIT_SYS_OPERATIONS=TRUE后,所有SYS及SYSDBA操作必被記錄(存于OS文件,防篡改)
?2. ?低侵入高兼容
- 審計策略獨立于應用邏輯,無論用戶通過程序或工具(如SQL*Plus)訪問,行為均被捕獲
- 符合C2級安全標準及GDPR、PCI DSS等法規要求,直接支撐合規審計
3. ?性能可調優?
- 支持審計表分區、定期清理日志,避免存儲膨脹
- 敏感操作聚焦(如列級或FGA策略)減少冗余日志,平衡安全與性能
三、23ai全新審計架構?
1. 傳統審計徹底棄用?
- 刪除默認傳統審計配置
- 以下參數被廢棄(設置時觸發ORA-32004/ORA-32006警告):
- AUDIT_TRAIL, AUDIT_SYS_OPERATIONS, AUDIT_FILE_DEST, AUDIT_SYSLOG_LEVEL
2. 強制統一審計模式?
- 取消uniaud_on/uniaud_off選項,統一審計始終啟用
- 預定義策略默認激活?:
- - ORA_SECURECONFIG(安全配置變更)
- - ORA_LOGIN_LOGOUT(登錄登出)
- - ORA_DV_SCHEMA_CHANGES(字典敏感列訪問)
- - ORA_DV_DEFAULT_PROTECTION(數據庫保險箱變更)
- - ORA$DICTIONARY_SENS_COL_ACCESS(字典敏感列訪問)
四、Oracle 23ai核心新特性
1. ?列級精準審計?
- ?原理?:僅監控指定敏感列的操作(如salary更新)
-- 創建策略審計sal、ename列的SELECT操作
CREATE AUDIT POLICY employee_pii_access ACTIONS SELECT(sal, ename) ON scott.emp;
-- 追加審計sal列的UPDATE操作
ALTER AUDIT POLICY employee_pii_access ADD ACTIONS UPDATE(sal) ON scott.emp;
-- 審計empid列的INDEX操作
CREATE AUDIT POLICY employee_pii_access1 ACTIONS INDEX(empid) ON scott.emp;
--以上為示例
CREATE AUDIT POLICY emp_salary_policyACTIONS UPDATE(salary), SELECT(salary) ON hr.employees;
--Audit policy created.-- 僅審計薪資字段
AUDIT POLICY emp_salary_policy;
--Audit succeeded.-- 1. 創建測試表(SYSDBA)
CREATE TABLE employees (id NUMBER PRIMARY KEY,name VARCHAR2(50),salary NUMBER
);
INSERT INTO employees VALUES (1, 'Alice', 10000);-- 2. 創建審計策略(SYSDBA)
CREATE AUDIT POLICY audit_salary ACTIONS SELECT(salary) ON employees; -- 僅監控 salary 查詢
AUDIT POLICY audit_salary;-- 3. 模擬用戶查詢
SELECT salary FROM employees WHERE id=1; -- 被審計
SELECT name FROM employees WHERE id=1; -- 不被審計-- 4. 查看審計記錄
SELECT event_timestamp, dbusername, sql_text
FROM unified_audit_trail
WHERE object_name='EMPLOYEES';
2. ?區塊鏈表集成?
- ?原理?:
- 通過CREATE BLOCKCHAIN TABLE創建防篡改表,每行生成SHA-256哈希鏈
- ?場景?:金融交易日志、醫療存證等司法取證場景
CREATE BLOCKCHAIN TABLE audit_logs (log_id NUMBER GENERATED ALWAYS AS IDENTITY,action VARCHAR2(50),user_name VARCHAR2(30)
)
NO DROP UNTIL 30 DAYS IDLE
NO DELETE UNTIL 16 DAYS AFTER INSERT -- 添加此行,保留期最少16天
HASHING USING "SHA2_512" VERSION "v1"; -- 指定哈希算法可以有不同的版本(必填)
--Table created.
INSERT INTO audit_logs (action, user_name) VALUES ('SALARY_UPDATE', 'ADMIN');
COMMIT;
--
INSERT INTO audit_logs (action, user_name) VALUES ('SALARY_UPDATE', 'ADMIN');
1 row created.
SYS@FREE> COMMIT;
Commit complete.
五、統一審計策略檢查?
SELECT POLICY_NAME, AUDIT_CONDITION, OBJECT_NAME
FROM audit_unified_policies
WHERE OBJECT_TYPE = 'Table'; -- 檢查已啟用的表級策略
六、傳統審計的兼容性與過渡?
- ?升級兼容性?23ai保留現有傳統審計配置,繼續生成審計記錄,但禁止新增或修改傳統審計設置(僅允許刪除)。
- ?遷移強制要求?
- 禁用所有傳統審計設置:執行?NOAUDIT 命令
- 關閉傳統審計參數:
AUDIT_TRAIL = None
AUDIT_SYS_OPERATIONS = False
?FGA策略處理?細粒度審計(FGA)策略自動遷移,審計記錄將輸出至統一審計線索。
七、遷移操作指南?
- ?基礎場景?
- 啟用核心預定義策略:ORA_SECURECONFIG + ORA_LOGIN_LOGOUT
- 關閉傳統審計參數
? 遷移價值?:通過統一審計實現精細化管控(如列級操作追蹤),同時降低傳統審計的維護成本。預定義策略的強制啟用大幅提升基礎安全水位。
