快速搭建记录核心业务表删除记录的日志审计信息

在数据安全重于一切的年度,如何进行数据保护就成为了计算机系统管理工作中的重中之重。很多大型企业,运行商和政府等单位中,可以通过采购各类安全设备(如数据库审计、日志审计、堡垒机等)进行数据监管和保护。但很多中小企业的业务系统中,没有足够预算,也没有计划去采购安全设备去进行数据监管和保护。这个时候,我们可以利用数据自身的功能,生成自己的日志审计记录,进而完成数据的监管和保护。下面我们通过oracle的触发器功能,记录下自己核心业务表的删除记录的日志审计信息。

1,创建生产表

创建模拟的生产表T_CODE:

sql 复制代码
-- Create table
create table T_CODE
(
  xh   NUMBER,
  name VARCHAR2(100),
  bj   CHAR(1),
  gxsj DATE default sysdate
)
tablespace DT_TPC_DAT
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 64K
    next 1M
    minextents 1
    maxextents unlimited
  );

2,创建日志审计表

创建记录生产表的日志审计表T_CODE_AUDIT_LOG。我本地T_CODE_AUDIT_LOG记录了原表删除前的所有字段信息、哪个用户删除的、删除操作的ip地址、删除备注(大家可以根据自己需要添加和修改信息)。

sql 复制代码
create table T_CODE_AUDIT_LOG
(
  xh   NUMBER,
  name VARCHAR2(100),
  bj   CHAR(1),
  gxsj DATE,
  oper_type varchar2(10),
  oper_date date,
  oper_username varchar2(100),
  oper_ip varchar2(20),
  oper_bz varchar2(100)
);

3,创建触发器

我们创建触发器,获取删除操作前的记录信息,并记录相关审计信息。

sql 复制代码
create or replace trigger tri_audit_t_code
    before delete on tpc.t_code
    referencing new as new_value old as old_value
    for each row
      declare
        v_type varchar2(10);
        v_date date;
        v_username varchar2(30);
        v_ip varchar2(20);
        v_bz varchar2(100);
      begin
        select sys_context('userenv','session_user') into v_username from dual;
        select sysdate into v_date from dual;
        select sys_context('userenv','ip_address') into v_ip from dual;
        v_type := 'delete';
        v_bz := '危险操作';
        insert into t_code_audit_log
        (xh,name,bj,gxsj,oper_type,oper_date,oper_username,oper_ip,oper_bz)
        values
        (:old_value.xh,
         :old_value.name,
         :old_value.bj,
         :old_value.gxsj,
         v_type,
         v_date,
         v_username,
         v_ip,
         v_bz);
        end;

4,验证

我们用plsql developer客户端连接到数据库,删除一条记录进行验证:

我们查看我们的审计记录表:

可以看到,审计表中已经记录了我们的日志信息!

相关推荐
橙序研工坊6 分钟前
MySQL的进阶语法7(索引-B+Tree 、Hash、聚集索引 、二级索引(回表查询)、索引的使用及设计原则
数据库·sql·mysql
Bruce-li__8 分钟前
深入理解Python asyncio:从入门到实战,掌握异步编程精髓
网络·数据库·python
小光学长43 分钟前
基于vue框架的智能服务旅游管理系统54kd3(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库
Bonnie_121543 分钟前
07-MySQL-事务的隔离级别以及底层原理
数据库·mysql
ETLCloud数据集成社区1 小时前
ETLCloud是如何通过Oracle实现CDC的?
数据库·oracle·etl·实时数据同步
KATA~1 小时前
解决MyBatis-Plus枚举映射错误:No enum constant问题
java·数据库·mybatis
xyliiiiiL1 小时前
一文总结常见项目排查
java·服务器·数据库
shaoing1 小时前
MySQL 错误 报错:Table ‘performance_schema.session_variables’ Doesn’t Exist
java·开发语言·数据库
用户6279947182621 小时前
南大通用GBase 8s 获取表的约束与索引列信息
数据库
Arbori_262152 小时前
获取oracle表大小
数据库·oracle