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

基于值的审计(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/29196873/viewspace-1087261/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29196873/viewspace-1087261/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值