ITPub博客

首页 > 数据库 > Oracle > 基于值的审计(value-based auditing)

基于值的审计(value-based auditing)

Oracle 作者:season0891 时间:2014-03-28 13:58:05 0 删除 编辑
基于值的审计(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/,如需转载,请注明出处,否则将追究法律责任。

下一篇: Flashback Transaction
请登录后发表评论 登录
全部评论

注册时间:2008-06-10

  • 博文量
    791
  • 访问量
    1946221