达梦数据库等保评测-数据库安全问题整改项
一、身份鉴别类:
1. 密码策略:
查询当前密码策略:
select * from v$dm_ini where para_name ='PWD_POLICY';
修改策略(如修改为31):
sp_set_para_value(1,'PWD_POLICY',31);
设置系统默认口令策略。0: 无策略;1: 禁 止与用户名相同;2: 口令长度不小于 9;4: 至少包含一个大写字母(A-Z);8 :至少包含 一个数字(0-9);16:至少包含一个标点符 号(英文输入法状态下,除―和空格外的所有符号;若为其他数字,则表示配置值的和,如 3 =1+2,表示同时启用第 1 项和第 2 项策略。当 COMPATIBLE_MODE=1 时,PWD_POLICY 的实际值均为 0
2. 修改用户的密码有效期限
修改用户CCC的会话空闲时间为10分钟,尝试登陆次数为5次,密码有效期为100天,连续登陆失败后锁定10分钟,会话持续时间10分钟。
alter user "CCC" limit connect_idle_time 10, failed_login_attemps 5, password_life_time 100, password_lock_time 10, connect_time 10;
--查询账号资源限制
select d.username,
conn_idle_time as 会话空闲期分钟,
failed_num as 登陆失败次数 ,
life_time as 密码有效期天,
lock_time as 账号锁定期分钟,
allow_addr as 设定的ip登陆
from sysusers s ,
dba_users d
where s.id=d.user_id;
--账号修改时间
select b.USERNAME,a.MODIFIED_TIME as 上次修改日期 from SYS.SYSPWDCHGS a full join dba_users b on a.LOGINID=b.USER_ID
3.用户身份验证
达梦支持数据库身份验证模式和外部身份验证模式。数据库身份验证模式需要利用数据库口令,即在创建或修改用户时指定用户口令,用户在登录时输入对应口令进行身份验证;外部身份验证模式支持基于操作系统(OS)的身份验证、LDAP 身份验证和 KERBEROS 身份验证。具体设置方法参考《DM8安全管理》2.3章。
二、访问控制
1.权限分离
DM 数据库采用“三权分立”或“四权分立”的安全机制,将系统中所有的权限按照类型进行划分,为每个管理员分配相应的权限,管理员之间的权限相互制约又相互协助,从而使整个系统具有较高的安全性和较强的灵活性。可在创建 DM 数据库时通过建库参数 PRIV_FLAG 设置使用“三权分立”或“四权分立”安全机制,此参数仅在 DM 安全版本下提供,即仅 DM 安全版本提供“四权分立”安全机制。缺省采用“三权分立”安全机制。使用“三权分立”安全机制时,将系统管理员分为数据库管理员、数据库安全员和数据库审计员三种类型。在安装过程中,DM 数据库会预设数据库管理员账号SYSDBA、数据库安全员账号 SYSSSO 和数据库审计员账号 SYSAUDITOR,其缺省口令都与用户名一致。使用“四权分立”的安全机制时,将系统管理员分数据库管理员、数据库对象操作员、数据库安全员和数据库审计员四种类型,在“三权分立”的基础上,新增数据库对象操作员账户 SYSDBO,其缺省口令为 SYSDBO。
2.最小权限
新建用户,默认只拥有public角色,不可以创建数据库对象,需要通过其它用户对其授权才能对有权限的数据库对象进行数据操纵。
select * from dba_role_privs;
3.数据访问控制策略
数据库权限一般由 SYSDBA、SYSAUDITOR 和 SYSSSO 指定,也可以由具有特权的其他用户授予。对象权限一般由数据库对象的所有者授予用户,也可由 SYSDBA 用户指定,或者由具有该对象权限的其他用户授权。
查看帐号角色
select * from dba_role_privs或dba_tab_privs;
4.访问控制的粒度
数据库访问控制的粒度主体为用户(模式)级,客体为数据库表级。
5.强制访问控制
可以实现强制访问控制,参考《DM8安全管理》4.8章例子。
对用户的属性进行控制,包括密码策略、资源限制等
select SESS_PER_USER, FAILED_NUM, PWD_POLICY from sysusers;
三、安全审计
1.开启审计
Dm7开启:SYSDBA用户执行
sp_set_para_value(1,'ENABLE_AUDIT',1)
Dm8开启:SYSAUDITOR用户执行
SP_SET_ENABLE_AUDIT(1);
0:关闭;1:打开普通审计;2:打开普通审计和实时审计
查询当前的审计状态sql:
SELECT * FROM V$DM_INI WHERE PARA_NAME='ENABLE_AUDIT';
2.审计内容
打开全部语句审计
SP_AUDIT_STMT('ALL', 'NULL', 'ALL');
关闭全部审计
SP_NOAUDIT_STMT('ALL', 'NULL', 'ALL');
登录登出审计
SP_AUDIT_STMT('CONNECT', 'NULL', 'ALL');
取消登录登出审计
SP_NOAUDIT_STMT('CONNECT', 'NULL', 'ALL');
打开某模式的表审计
SP_AUDIT_STMT('SELECT TABLE', 'DMHR', 'ALL');
取消某模式的表审计
SP_NOAUDIT_STMT('SELECT TABLE', 'DMHR', 'ALL');
查看审计记录
select * from V$AUDITRECORDS;
3.审计日志文件管理
在极限情况 下,审计记录可能会因为磁盘空间不足而无法写入审计文件,最终导致系统无法正常运行。
审计的两个dm.ini参数:
AUDIT_FILE_FULL_MODE -静态,默认1,审计文件满后的处理方式,1:删除文件;2:不删除文件,也不添加审计记录
AUDIT_MAX_FILE_SIZE -动态,默认100M,审计文件的最大大小,以兆为单位。有效值范围(1~4096M)
定期备份日志文件后可以删除指定时间以前的日志:
SP_DROP_AUDIT_FILE('2019-12-6 16:30:00',0);
--修改审计日志大小 sysdba用户执行
4.审计保护
达梦是单进程多线程模式,中断审计线程会导致数据库进程直接关闭。
四、入侵防范
1.限制客户端登陆
可以通过sql设置用户登陆的ip地址,非设定的ip登陆时会报错提示无效的ip。
alter user "DMHR" allow_ip "127.0.0.1","223.254.7.206","223.254.7.*";
指定时间段内允许登陆。
alter user "DMHR" allow_datetime "2019-01-01" "00:00:00" to "2019-12-31" "23:59:59","MON" "09:00:00" to "FRI" "17:00:00";
还可以通过防火墙开通数据库端口访问权限,限制客户端登陆数据库。
查询用户是否设置IP白名单
select du.username,allow_addr from dba_users du,sysusers su where du.user_id=su.id;
2.漏洞修复
达梦会发布新版本来修复已知漏洞。
五、数据完整性和数据保密性
1.通信加密
ENABLE_ENCRYPT 取值 0、1 和 2 分别代表不加密、SSL 加密、SSL 认证,默认值为 1。COMM_ENCRYPT_NAME 参数用来指定消息通信的加密算法名,如果为空则不进行通信加密;如果给的加密算法名错误,则使用加密算法 DES_CFB。 DM 支持的加密算法名可以通过查询动态视图 V$CIPHERS 获取。
SP_SET_PARA_STRING_VALUE(2,'COMM_ENCRYPT_NAME','DES_CFB');
参考链接
https://eco.dameng.com/community/article/513402fe500dd56791f5c11b4f446b93
2.存储加密
全库加密:
只有在初始化建库时指定ENCRYPT_NAME参数,才能全库加密。
例如:初始化数据库时指定全库加密方式为AES256_CBC
./dminit path=/dmdata/dmdb encrypt_name=AES256_CBC
表空间加密:
如果指定了全库加密则,不能再指定表空间加密。
创建test表空间指定加密方式为AES256_ECB:
CREATE TABLESPACE test datafile 'test.dbf' size 50 ENCRYPT WITH AES256_ECB;
表中指定列加密:
如下对表的C2列加密:
CREATE TABLE TEST_ENCRYPT1(C1 INT, C2 INT ENCRYPT);
CREATE TABLE TEST_ENCRYPT2(C1 INT, C2 INT ENCRYPT WITH DES_ECB);
CREATE TABLE TEST_ENCRYPT5(C1 INT, C2 INT ENCRYPT WITH DES_ECB HASH WITH MD5 SALT);
查询全库加密信息
select CYT_ID,CYT_NAME from V$ciphers where CYT_ID in(SELECT PARA_VALUE FROM V$DM_INI a WHERE a.PARA_NAME='DB_BLOCK_ENC_ID')
六、数据备份恢复
1.本地备份恢复
物理备份:(联机备份需要开启归档)参考《DM8备份与还原.pdf》
backup database full backupset 'd:\bak_full_01';
还原:
dmrman工具中:
restore database 'c:\data\DAMNEG\dm.ini' from backupset 'd:\bak_full_01';
recover database 'c:\data\DAMNEG\dm.ini' from backupset 'd:\bak_full_01';
逻辑备份:参考《DM8_dexp和dimp使用手册.pdf》
导出数据:
dexp sysdba/123456789@127.0.0.1:5236 file=test.dmp tables=test
导入数据:
dimp sysdba/123456789@127.0.0.1:5236 file=test.dmp full=y
2.异地实时备份方式
达梦数据守护(实时主备,类似oracle dg)可以实现异地实时同步。
七、剩余信息保护
达梦提供了客体重用安全功能,来保证鉴别信息和敏感数据所在的存储空间被释放或重新分配前得到完全清除。
DM 提供了 INI 参数 ENABLE_OBJ_REUSE 用来控制是否启用客体重用功能,将该参数置为 1 表示启用客体重用,0 表示不启用,默认为 0。
查询:
select * from v$dm_ini where para_name ='ENABLE_OBJ_REUSE';
修改:(重启数据库生效)
sp_set_para_value(2,'ENABLE_OBJ_REUSE',1);
- 内存重用:
DM 从系统分配内存及释放内存时均对内存内容进行清零,以保证不利
用内存中前一进程所残留内容,且不泄漏 DM 的内容给其他进程。
- 文件重用:
DM 在系统生成、扩展及删除文件时,对文件内容也进行了清零。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 2 本地部署DeepSeek模型构建本地知识库+联网搜索详细步骤