开启达梦数据库审计功能并保留6个月日志
·
目录
应信息系统应等级保护测评的要求,需开启数据库审计功能,并且日志都需要留存不少于6个月时间。
一、开启审计功能
1. 修改静态参数(需重启)
编辑 dm.ini(路径通常为 /opt/dmdbms/data/DAMENG/dm.ini):
| AUDIT_LEVEL = 1 # 审计级别(1基础审计,2标准审计,3全部审计) AUDIT_FILE_FULL_MODE = 1 # 1=覆盖旧日志,0=停止审计(必须设为1) AUDIT_SPACE_LIMIT = 20480 # 审计日志总空间限制(单位MB,建议20GB) AUDIT_MAX_FILE_SIZE = 200 # 单个审计文件大小(单位MB) |
如:

重启数据库生效:
systemctl restart DmServiceDMSERVER
2. 动态启用(无需重启,重启后恢复关闭)
-- 立即启用审计
SP_SET_PARA_VALUE(1, 'AUDIT_LEVEL', 2);
SP_SET_PARA_VALUE(1, 'AUDIT_FILE_FULL_MODE', 1);
二、配置审计规则
1. 审计关键操作
-- 审计所有用户登录(成功+失败)
AUDIT CONNECT WHENEVER NOT SUCCESSFUL;
AUDIT CONNECT WHENEVER SUCCESSFUL;
-- 审计数据操作(DML)
AUDIT INSERT TABLE, UPDATE TABLE, DELETE TABLE;
-- 审计权限变更
AUDIT GRANT, REVOKE, CREATE USER, ALTER USER, DROP USER;
-- 审计敏感表访问(示例:审计SYSDBA.EMPLOYEE表的SELECT)
AUDIT SELECT ON SYSDBA.EMPLOYEE;
2. 查看已配置规则
SELECT * FROM SYS.AUDIT$;
三、确保6个月日志保留
1. 计算存储需求
假设每日生成 100MB 审计日志:
6个月需保留:100MB × 30天 × 6 ≈ 18GB
设置 AUDIT_SPACE_LIMIT 应大于该值(如20GB)
2. 自动清理旧日志
通过定时任务删除6个月前的记录:
-- 创建每月执行的清理作业sql:
BEGIN
DBMS_JOB.CREATE(
'DELETE FROM SYS.AUDIT$ WHERE OPERATE_TIME < ADD_MONTHS(SYSDATE, -6);',
SYSDATE,
'ADD_MONTHS(TRUNC(SYSDATE,''MM''),1)'
);
COMMIT;
END;
/
3. 日志归档备份
-- 手动导出审计日志到文件(CSV格式)sql:
CALL SP_EXPORT_AUDIT('PATH_TO_SAVE/audit_archive.csv', 1);
建议:配置操作系统级定时任务,将 /opt/dmdbms/data/DAMENG/audit_*.log 压缩备份到其他存储。
四、验证与监控
1. 检查审计记录
-- 查看最近的审计日志sql
SELECT USERNAME, OPERATION, OBJNAME, OPERATE_TIME
FROM SYS.AUDIT$
ORDER BY OPERATE_TIME DESC
LIMIT 100;
2. 监控日志空间
-- 检查审计日志占用空间sql
SELECT SUM(bytes)/1024/1024 "Size_MB"
FROM DBA_AUDIT_FILES;
五、注意事项
1、性能影响:高频审计可能降低性能,建议:
- 避免审计SELECT操作(除非必要)
- 优先审计写操作和权限变更
2、日志安全:
- 限制 SYSAUDITOR 角色权限
- 禁止普通用户访问 SYS.AUDIT$ 表
3、集中管理:建议将审计日志同步到ELK或SIEM系统长期保存。
故障处理
日志满错误:检查 AUDIT_FILE_FULL_MODE 是否为1
无审计记录:确认 AUDIT_LEVEL ≥ 1 且规则已正确配置
更多推荐

所有评论(0)