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

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

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

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

相关推荐
百***353310 分钟前
PostgreSQL_安装部署
数据库·postgresql
rayylee2 小时前
生活抱怨与解决方案app
数据库·生活
Lucifer三思而后行4 小时前
使用 BR 备份 TiDB 到 AWS S3 存储
数据库·tidb·aws
百***17075 小时前
Oracle分页sql
数据库·sql·oracle
qq_436962185 小时前
数据中台:打破企业数据孤岛,实现全域资产化的关键一步
数据库·人工智能·信息可视化·数据挖掘·数据分析
weixin_537765806 小时前
【数据库管理】MySQL主从复制详解
数据库·mysql
q***33376 小时前
数据库高安全—openGauss安全整体架构&安全认证
数据库·安全·架构
范纹杉想快点毕业6 小时前
《嵌入式开发硬核指南:91问一次讲透底层到架构》
java·开发语言·数据库·单片机·嵌入式硬件·mongodb
倚肆6 小时前
MySQL 配置文件属性详解
数据库·mysql
user_admin_god8 小时前
企业级管理系统的站内信怎么轻量级优雅实现
java·大数据·数据库·spring boot