达梦数据库教程(16)审计规则介绍与配置

达梦数据库教程(16)审计规则介绍与配置

一、达梦数据库审计功能介绍

数据库审计功能的主要作用是对数据的操作进行记录,比如谁在什么时间、通过什么IP、执行了什么SQL。只有当配置了合理的审计规则后,才能对异常数据(如数据不知道为什么被删除或修改)进行追溯。

达梦数据库采用三权分立设计,必须需要专门的审计账号 SYSAUDITOR 才能进行审计配置(SYSDBA 账号也没有权限。SYSAUDITOR 账号在完成数据库安装后会默认创建,默认密码 SYSAUDITOR

二、达梦数据库审计配置

1、开启审计功能

DM8 的审计功能默认是关闭的,需登录 SYSAUDITOR 账号开启。达梦数据库的审计分为普通审计和实时检测,实时检测比较少用,主要用于安全防护,可在操作发生时自动告警、断开连接甚至锁账号

-- 开启普通审计,默认0为关闭审计;1为开启普通审计;2为开启普通审计 + 实时检测
SP_SET_ENABLE_AUDIT(1);

-- 验证是否生效
SELECT * FROM V$DM_INI WHERE PARA_NAME = 'ENABLE_AUDIT';


2、审计规则配置

达梦数据库支持三个级别的审计规则,从粗到细依次为系统级、语句级、对象级。

2.1 系统级审计

审计功能开启后自动生效,无需额外配置,审计内容包含数据库启停、参数修改、主备日志传输故障等系统事件

2.2 语句级审计

针对某类 SQL 操作进行审计,全局生效,适合需要全实例覆盖的场景

-- 语法规则
-- SP_AUDIT_STMT('审计选项', '用户名', 'ALL/SUCCESSFUL/FAIL');    如果不限定用户,第二个参数应该传字符串 'NULL',而不是真正的 NULL

-- 审计所有用户的登录登出
SP_AUDIT_STMT('CONNECT', 'NULL', 'ALL');

-- 审计所有用户的 DML 操作
SP_AUDIT_STMT('INSERT TABLE', 'NULL', 'ALL');
SP_AUDIT_STMT('UPDATE TABLE', 'NULL', 'ALL');
SP_AUDIT_STMT('DELETE TABLE', 'NULL', 'ALL');

-- 审计所有用户的 DDL 操作
SP_AUDIT_STMT('TABLE', 'NULL', 'ALL');

-- 审计某个用户的操作
SP_AUDIT_STMT('UPDATE TABLE', 'APPUSER', 'ALL');
-- 取消审计,参数必须与设置时完全一致才能取消
SP_NOAUDIT_STMT('INSERT TABLE', 'NULL', 'ALL');

2.3 对象级审计

精确到具体的表、视图或存储过程,可进一步细化到列级别,适合对核心业务表做重点审计

-- 语法规则
-- SP_AUDIT_OBJECT('操作', '用户', '模式', '对象名', '时机');
-- SP_AUDIT_OBJECT('操作', '用户', '模式', '对象名', '列名', '时机');

-- 审计所有人对 HR.SALARY 表的 INSERT 和 UPDATE
SP_AUDIT_OBJECT('INSERT', 'NULL', 'HR', 'SALARY', 'ALL');
SP_AUDIT_OBJECT('UPDATE', 'NULL', 'HR', 'SALARY', 'ALL');

-- 只审计 AMOUNT 列的修改
SP_AUDIT_OBJECT('UPDATE', 'NULL', 'HR', 'SALARY', 'AMOUNT', 'ALL');

-- 取消对象级审计(参数同样需完全匹配)
SP_NOAUDIT_OBJECT('INSERT', 'NULL', 'HR', 'SALARY', 'ALL');


3、审计日志管理

3.1 审计日志存放路径

默认存放在数据目录中,文件命名格式为 AUDIT_<GUID>_<创建时间>.log

-- 查看审计文件实际存放路径
SELECT AUD_PATH FROM V$AUDIT_SPACE;

-- 查看所有审计文件列表
SELECT FILEPATH, BEGIN_TIME, LENGTH/1024/1024 AS SIZE_MB, IS_FULL FROM V$AUDIT_FILE ORDER BY BEGIN_TIME DESC;


如需自定义日志存放路径,修改 dm.ini 

# 静态参数,修改后需重启
AUD_PATH = /data/dm_audit


3.2 审计日志相关参数配置

以下参数都在dm.ini中进行配置,部分静态参数需要重启数据库生效

· AUD_PATH:审计文件存放路径

· AUDIT_MAX_FILE_SIZE: 单个审计日志的最大大小,单位为MB

-- 调整单个审计文件的大小为 500MB
SP_SET_PARA_VALUE(1, 'AUDIT_MAX_FILE_SIZE', 500);


· AUDIT_SPACE_LIMIT:审计日志可以占用的最大磁盘空间,单位为MB,0表示不限制

-- 查看当前审计空间用量
SELECT AUD_PATH, AUDIT_MAX_FILE_SIZE, AUD_SPACE_LIMIT,AUD_SPACE_FREE, AUDIT_IS_NORMAL FROM V$AUDIT_SPACE;


· AUDIT_KEEP_DAYS:审计文件最小保留天数,如果配置了具体天数,优先级大于AUDIT_SPACE_LIMIT,即达到审计文件总存储空间大小的限制也不会删除在指定保留天数内的审计日志

· AUDIT_FILE_FULL_MODE:磁盘不足时对审计日志的处理策略,1=当审计文件创建失败时发生阻塞;2=审计文件创建失败时不再审计;3=先尝试删除符合条件的审计文件,如果删除后还是创建失败则不再审计


3.3 清理与切换审计日志

-- 删除指定时间点前的审计文件,受 AUDIT_KEEP_DAYS 保护的文件不会被删除
SP_DROP_AUDIT_FILE('2026-07-01 00:00:00',0);

-- 手动切换审计文件(生成新文件),1=切换普通审计文件,2=同时切换普通+实时审计文件
SP_SWITCH_AUDIT_FILE(1);


3.4 查看审计记录

-- 查看最近的审计记录
SELECT USERNAME, OPERATION, SCHNAME, OBJNAME,SQL_TEXT, SUCC_FLAG, OPTIME, IP
FROM SYSAUDITOR.V$AUDITRECORDS
ORDER BY OPTIME DESC;

-- 按用户过滤
SELECT USERNAME, OPERATION, SQL_TEXT, OPTIME
FROM SYSAUDITOR.V$AUDITRECORDS
WHERE USERNAME = 'APPUSER'
ORDER BY OPTIME DESC;

文章评论

猜你喜欢

国产数据库 达梦数据库教程(15)SQL跟踪日志与慢查询日志

达梦数据库教程(15)SQL跟踪日志与慢查询日志
达梦数据库教程(15)SQL跟踪日志与慢查询日志
达梦数据库教程(15)SQL跟踪日志与慢查询日志
达梦数据库教程(15)SQL跟踪日志与慢查询日志

一、达梦跟踪日志达梦数据库跟踪日志即trace log,是数据库的详细诊断信息文件,该日志记录了包含系统各个会话所执行的 SQL 语句信息、参数信息、错误信息、执行时间等,用于排查故障、性能问题或内部...

达梦数据库教程(14)统计信息与执行计划

国产数据库 达梦数据库教程(14)统计信息与执行计划

一、达梦数据库执行计划所有DBMS的执行计划作用基本都是相同的,用于显示一条 SQL 语句在数据库中的执行过程,通过执行计划可以看出SQL影响数据量、是否有使用合理的索引等,有助于SQL优化1、达梦数...

达梦数据库教程(13)如何查找并解决阻塞事务

国产数据库 达梦数据库教程(13)如何查找并解决阻塞事务

一、数据库阻塞的原因当一个数据库提交DML、DDL语句时出现阻塞现象通常有两种情况,一是该语句影响的数据量太多,数据库需要时间来处理,这种情况一般无需处理,等事务正常结束即可;另一种则是被其他事务的锁...

达梦数据库教程(12)守护集群部署与管理

国产数据库 达梦数据库教程(12)守护集群部署与管理

一、达梦数据库守护集群介绍达梦数据库通过守护集群可以实现主备模式或读写分离集群,二者在搭建过程上基本一致,区别在于:· 数据守护集群:通常使用实时归档 + ARCH WAIT APPLY=0 (高性能...

达梦数据库教程(11)达梦数据库授权与版本更新

国产数据库 达梦数据库教程(11)达梦数据库授权与版本更新

一、达梦数据库授权管理1、查询授权查询授权到期时间,如果是永久授权,EXPIRED_DATE 列值是 NULL,AUTHORIZED_CUSTOMER 是用户名称SELECT * ...