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

在数据安全重于一切的年度,如何进行数据保护就成为了计算机系统管理工作中的重中之重。很多大型企业,运行商和政府等单位中,可以通过采购各类安全设备(如数据库审计、日志审计、堡垒机等)进行数据监管和保护。但很多中小企业的业务系统中,没有足够预算,也没有计划去采购安全设备去进行数据监管和保护。这个时候,我们可以利用数据自身的功能,生成自己的日志审计记录,进而完成数据的监管和保护。下面我们通过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客户端连接到数据库,删除一条记录进行验证:

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

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

相关推荐
风向决定发型丶1 小时前
redis集群搭建
数据库·redis·缓存
wei_shuo3 小时前
KES 扩展与插件开发实战:自定义函数、触发器与第三方插件集成
数据库·kes
风中芦苇啊4 小时前
从直接生成到受控配置:新一代图表Agent的SQL安全生成范式
数据库·sql·安全
吴声子夜歌4 小时前
SQL进阶——窗口函数
数据库·sql
周杰伦的稻香4 小时前
MySQL8.0+中引入的SET_USER_ID权限迭代SUPER权限指定 DEFINER
数据库·mysql
动恰客流统计4 小时前
客流统计如何结合AI分析?从传统计数到智能决策的技术升级路径
数据库·人工智能·边缘计算
宠友信息5 小时前
多端数据互通场景下Spring Boot仿小红书源码结构设计
数据库·spring boot·redis·缓存·架构
风曦Kisaki5 小时前
#Linux数据库管理Day06:主从同步与MaxScale读写分离
linux·运维·数据库
影寂ldy5 小时前
C# try-catch 异常处理全套笔记
服务器·数据库·c#
长不胖的路人甲6 小时前
Redis 缓存的数据持久化方案讲解
数据库·redis·缓存