基於值的審計(value-based auditing)

season0891發表於2014-03-28
基於值的審計(value-based auditing)

進行資料庫審計時會記錄審計物件中發生的插入、更新和刪除操作,但是不會捕獲更改的實際值。
要擴充套件資料庫審計,可使用基於值的審計,利用資料庫觸發器(事件驅動的PL/SQL 構造)來捕獲更改的值。
使用者在連線了相應觸發器的表中插入、更新或刪除資料時,觸發器在後臺將審計資訊複製到包含審計資訊的表中。
因為審計觸發器程式碼在每次插入、更新或刪除操作發生時都必須執行,所以與標準資料庫審計相比,使用基於值的審計時,效能下降幅度比較大。
效能下降幅度取決於觸發器程式碼的效率。只在標準資料庫審計捕獲的資訊不足的情況下,才使用基於值的審計。
基於值的審計由使用者或第三方程式碼實施。Oracle DB 提供了可用來構建基於值的審計系統的PL/SQL 構造。
基於值的審計的關鍵部分是審計觸發器,這是一個單純為了捕獲審計資訊而構造的PL/SQL 觸發器。
以下是一個審計觸發器的典型示例:
CREATE OR REPLACE TRIGGER system.hrsalary_audit
AFTER UPDATE OF salary
ON hr.employees
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
BEGIN
IF :old.salary != :new.salary THEN
INSERT INTO system.audit_employees
VALUES (sys_context('userenv','os_user'), sysdate,
sys_context('userenv','ip_address'),
:new.employee_id ||
' salary changed from '||:old.salary||
' to '||:new.salary);
END IF;
END;
/
這個觸發器將審計的重點設定為捕獲hr.employees表薪水列的更改。更新某行後,觸發器就會檢查薪水列。
如果新舊薪水不相等,則觸發器會在audit_employees表(透過在SYSTEM方案中單獨執行一項操作而建立)中插入一條審計記錄。
審計記錄中包括了使用者名稱、執行更改的IP 地址、標識所更改記錄的主鍵及更改的實際薪水值。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/90618/viewspace-1131515/,如需轉載,請註明出處,否則將追究法律責任。

相關文章