摘要
金融信创商用密码应用安全性评估(密评)+ 等级保护三级双合规,是达梦数据库落地的硬门槛。容器化部署后更是踩坑重灾区:密钥明文写 YAML、传输裸奔、审计日志重启就丢、权限一锅粥、加密用 AES 不算国密,很多团队整改两三次都过不了测评。
本文基于金融项目双测评实测通过的落地方案,严格对标 GB/T 22239-2019 等保三级 + GM/T 0054-2018 密评三级 双标准,从 K8s 平台层、达梦数据库层、密钥全生命周期管理三层深度加固,覆盖国密身份认证、SM4 透明存储加密、国密 SSL 传输加密、SM3 审计防篡改、三权分立权限收敛全链路。所有 SQL、YAML 配置均可直接复制,照着做一次性通过双测评。
政务选金仓,金融选达梦;MySQL 迁移选金仓,Oracle 迁移选达梦。全文无空泛理论,所有配置均经过测评机构现场验证,生产合规可用。
一、先搞懂:容器化达梦双合规到底查什么
📌 核心结论:容器化不是法外之地,等保 + 密评双标准下,数据库作为核心数据载体,要求只会比物理机更严。身份鉴别、访问控制、安全审计、传输加密、存储加密、密钥管理六项是一票否决项。
1.1 容器化场景的额外合规风险
相比物理机部署,K8s 场景多了三类高频扣分点:
- 密钥易泄露:K8s 原生 Secret 仅 Base64 编码,等于明文存储密钥,密评直接不通过
- 审计易断档:Pod 重建后审计日志丢失,追溯不连续,不符合不可篡改、可追溯要求
- 权限易失控:默认 root 运行、默认 ServiceAccount 权限过大、网络无边界,不符合最小权限原则
1.2 双测评六大必查核心项
| 类别 | 等保三级要求 | 密评三级要求 |
|---|---|---|
| 身份鉴别 | 口令复杂度、登录失败锁定、三权分立 | 基于国密算法的身份认证,支持双因素 |
| 访问控制 | 最小权限、角色分离、网络访问控制 | 密码技术保障访问控制有效性 |
| 安全审计 | 全操作审计、留存 180 天、不可篡改 | 审计日志完整性保护,国密签名防篡改 |
| 传输安全 | 传输加密、防止窃听篡改 | 国密算法传输加密,SM2/SM4 体系 |
| 存储安全 | 敏感数据加密、备份保护 | 国密算法存储加密,密钥与数据分离 |
| 密钥管理 | - | 全生命周期管控,硬件存储,定期轮换 |
二、双测评控制点全景映射表(对照查分用)
| 控制点 | K8s 平台层落地措施 | 达梦 DM9 数据库层落地措施 | 测评权重 |
|---|---|---|---|
| 身份鉴别 | RBAC 最小权限、ServiceAccount 身份绑定、禁止匿名访问 | SM2 国密身份认证、三权分立账号、口令复杂度策略、登录失败锁定 | ⭐⭐⭐⭐⭐ |
| 访问控制 | NetworkPolicy 网络微隔离、SecurityContext 权限收敛、Secret 加密管理 | 角色权限分离、列级访问控制、IP 白名单、高危操作限制 | ⭐⭐⭐⭐⭐ |
| 安全审计 | K8s 审计日志开启、集中留存 180 天 | 全操作审计、SM3 签名防篡改、独立 PVC 持久化、留存 180 天 + | ⭐⭐⭐⭐⭐ |
| 传输机密性 | 国密网关加密、Service 加密访问 | 国密 SSL 通信、SM4 应用层消息加密、全链路密文传输 | ⭐⭐⭐⭐⭐ |
| 存储机密性 | 存储卷加密、Secret 加密存储、镜像加密 | SM4 透明数据加密 (TDE)、敏感列级加密、备份数据加密 | ⭐⭐⭐⭐⭐ |
| 数据完整性 | 配置文件签名、镜像签名校验 | 审计日志 SM3 摘要、重要数据完整性校验、备份签名校验 | ⭐⭐⭐⭐ |
| 密钥管理 | 对接国密 KMS、密钥不落地明文 | 密钥与数据分离、外部 KMS 统一管理、支持密钥轮换 | ⭐⭐⭐⭐⭐ |
| 备份恢复 | PVC 快照、数据保护机制 | 全量 + 增量备份、备份加密、定期恢复演练 | ⭐⭐⭐⭐ |
💡 双测评高分技巧:以上控制点全部落地,补充管理制度、应急预案、定期密码安全评估,基本可以稳过三级。其中密钥管理、审计防篡改、三权分立是最容易丢分的项,必须做扎实。
三、第一层:K8s 平台层密评加固(底座合规)
平台层是双合规的底座,这层做不好,数据库层再加固也没用。
3.1 身份与权限:最小权限原则
- 专用 ServiceAccount:禁止使用默认 ServiceAccount,单独创建数据库专用账号,关闭自动挂载 Token,防止容器内越权访问 API Server。
yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: dmdb-sa
namespace: dmdb
automountServiceAccountToken: false
- RBAC 权限收敛:仅授予运维必要的最小权限,禁止集群管理员账号直接操作业务数据库。
3.2 网络层:微隔离 + 传输加密
- NetworkPolicy 强制访问控制:默认拒绝所有入站,仅白名单放通业务网段,防止横向渗透。
yaml
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: dmdb-miping-policy
namespace: dmdb
spec:
podSelector:
matchLabels:
app: dmdb
policyTypes:
- Ingress
- Egress
ingress:
- from:
- namespaceSelector:
matchLabels:
project: business-app
ports:
- protocol: TCP
port: 5236
egress:
- to:
- namespaceSelector: {}
podSelector:
matchLabels:
k8s-app: kube-dns
ports:
- protocol: UDP
port: 53
- 跨节点传输加密:应用到数据库强制国密加密连接,跨节点流量通过国密加密网关封装,禁止明文跨节点传输。
3.3 密钥存储:告别明文 Secret
K8s 原生 Secret 只是 Base64 编码,不属于加密存储,密评不认可。必须二选一:
- 推荐方案:对接国密密钥管理系统(KMS)/ 密码机,数据库密钥统一由 KMS 管理,容器运行时动态拉取,密钥不落地
- 轻量方案:使用 SealedSecret 等加密工具,Secret 落盘为密文,仅集群内解密使用
⚠️ 双测评红线:绝对不能把数据库加密密钥、管理员密码明文写在 YAML、ConfigMap 里,Base64 编码不算加密。
3.4 运行时安全:收敛系统权限
达梦容器必须以 dmdba 非 root 用户运行,丢弃所有多余系统能力:
yaml
securityContext:
runAsUser: 5236
runAsGroup: 5236
fsGroup: 5236
runAsNonRoot: true
readOnlyRootFilesystem: true
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
add:
- IPC_LOCK
seccompProfile:
type: RuntimeDefault
3.5 镜像与部署合规
- 镜像必须经过漏洞扫描,高危漏洞清零
- 生产镜像必须经过签名验证,只允许运行可信镜像
- 所有配置变更走审批流程,操作全留痕可审计
四、第二层:达梦 DM9 数据库层国密全链路加固
达梦 DM9 企业版原生支持完整国密算法体系(SM2/SM3/SM4),内置三权分立、透明加密、审计签名等能力,完全满足密评三级要求。
4.1 身份鉴别:国密认证 + 三权分立
1. 三权分立账号体系(双测评必查)
达梦原生支持三权分立,三个管理员账号相互独立、相互制约,权限完全隔离。
| 角色 | 默认账号 | 核心职责 | 权限边界 |
|---|---|---|---|
| 系统管理员 | SYSDBA | 实例运维、对象创建、性能调优 | 无权管理用户权限、无权查看审计日志 |
| 安全管理员 | SYSSSO | 用户管理、权限分配、安全策略、加密配置 | 无权访问业务数据、无权修改系统配置 |
| 审计管理员 | SYSAUDITOR | 审计策略配置、审计日志管理、违规分析 | 无权修改业务数据、无权调整系统参数 |
2. 口令安全策略(SYSSSO 配置)
sql
-- 口令复杂度:大小写+数字+特殊字符
SP_SET_PARA_VALUE(1, 'PWD_POLICY', 7);
-- 最小长度12位
SP_SET_PARA_VALUE(1, 'PWD_MIN_LEN', 12);
-- 口令有效期90天
SP_SET_PARA_VALUE(1, 'PWD_MAX_AGE', 90);
-- 连续5次登录失败锁定
SP_SET_PARA_VALUE(1, 'FAILED_LOGIN_ATTEMPS', 5);
-- 锁定时间30分钟
SP_SET_PARA_VALUE(1, 'PASSWORD_LOCK_TIME', 30);
3. 国密 SM2 身份认证
支持基于 SM2 证书的双向身份认证,替代传统口令,满足强身份鉴别要求:
ini
# dm.ini 配置
ENABLE_ENCRYPT = 1
COMM_ENCRYPT_NAME = 'SM4'
SSL_CERT_FILE = 'server_sm2.crt'
SSL_KEY_FILE = 'server_sm2.key'
SSL_CA_FILE = 'root_sm2.crt'
客户端使用 SM2 客户端证书连接,实现双向国密身份认证。
4.2 传输加密:全链路国密加密
达梦支持两种国密传输加密方式,推荐应用层消息加密,配置简单、性能损耗小。
方案一:应用层消息加密(推荐,零改造)
sql
-- 服务端开启SM4国密通信加密,客户端自动适配
SP_SET_PARA_VALUE(2, 'COMM_ENCRYPT_NAME', 'SM4');
✅ 优势:应用层数据包 SM4 加密,无需 SSL 证书,业务代码零改造,性能损耗 < 3%,完全满足密评传输机密性要求。
方案二:国密 SSL 传输加密
ini
# dm.ini 配置
SSL = 1
SSL_CIPHERS = 'SM2-SM3-SM4'
适合有双向认证强需求的场景,配合国密证书使用。
4.3 存储加密:SM4 透明数据加密(TDE)
敏感数据落盘必须加密,防止物理硬盘泄露导致数据失密。达梦支持全库级、表空间级 SM4 透明加密,业务零改造。
1. 表空间级透明加密
sql
-- 由SYSSSO创建SM4加密表空间
CREATE TABLESPACE encrypt_ts
DATAFILE 'encrypt_ts01.dbf' SIZE 10240
ENCRYPT WITH SM4;
-- 敏感业务表建在加密表空间,落盘自动SM4加密
CREATE TABLE user_info (
id INT PRIMARY KEY,
id_card VARCHAR(18),
acct_no VARCHAR(32),
name VARCHAR(50)
) TABLESPACE encrypt_ts;
✅ 优势:透明加解密,业务完全无感知,性能损耗 < 5%,支持索引加密、日志加密。
2. 列级加密补充
极高敏感字段(账号、身份证)可叠加列级加密,双重防护:
sql
-- 敏感字段SM4加密存储
CREATE TABLE user_sensitive (
id INT PRIMARY KEY,
acct_enc VARBINARY(256)
);
3. 重做日志与归档加密
ini
# dm.ini 开启重做日志加密
RLOG_ENCRYPT_NAME = 'SM4'
重做日志、归档日志同步国密加密,全链路落盘都是密文。
4.4 数据完整性:SM3 摘要校验
对重要业务数据、审计日志计算 SM3 摘要,防止篡改:
sql
-- SM3哈希计算,用于数据完整性校验
SELECT SF_HASH(3, 敏感字段) FROM 重要表;
3 代表 SM3 算法,审计日志、备份文件必须附带 SM3 摘要,验证时比对一致即可确认完整未篡改。
五、核心硬骨头:密钥全生命周期管理方案
密钥管理是密评三级的核心扣分点,必须严格遵循密钥与数据分离、专人管控、全生命周期可审计原则。
5.1 三级密钥架构
- 主密钥:存储在国密密码机 / KMS 中,用于加密工作密钥,永不落地明文
- 工作密钥:由主密钥加密保护,用于表空间 / 列数据加密,可定期轮换
- 数据密钥:具体表 / 列的加密密钥,由工作密钥加密存储在数据库中
5.2 全生命周期管控要求
| 生命周期阶段 | 密评三级要求 | 达梦落地方式 |
|---|---|---|
| 密钥生成 | 真随机数生成,符合 GM/T 0005 | 国密 KMS / 密码机生成,禁止软件伪随机 |
| 密钥分发 | 加密传输,身份认证 | SM2 加密分发,双人复核 |
| 密钥存储 | 硬件存储,不落地明文 | KMS / 密码机硬件存储,数据库只存密文 |
| 密钥使用 | 权限控制,操作全审计 | 仅安全管理员可操作,全流程审计 |
| 密钥更新 | 定期 + 事件触发轮换 | 每季度自动轮换,泄露时立即更换 |
| 密钥归档 | 加密归档,可追溯 | 历史密钥加密归档,双人授权访问 |
| 密钥销毁 | 安全销毁,不可恢复 | KMS 安全销毁,所有副本同步销毁 |
5.3 K8s 场景适配方案
- 数据库启动时通过 Sidecar 从 KMS 动态拉取密钥,注入内存,不写入磁盘
- Pod 销毁时自动清除内存密钥,不留痕迹
- 密钥轮换由 KMS 统一调度,数据库热加载,无需重启实例
⚠️ 密评否决项:密钥明文存储在数据库本地、配置文件、镜像中,直接不通过。
六、审计合规:SM3 签名防篡改 + 持久化不丢档
审计日志是双测评必查项,要求可追溯、不可篡改、留存 180 天以上。
6.1 全量审计开启(SYSAUDITOR 操作)
sql
-- 开启全局审计
SP_SET_ENABLE_AUDIT(1);
-- 审计登录登出
SP_AUDIT_LOGIN('ALL', 'SUCCESS');
SP_AUDIT_LOGIN('ALL', 'FAIL');
-- 审计所有DDL操作
SP_AUDIT_STMT('ALL', 'ALL', 'ALL');
-- 审计敏感表的增删改操作
SP_AUDIT_OBJECT('INSERT', 'ALL', 'SYSDBA', 'USER_INFO', 'ALL');
SP_AUDIT_OBJECT('UPDATE', 'ALL', 'SYSDBA', 'USER_INFO', 'ALL');
SP_AUDIT_OBJECT('DELETE', 'ALL', 'SYSDBA', 'USER_INFO', 'ALL');
6.2 审计日志防篡改(密评加分项)
ini
# dm.ini 审计日志配置
AUDIT_FILE_ENCRYPT = 1
AUDIT_FILE_ENCRYPT_KEY = '密钥标识由KMS管理'
AUDIT_FILE_SIGN = 1
AUDIT_FILE_SIZE = 1024
AUDIT_MAX_FILES = 180
- 审计日志 SM4 国密加密存储
- 每条日志附带 SM3 数字签名,篡改即可识别
- 单文件 1G,最多保留 180 个文件,满足 180 天留存要求
6.3 K8s 场景审计连续性保障
- 审计日志独立 PVC 挂载,Pod 重建不丢失
- Sidecar 实时同步到集中审计平台,双份留存
- 审计日志仅审计管理员可访问,其他账号无权限
- 日志平台开启写保护,只追加不修改删除
七、权限深度收敛:从平台到数据库全链路最小权限
7.1 数据库端权限收敛
- 业务账号最小权限:仅授予必要的表权限,禁止 DBA、RESOURCE 角色跑业务
- 敏感列级权限:身份证、账号等敏感字段,仅授权特定账号访问
- 高危操作管控:DROP TABLE、TRUNCATE、ALTER SYSTEM 等高危操作,仅 SYSDBA 可执行
- IP 白名单限制:管理员账号仅允许从运维网段登录,禁止业务网段访问
7.2 K8s 端权限收敛
- 数据库 Pod 禁止挂载宿主机敏感目录
- 禁止特权容器、禁止权限提升
- 运维操作必须通过堡垒机,禁止直接 kubectl exec
- 所有配置变更走 GitOps 流程,留痕可审计
八、避坑红线:10 个双测评常见致命错误
⚠️ 红线 1:用 Base64 编码的 Secret 存密钥,当加密用
- 后果:密评直接不通过,Base64 是编码不是加密,等于明文存储
- 整改:对接国密 KMS,密钥硬件存储,不落地明文
⚠️ 红线 2:用 AES、RSA 等非国密算法凑数
- 后果:密评要求使用国密算法,非国密不算有效密码应用
- 整改:全部替换为 SM2/SM3/SM4 国密算法体系
⚠️ 红线 3:三权分立形同虚设,SYSDBA 一个账号走天下
- 后果:权限分离项直接丢分,不符合等保、密评身份鉴别要求
- 整改:三个管理员账号独立设置,权限严格隔离,各管各的
⚠️ 红线 4:审计日志存在容器里,重启就丢
- 后果:审计追溯断档,等保、密评都不通过
- 整改:审计日志独立 PVC 持久化,集中留存 180 天以上
⚠️ 红线 5:只做存储加密,不做传输加密
- 后果:传输过程明文裸奔,不符合传输机密性要求
- 整改:全链路国密加密,传输、存储双加密
⚠️ 红线 6:密钥自己生成存在数据库里
- 后果:密钥管理不符合要求,数据与密钥同存等于没加密
- 整改:密钥与数据分离,独立 KMS / 密码机统一管理
⚠️ 红线 7:审计日志可修改、可删除
- 后果:不符合审计数据完整性、不可篡改要求
- 整改:开启加密 + 数字签名,只追加不修改删除
⚠️ 红线 8:密钥从不轮换,一套用到底
- 后果:不符合密钥生命周期管理要求
- 整改:建立密钥轮换机制,定期轮换,泄露时立即更换
⚠️ 红线 9:root 用户运行数据库容器
- 后果:不符合最小权限原则,等保访问控制项扣分
- 整改:切换为 dmdba 非 root 用户运行,配置 securityContext 强制校验
⚠️ 红线 10:只做技术加固,没有管理制度
- 后果:等保、密评不仅查技术,还要查管理,制度缺失同样不通过
- 整改:配套密码安全管理制度、密钥管理细则、应急预案、定期评估机制
九、自测验证清单:照着查,提前知道能不能过
加固完成后,按以下清单自测,全部通过基本可以稳过双测评。
| 检测项 | 检测方法 | 达标标准 |
|---|---|---|
| 三权分立 | 验证三个管理员账号权限相互隔离 | SYSDBA 看不到审计日志,SYSAUDITOR 改不了业务数据 |
| 国密传输 | 抓包数据库端口流量 | 无明文 SQL 与数据,使用国密算法加密 |
| 存储加密 | 查看敏感表空间加密属性 | 敏感表使用 SM4 透明加密,落盘为密文 |
| 密钥管理 | 核查密钥存储位置、生成方式 | 密钥存储在 KMS / 密码机,不落地明文,全生命周期可审计 |
| 审计完整性 | 检查审计日志签名、留存时间 | 日志不可篡改,留存≥180 天,覆盖所有关键操作 |
| 口令策略 | 测试弱口令是否可创建 | 无法创建弱口令,复杂度、有效期、锁定策略生效 |
| 权限最小化 | 核查业务账号权限 | 无 DBA 权限,仅业务必要权限 |
| 网络隔离 | 非授权网段尝试连接数据库 | 连接被拒绝,仅白名单可访问 |
| 非 root 运行 | 进入容器执行 id 命令 | UID 不为 0,运行用户为 dmdba |
| 管理制度 | 检查制度文档 | 有密码安全管理、密钥管理、应急演练等制度文件 |
总结
达梦 DM9 在 K8s 环境下过等保 + 密评双三级,核心不是堆加密功能,而是全链路符合国密要求、密钥管理闭环、权限最小化、审计可追溯。从 K8s 底座到达梦数据库内核,再到密钥管理体系,每一层都对标双标准做实,才能一次性顺利通过测评。
双合规不是一次性工作,而是持续运营的过程。技术加固只是基础,配套的管理制度、定期巡检、密钥轮换、应急演练同样重要。
政务选金仓,金融选达梦;MySQL 迁移选金仓,Oracle 迁移选达梦。
📚 专栏推荐:专注 SpringBoot3 + 人大金仓 + 达梦信创实战,持续输出生产级部署、性能调优、安全合规、避坑指南干货,关注不迷路。
觉得文章有用的话,欢迎点赞、收藏、关注三连,后续更新更多信创数据库云原生落地的硬核内容。