Skip to content

DM 安全加固

安全加固的定义

安全加固是指对数据库系统进行一系列的配置和措施,包括安全参数配置、漏洞修复、访问控制、加密等,提高数据库系统的安全性,防止未授权的访问和攻击。

安全加固的重要性

  • 防止未授权访问:通过访问控制和认证机制,防止未授权用户访问数据库
  • 防止数据泄露:通过加密和脱敏等措施,防止敏感数据泄露
  • 防止攻击:通过漏洞修复和安全配置,防止各种数据库攻击
  • 符合合规要求:满足等保、分级保护等合规要求
  • 提高系统可靠性:通过安全加固,提高系统的可靠性和稳定性

安全加固的范围

DM数据库的安全加固范围主要包括以下内容:

  • 安全参数配置:配置数据库的安全参数
  • 访问控制:配置用户认证和授权机制
  • 数据加密:配置数据加密和传输加密
  • 漏洞修复:修复数据库的安全漏洞
  • 日志审计:配置日志审计和监控
  • 网络安全:配置网络安全和隔离
  • 备份恢复:配置安全的备份和恢复策略

安全参数配置

1. dm.ini安全参数

dm.ini是DM数据库的主要配置文件,包含了大量的安全相关参数。

核心安全参数

参数名描述默认值建议值
PWD_POLICY密码策略,控制密码复杂度03(包含大小写字母、数字和特殊字符)
PWD_MIN_LEN密码最小长度812
PWD_EXPIRY_TIME密码过期时间(天)9090
PWD_INI_CHANGE是否强制首次登录修改密码01
AUDIT_SWITCH是否启用审计功能01
ENABLE_ENCRYPT是否启用加密功能01
ALLOW_SVR_SIDE是否允许服务器端编程10(生产环境建议关闭)
DDL_AUTO_COMMITDDL语句是否自动提交10
REPLACE_ILLEGAL_CHAR是否替换非法字符01

配置方法

sql
-- 修改密码策略
SP_SET_PARA_VALUE(2, 'PWD_POLICY', 3);

-- 修改密码最小长度
SP_SET_PARA_VALUE(2, 'PWD_MIN_LEN', 12);

-- 启用审计功能
SP_SET_PARA_VALUE(2, 'AUDIT_SWITCH', 1);

-- 启用加密功能
SP_SET_PARA_VALUE(2, 'ENABLE_ENCRYPT', 1);

2. 网络安全参数

网络安全参数主要控制数据库的网络访问和连接。

核心网络安全参数

参数名描述默认值建议值
LISTENER_ADDRESS监听地址,限制数据库的访问来源0.0.0.0特定IP地址
PORT_NUM数据库服务端口5236非默认端口
MAX_SESSIONS最大会话数100根据实际需求调整
MAX_SESSIONS_PER_USER每个用户的最大会话数50根据实际需求调整
TCP_KEEPALIVE是否启用TCP keepalive11
TCP_KEEPIDLETCP keepalive空闲时间(秒)7200300
TCP_KEEPINTVLTCP keepalive间隔时间(秒)7560
TCP_KEEPCNTTCP keepalive重试次数93

配置方法

sql
-- 修改监听地址
SP_SET_PARA_VALUE(2, 'LISTENER_ADDRESS', '192.168.1.100');

-- 修改数据库服务端口
SP_SET_PARA_VALUE(2, 'PORT_NUM', 5237);

-- 修改最大会话数
SP_SET_PARA_VALUE(2, 'MAX_SESSIONS', 200);

3. 安全配置文件

DM数据库的安全配置主要存储在dm.ini、dmmal.ini、dmarch.ini等配置文件中,通过修改这些配置文件,可以配置数据库的安全参数。

配置文件安全

  • 限制配置文件的访问权限,只有root或dmdba用户可以访问
  • 定期备份配置文件
  • 记录配置文件的变更
  • 加密敏感配置信息

访问控制加固

1. 用户管理

用户管理是访问控制的重要组成部分,包括用户创建、密码管理、权限分配等。

最佳实践

  • 使用强密码策略,定期更换密码
  • 遵循最小权限原则,只授予必要的权限
  • 定期审计用户权限,移除不必要的权限
  • 禁用或删除默认用户
  • 限制特权用户的数量

示例

sql
-- 创建用户,使用强密码
CREATE USER dmuser IDENTIFIED BY "Dm@123456" PASSWORD_POLICY 3;

-- 授予最小必要权限
GRANT SELECT, INSERT, UPDATE, DELETE ON hr.employees TO dmuser;

-- 定期更换密码
ALTER USER dmuser IDENTIFIED BY "Dm@789012";

-- 锁定可疑用户
LOCK USER dmuser;

-- 删除不再使用的用户
DROP USER dmuser CASCADE;

2. 角色管理

角色是一组权限的集合,通过角色管理可以简化权限管理。

最佳实践

  • 创建基于职责的角色
  • 定期审计角色权限
  • 限制角色的分配
  • 使用系统预定义角色

示例

sql
-- 创建角色
CREATE ROLE hr_role;

-- 授予权限给角色
GRANT SELECT, INSERT, UPDATE, DELETE ON hr.employees TO hr_role;
GRANT SELECT ON hr.departments TO hr_role;

-- 授予角色给用户
GRANT hr_role TO dmuser;

-- 回收角色
REVOKE hr_role FROM dmuser;

-- 删除角色
DROP ROLE hr_role;

3. 权限管理

权限管理是访问控制的核心,包括系统权限和对象权限。

最佳实践

  • 遵循最小权限原则
  • 定期审计权限
  • 限制DBA权限的使用
  • 使用视图代替直接访问基表
  • 定期回收未使用的权限

示例

sql
-- 授予系统权限
GRANT CREATE TABLE, CREATE VIEW TO dmuser;

-- 授予对象权限
GRANT SELECT, INSERT, UPDATE, DELETE ON hr.employees TO dmuser;

-- 回收权限
REVOKE UPDATE, DELETE ON hr.employees FROM dmuser;

-- 审计权限
SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE = 'DMUSER';
SELECT * FROM DBA_TAB_PRIVS WHERE GRANTEE = 'DMUSER';

数据加密

1. 数据存储加密

数据存储加密是指对数据库中的数据进行加密存储,防止数据文件被窃取导致数据泄露。

配置方法

sql
-- 启用数据加密
SP_SET_PARA_VALUE(2, 'ENABLE_ENCRYPT', 1);

-- 创建加密表空间
CREATE TABLESPACE encrypt_ts DATAFILE '/dm/data/encrypt_ts.dbf' SIZE 100M ENCRYPT WITH 'AES128' USING 'encrypt_key';

-- 在加密表空间创建表
CREATE TABLE encrypt_table (id INT, name VARCHAR2(100)) TABLESPACE encrypt_ts;

2. 传输加密

传输加密是指对数据库客户端和服务器之间的通信进行加密,防止网络监听导致数据泄露。

配置方法

sql
-- 配置SSL参数
SP_SET_PARA_VALUE(2, 'SSL_FLAG', 1);
SP_SET_PARA_VALUE(2, 'SSL_KEYFILE', '/dm/ssl/server.key');
SP_SET_PARA_VALUE(2, 'SSL_CERTFILE', '/dm/ssl/server.crt');
SP_SET_PARA_VALUE(2, 'SSL_CA_CERTFILE', '/dm/ssl/ca.crt');

-- 重启数据库生效

3. 透明数据加密

透明数据加密(TDE)是指对数据库中的敏感数据进行加密,应用程序无需修改即可使用加密数据。

配置方法

sql
-- 创建加密密钥
CREATE ENCRYPT KEY encrypt_key WITH ALGORITHM 'AES128';

-- 创建加密表
CREATE TABLE sensitive_data (
  id INT,
  name VARCHAR2(100),
  credit_card VARCHAR2(16) ENCRYPT WITH encrypt_key
);

-- 插入数据
INSERT INTO sensitive_data VALUES (1, '张三', '1234567890123456');

-- 查询数据(自动解密)
SELECT * FROM sensitive_data;

漏洞修复

1. 定期更新数据库版本

定期更新数据库版本是修复安全漏洞的重要措施。

最佳实践

  • 关注DM数据库的安全公告
  • 定期更新数据库版本
  • 测试新版本的兼容性
  • 制定更新计划和回滚策略

2. 补丁管理

DM数据库会定期发布安全补丁,用于修复已知的安全漏洞。

最佳实践

  • 关注DM数据库的补丁公告
  • 定期安装安全补丁
  • 测试补丁的兼容性
  • 制定补丁安装计划和回滚策略

3. 漏洞扫描

定期进行漏洞扫描,发现和修复数据库的安全漏洞。

扫描工具

  • DM数据库自带的漏洞扫描工具
  • 第三方漏洞扫描工具
  • 专业的安全审计工具

扫描内容

  • 数据库版本和补丁状态
  • 安全参数配置
  • 用户和权限配置
  • 数据加密状态
  • 日志审计配置
  • 网络安全配置

日志审计加固

1. 审计配置

审计是安全加固的重要组成部分,通过审计可以监控数据库的各种操作和事件。

最佳实践

  • 启用审计功能
  • 配置合理的审计规则
  • 定期备份和清理审计记录
  • 分析审计记录,发现异常行为

配置方法

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

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

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

-- 创建审计规则
CREATE AUDIT POLICY security_audit ON SELECT, INSERT, UPDATE, DELETE;

-- 启用审计规则
AUDIT POLICY security_audit;

2. 日志监控

定期监控数据库的日志,发现和处理安全事件。

监控内容

  • 错误日志
  • 审计日志
  • 警告日志
  • 性能日志

监控工具

  • DM管理工具
  • 第三方监控工具
  • 自定义监控脚本

网络安全加固

1. 网络隔离

网络隔离是网络安全的重要措施,通过网络隔离可以限制数据库的访问来源。

最佳实践

  • 使用VLAN隔离数据库网络
  • 配置防火墙规则,限制数据库的访问
  • 使用VPN或专线连接数据库
  • 配置IP白名单,限制访问IP

配置方法

sql
-- 配置监听地址
SP_SET_PARA_VALUE(2, 'LISTENER_ADDRESS', '192.168.1.100');

-- 配置防火墙规则
# iptables -A INPUT -p tcp -s 192.168.1.0/24 --dport 5236 -j ACCEPT
# iptables -A INPUT -p tcp --dport 5236 -j DROP

2. 连接安全

连接安全是指保护数据库的连接安全,防止未授权的连接。

最佳实践

  • 使用加密连接
  • 限制连接数
  • 配置连接超时
  • 监控连接状态

配置方法

sql
-- 配置连接超时
SP_SET_PARA_VALUE(2, 'CONN_IDLE_TIME', 1800);

-- 配置最大连接数
SP_SET_PARA_VALUE(2, 'MAX_SESSIONS', 200);

-- 配置每个用户的最大连接数
SP_SET_PARA_VALUE(2, 'MAX_SESSIONS_PER_USER', 50);

备份恢复加固

1. 备份策略

备份策略是安全加固的重要组成部分,通过备份可以防止数据丢失。

最佳实践

  • 制定合理的备份策略
  • 定期备份数据库
  • 备份到安全的位置
  • 测试备份的可用性
  • 加密备份数据

示例

sql
-- 全量备份
BACKUP DATABASE FULL TO backup_file BACKUPSET '/dm/backup/full_backup';

-- 增量备份
BACKUP DATABASE INCREMENT TO backup_file BACKUPSET '/dm/backup/incremental_backup' BASE ON BACKUPSET '/dm/backup/full_backup';

-- 日志备份
BACKUP LOG TO backup_file BACKUPSET '/dm/backup/log_backup';

2. 恢复策略

恢复策略是指在数据丢失或损坏时,如何恢复数据库。

最佳实践

  • 制定详细的恢复预案
  • 定期测试恢复流程
  • 记录恢复步骤
  • 培训恢复人员

示例

sql
-- 全量恢复
RESTORE DATABASE FROM BACKUPSET '/dm/backup/full_backup';
RECOVER DATABASE FROM BACKUPSET '/dm/backup/full_backup';

-- 增量恢复
RESTORE DATABASE FROM BACKUPSET '/dm/backup/full_backup';
RECOVER DATABASE FROM BACKUPSET '/dm/backup/incremental_backup';
RECOVER DATABASE WITH ARCHIVEDIR '/dm/arch' UNTIL TIME '2023-01-01 00:00:00';

安全加固的监控和维护

1. 安全状态监控

定期监控数据库的安全状态,发现和处理安全问题。

监控内容

  • 安全参数配置
  • 用户和权限配置
  • 数据加密状态
  • 日志审计配置
  • 网络安全配置

监控工具

  • DM管理工具
  • 第三方安全监控工具
  • 自定义监控脚本

2. 安全审计

定期进行安全审计,评估数据库的安全状况。

审计内容

  • 安全参数配置审计
  • 用户和权限审计
  • 数据加密审计
  • 日志审计配置审计
  • 网络安全配置审计

审计方法

  • 使用DM自带的审计功能
  • 使用第三方安全审计工具
  • 聘请专业的安全审计人员

3. 安全维护

定期对数据库进行安全维护,确保数据库的安全性。

日常维护

  • 检查安全参数配置
  • 查看安全日志
  • 监控用户活动
  • 备份安全配置

定期维护

  • 更新数据库版本
  • 安装安全补丁
  • 进行安全扫描
  • 测试安全加固效果
  • 培训安全维护人员

安全加固的最佳实践

1. 制定安全策略

制定详细的安全策略,明确安全目标和措施。

安全策略的内容

  • 安全目标和原则
  • 安全组织结构
  • 安全责任分工
  • 安全措施和流程
  • 安全审计和评估
  • 安全培训和意识

2. 定期进行安全评估

定期进行安全评估,评估数据库的安全状况。

安全评估的内容

  • 安全参数配置评估
  • 用户和权限评估
  • 数据加密评估
  • 日志审计评估
  • 网络安全评估
  • 备份恢复评估

3. 培训安全意识

培训数据库管理员和开发人员的安全意识,提高安全意识。

培训内容

  • 数据库安全基础知识
  • 安全配置和管理
  • 安全事件处理
  • 安全最佳实践
  • 合规要求

4. 遵循合规要求

遵循等保、分级保护等合规要求,确保数据库的合规性。

合规要求的内容

  • 安全等级保护要求
  • 行业合规要求
  • 内部安全规范
  • 法律和法规要求

5. 持续改进

持续改进数据库的安全状况,适应新的安全威胁和挑战。

持续改进的内容

  • 跟踪安全威胁和漏洞
  • 更新安全策略和措施
  • 改进安全配置和管理
  • 加强安全监控和审计
  • 提高安全意识和培训

常见问题(FAQ)

Q1: 如何评估数据库的安全状况?

A1: 评估数据库安全状况的方法:

  • 进行安全扫描和审计
  • 检查安全参数配置
  • 审计用户和权限
  • 评估数据加密状态
  • 检查日志审计配置
  • 评估网络安全配置

Q2: 如何处理安全事件?

A2: 处理安全事件的步骤:

  • 确认安全事件
  • 隔离受影响的系统
  • 收集证据
  • 分析事件原因
  • 修复漏洞
  • 恢复系统
  • 报告事件
  • 改进安全措施

Q3: 如何选择合适的安全加固措施?

A3: 选择安全加固措施需要考虑以下因素:

  • 业务需求
  • 安全风险
  • 合规要求
  • 系统性能
  • 成本预算

Q4: 如何确保安全加固的效果?

A4: 确保安全加固效果的方法:

  • 制定详细的安全加固计划
  • 按照计划实施安全加固
  • 测试安全加固效果
  • 定期进行安全审计和评估
  • 持续改进安全措施

Q5: 如何平衡安全和性能?

A5: 平衡安全和性能的方法:

  • 只实施必要的安全措施
  • 优化安全参数配置
  • 定期监控安全对性能的影响
  • 根据业务需求调整安全级别
  • 采用分层安全策略

版本差异说明

版本主要变化
DM 7支持基本的安全加固功能,包括密码策略、审计功能等
DM 8增强了安全加固功能,支持更多的安全参数和加密功能
DM 8.1优化了安全加固性能和可靠性,支持更灵活的安全配置

在进行安全加固时,需要注意以下几点:

  • 制定详细的安全策略
  • 遵循最小权限原则
  • 定期进行安全评估和审计
  • 持续改进安全措施
  • 平衡安全和性能
  • 遵循合规要求

通过合理的安全加固,可以有效防止数据库的安全威胁,确保数据库的安全性和合规性,为业务提供可靠的数据服务。