Skip to content

DM 审计

审计的定义

审计是指对数据库的各种操作和事件进行记录和分析的过程,包括用户登录、SQL语句执行、权限变更、数据修改等。审计记录可以用于安全监控、合规检查、故障排查和责任追溯等。

审计的重要性

  • 安全监控:监控数据库的各种操作和事件,及时发现异常行为
  • 合规检查:满足等保、分级保护等合规要求
  • 故障排查:帮助排查数据库故障和性能问题
  • 责任追溯:发生安全事件时,可以追溯到具体的操作人和操作时间
  • 风险评估:通过审计记录,评估数据库的安全风险

审计的范围

DM数据库的审计范围主要包括以下内容:

  • 登录审计:用户登录和退出数据库的记录
  • 权限审计:权限授予、收回和变更的记录
  • 操作审计:SQL语句执行、数据修改等操作的记录
  • 系统事件审计:数据库启动、关闭、备份等系统事件的记录
  • 对象审计:表、视图、存储过程等数据库对象的操作记录

审计的类型

1. 系统审计

系统审计是指对数据库系统级别的事件进行审计,如数据库启动、关闭、备份、恢复等。

系统审计的内容

  • 数据库启动和关闭
  • 数据库备份和恢复
  • 参数修改
  • 系统资源使用情况
  • 错误和告警事件

2. 语句审计

语句审计是指对特定类型的SQL语句进行审计,如SELECT、INSERT、UPDATE、DELETE等。

语句审计的内容

  • SELECT语句
  • INSERT语句
  • UPDATE语句
  • DELETE语句
  • CREATE、ALTER、DROP等DDL语句
  • GRANT、REVOKE等DCL语句

3. 对象审计

对象审计是指对特定数据库对象的操作进行审计,如表、视图、存储过程等。

对象审计的内容

  • 表的插入、更新、删除操作
  • 视图的查询操作
  • 存储过程的执行
  • 索引的创建和删除
  • 触发器的执行

4. 权限审计

权限审计是指对用户权限的变更和使用进行审计。

权限审计的内容

  • 权限的授予和收回
  • 角色的创建和修改
  • 用户密码的修改
  • 权限的使用情况

审计的配置方法

1. 使用DM管理工具配置审计

DM管理工具提供了图形化的审计配置界面,可以方便地配置和管理审计功能。

配置步骤

  1. 启动DM管理工具
  2. 连接到数据库实例
  3. 选择"安全管理" -> "审计管理"选项
  4. 配置审计开关、审计规则、审计目标等
  5. 保存配置并生效

2. 使用SQL命令配置审计

可以使用SQL命令配置审计功能,包括启用审计开关、创建审计规则、配置审计目标等。

启用审计开关

sql
-- 启用审计开关
SP_SET_PARA_VALUE(2, 'AUDIT_SWITCH', 1);

-- 查看审计开关状态
SELECT NAME, VALUE FROM V$DM_INI WHERE NAME = 'AUDIT_SWITCH';

创建审计规则

sql
-- 创建语句审计规则
CREATE AUDIT POLICY audit_select ON SELECT;

-- 创建对象审计规则
CREATE AUDIT POLICY audit_table ON TABLE hr.employees;

-- 创建权限审计规则
CREATE AUDIT POLICY audit_privilege ON GRANT, REVOKE;

启用审计规则

sql
-- 启用审计规则
AUDIT POLICY audit_select;
AUDIT POLICY audit_table;
AUDIT POLICY audit_privilege;

配置审计目标

sql
-- 配置审计文件路径
SP_SET_PARA_VALUE(2, 'AUDIT_FILE_PATH', '/dm/audit');

-- 配置审计文件大小
SP_SET_PARA_VALUE(2, 'AUDIT_FILE_SIZE', 1024);

-- 配置审计文件个数
SP_SET_PARA_VALUE(2, 'AUDIT_FILE_NUM', 10);

3. 审计配置文件

DM数据库的审计配置主要存储在dm.ini文件中,通过修改dm.ini文件中的相关参数,可以配置审计功能。

审计相关参数

参数名描述默认值建议值
AUDIT_SWITCH是否启用审计功能01
AUDIT_FILE_PATH审计文件存储路径.//dm/audit
AUDIT_FILE_SIZE单个审计文件大小(MB)1001024
AUDIT_FILE_NUM审计文件个数1010
AUDIT_TRAIL审计记录的存储方式01
AUDIT_EXECUTE_SQL是否审计SQL语句执行01
AUDIT_LOGIN_FAILURE是否审计登录失败01

审计记录的管理

1. 查看审计记录

可以通过SQL命令或DM管理工具查看审计记录。

使用SQL命令查看审计记录

sql
-- 查看审计记录
SELECT * FROM SYS.AUDIT$;

-- 查看登录审计记录
SELECT * FROM SYS.AUDIT$ WHERE ACTION_NAME = 'LOGON';

-- 查看SELECT语句审计记录
SELECT * FROM SYS.AUDIT$ WHERE ACTION_NAME = 'SELECT';

-- 按时间范围查询审计记录
SELECT * FROM SYS.AUDIT$ WHERE TIMESTAMP BETWEEN '2023-01-01 00:00:00' AND '2023-01-31 23:59:59';

使用DM管理工具查看审计记录

  1. 启动DM管理工具
  2. 连接到数据库实例
  3. 选择"安全管理" -> "审计管理" -> "审计记录"选项
  4. 查看和筛选审计记录

2. 审计记录的备份和清理

定期备份和清理审计记录,确保审计功能的正常运行。

备份审计记录

sql
-- 将审计记录导出到文件
SELECT * FROM SYS.AUDIT$ INTO OUTFILE '/dm/audit/audit_backup.txt' FORMAT TEXT;

清理审计记录

sql
-- 清理指定时间之前的审计记录
DELETE FROM SYS.AUDIT$ WHERE TIMESTAMP < '2023-01-01 00:00:00';

-- 清理所有审计记录
TRUNCATE TABLE SYS.AUDIT$;

3. 审计记录的分析

通过分析审计记录,可以发现数据库的异常行为和安全风险。

审计记录分析的内容

  • 登录失败次数过多的用户
  • 频繁执行敏感操作的用户
  • 异常时间的数据库访问
  • 权限变更记录
  • 大量数据修改操作

审计记录分析的方法

  • 使用SQL语句分析审计记录
  • 使用DM管理工具的审计分析功能
  • 使用第三方日志分析工具
  • 编写自定义审计分析脚本

审计的监控和维护

1. 审计状态监控

定期监控审计功能的状态,确保审计功能正常运行。

监控审计开关状态

sql
-- 查看审计开关状态
SELECT NAME, VALUE FROM V$DM_INI WHERE NAME = 'AUDIT_SWITCH';

-- 查看审计相关参数
SELECT NAME, VALUE FROM V$DM_INI WHERE NAME LIKE '%AUDIT%';

监控审计文件

sql
-- 查看审计文件信息
SELECT * FROM V$AUDIT_FILE;

-- 查看审计文件大小
SELECT FILE_NAME, FILE_SIZE FROM V$AUDIT_FILE;

2. 审计性能监控

审计功能会对数据库性能产生一定影响,需要定期监控审计对性能的影响。

监控审计对性能的影响

  • 监控数据库的CPU使用率
  • 监控数据库的I/O使用率
  • 监控SQL语句的执行时间
  • 监控审计记录的生成速率

优化审计性能

  • 只审计必要的操作和事件
  • 合理配置审计文件大小和个数
  • 定期清理审计记录
  • 优化审计规则,减少不必要的审计

3. 审计维护

定期对审计功能进行维护,确保审计功能的可靠性和性能。

日常维护

  • 检查审计开关状态
  • 查看审计日志
  • 监控审计文件大小
  • 备份和清理审计记录

定期维护

  • 优化审计规则
  • 更新审计配置
  • 测试审计功能
  • 培训管理和维护人员

审计的最佳实践

1. 审计策略制定

制定合理的审计策略,根据业务需求和合规要求确定审计范围和级别。

审计策略的内容

  • 审计的范围和级别
  • 审计规则的制定
  • 审计记录的存储和管理
  • 审计记录的分析和报告
  • 审计的监控和维护

2. 最小审计原则

只审计必要的操作和事件,避免过度审计影响系统性能。

最小审计原则的实施

  • 只审计敏感操作和事件
  • 只审计敏感数据和对象
  • 只审计敏感用户和权限
  • 合理配置审计级别

3. 审计记录的安全管理

确保审计记录的安全性和完整性,防止审计记录被篡改或删除。

审计记录的安全措施

  • 将审计文件存储在安全的位置
  • 定期备份审计记录
  • 限制审计记录的访问权限
  • 对审计记录进行加密存储
  • 配置审计记录的完整性检查

4. 定期审计分析

定期分析审计记录,及时发现和处理安全问题。

审计分析的频率

  • 日常分析:每天查看审计记录,发现异常行为
  • 定期分析:每周或每月进行一次全面的审计分析
  • 事件分析:发生安全事件时,及时进行审计分析

5. 审计日志的备份和归档

定期备份和归档审计日志,满足合规要求和长期存储需求。

审计日志的备份策略

  • 日常备份:每天备份一次审计日志
  • 定期备份:每周或每月进行一次完整备份
  • 归档备份:将审计日志归档到长期存储介质
  • 异地备份:将审计日志备份到异地,防止本地灾难

常见问题(FAQ)

Q1: 如何启用DM数据库的审计功能?

A1: 启用DM数据库的审计功能可以通过以下方式:

  • 使用DM管理工具的图形化界面启用审计开关
  • 使用SQL命令修改AUDIT_SWITCH参数
  • 直接修改dm.ini文件中的AUDIT_SWITCH参数

Q2: 如何配置审计规则?

A2: 配置审计规则可以通过以下方式:

  • 使用DM管理工具的图形化界面创建审计规则
  • 使用CREATE AUDIT POLICY命令创建审计规则
  • 使用AUDIT命令启用审计规则

Q3: 审计功能对性能有什么影响?

A3: 审计功能会对数据库性能产生一定影响,主要取决于审计的范围和级别。审计范围越广、级别越高,对性能的影响越大。为了减少审计对性能的影响,建议只审计必要的操作和事件,合理配置审计规则。

Q4: 如何优化审计性能?

A4: 优化审计性能的方法:

  • 只审计必要的操作和事件
  • 合理配置审计文件大小和个数
  • 定期清理审计记录
  • 优化审计规则,减少不必要的审计
  • 使用高性能的存储设备存储审计文件

Q5: 如何确保审计记录的安全性?

A5: 确保审计记录安全性的方法:

  • 将审计文件存储在安全的位置
  • 定期备份审计记录
  • 限制审计记录的访问权限
  • 对审计记录进行加密存储
  • 配置审计记录的完整性检查

版本差异说明

版本主要变化
DM 7支持基本的审计功能,包括系统审计、语句审计和对象审计
DM 8增强了审计功能,支持更多的审计类型和配置选项
DM 8.1优化了审计性能和可靠性,支持更灵活的审计配置

在配置和使用审计功能时,需要注意以下几点:

  • 制定合理的审计策略
  • 遵循最小审计原则
  • 确保审计记录的安全性和完整性
  • 定期监控和维护审计功能
  • 定期分析审计记录
  • 优化审计性能,减少对系统的影响

通过合理的配置和管理,可以充分发挥审计功能的优势,提高DM数据库的安全性和合规性。