写在前面
2026年等保测评,数据库加密这一项卡住了不少人。
以前是「建议配置」------截图证明你买了加密产品就行。现在是必须启用且实测验证:测评人员要上你的服务器,跑命令确认磁盘上的数据文件确实是密文。
更关键的一条新要求:Root 管理员在操作系统层面能不能直接看到明文数据文件?
如果能------不合格,直接扣分。
很多团队用的原生 TDE(MySQL Enterprise TDE、SQL Server TDE、Oracle Wallet)工作在数据库引擎层,确实把磁盘数据加密了。但 DBA 通过 mysqldump 导出数据时,走的是数据库引擎 → 合法连接 → 自动解密 → 导出明文。测评新规要求的不只是「磁盘加密」,还包括操作系统层面的文件级访问控制。
这篇文章解决两个问题:怎么自查能不能过 ,以及过不了怎么改。最后附一份可直接参考的部署脚本和踩坑记录。
一、原生 TDE vs 操作系统层 TDE:测评视角的差异
先搞清楚一个容易被忽略的区分,这直接决定你测评能不能过:
| 检查维度 | 原生 TDE(数据库引擎层) | 操作系统层 TDE(驱动层) |
|---|---|---|
| 工作位置 | 数据库引擎内部 | 文件系统之下,驱动层拦截 |
| 加密范围 | 每种数据库单独配置 | 不限库型,驱动统一拦截 |
| Root 直读数据文件? | 看到密文 ✓ | 看到密文 ✓ |
| DBA 通过数据库客户端查询? | 明文(合法连接自动解密) | 明文(业务需要,正常行为) |
| DBA 绕过数据库直拷文件? | 文件是密文 ✓ | 被驱动拦截,连读都读不了 |
| 勒索软件扫描数据目录? | 不防 | 非法进程无法访问受保护目录 |
| 防高权限账号拖库? | 不防(DBA 可查全部) | 驱动层拒绝非授权进程访问 |
| 密钥管理 | 通常同机存放(测评扣分项) | 独立密钥服务器 + HSM 可选 |
| 国密算法支持 | 多数不支持 | SM4/AES-256 双算法 |
一句话:原生 TDE 保护的是「磁盘上的数据」,操作系统层 TDE 在此基础上额外拦截「未经授权的操作系统访问」。等保 2026 新规检查的是后者------多层次防护,不能只有一层。
如果你的环境只有原生 TDE,不需要全部推翻。可以保持原有方案不动,在操作系统层叠加驱动加密作为第二道防线。两种方案互补,不冲突。
二、2026 等保三级数据库加密要求速览
对照这份表格,快速定位你现在的差距:
| 检查项 | 旧要求 | 2026 新要求 |
|---|---|---|
| 存储加密 | 建议配置加密措施 | 必须启用,Root 直读文件为密文 |
| 覆盖范围 | 核心业务数据库 | 所有含个人信息/重要数据的数据库(含从库、备份库、日志) |
| 密钥管理 | 无明确要求 | 密钥必须与数据物理分离,不能同机存放 |
| 凭据管理 | 无明确要求 | 数据库密码不得硬编码在配置文件或代码中 |
| 传输加密 | 建议 | 跨网段访问必须加密传输 |
| 运维访问 | 无要求 | 运维人员对敏感数据的访问需有权限控制和审计 |
三、数据库加密自查清单(带验证命令)
测评前逐项过一遍,别凭感觉------跑命令验证。
□ 1. 磁盘上的数据库文件是密文吗?
验证:root 直读数据文件
# strings /var/lib/mysql/your_db/*.ibd | head -20
# 能看到明文姓名/手机号/身份证号 → 不合格
# 全是乱码 → 存储加密正常
□ 2. 所有含业务数据的数据库都加密了?
注意:从库、备份库、归档日志也算
如果 MySQL 用原生 TDE、SQL Server 另配一套 → 管理成本高,容易遗漏
□ 3. 密钥是否与数据库物理分离?
验证:密钥管理服务是否部署在独立服务器上?
密钥管理员和数据库管理员是否不是同一个人?
如果都是"否" → 不合规
□ 4. 数据库密码是否还在配置文件里?
检查:application.yml / config.properties / .env / "密码汇总表.xlsx"
只要有一处明文密码 → 不合规
接入凭据管理系统后此项清零
□ 5. 加密状态和密钥操作是否有审计日志?
要求:谁启用了加密、谁修改了密钥、什么时候操作的------都要有记录可查
计分:
- 5 个全 √ → 准备到位,可以约测评
- 1-3 个 × → 高风险,测评前必须补齐
- 4-5 个 × → 大概率不通过,建议立即整改
四、操作系统层 TDE 部署实战
以下以 CentOS 7/8 环境为例。核心思路是:装驱动 → 配策略 → 验证,不需要在每个数据库里跑不同的 SQL。Ubuntu、Windows Server、麒麟、统信的操作逻辑一致。
4.1 安装驱动
bash
# 1. 确认内核版本(驱动需与内核匹配)
uname -r
# 示例:3.10.0-1160.el7.x86_64
# 2. 安装驱动包
rpm -ivh tde-driver-2.x.x-el7.x86_64.rpm
# 3. 加载驱动模块
modprobe tde_driver
# 4. 验证加载成功
lsmod | grep tde_driver
# 预期:tde_driver xxxxx 0
# 5. 设置开机自启
echo "tde_driver" >> /etc/modules-load.d/tde.conf
4.2 配置保护策略
在密钥管理控制台(KSP)中完成以下配置:
① 添加保护目录
| 数据库 | 需保护的目录 | 容易遗漏的目录 |
|---|---|---|
| MySQL | /var/lib/mysql/ |
binlog、redo log 目录 |
| Oracle | /oradata/、/oraflash/ |
归档日志、控制文件目录 |
| SQL Server | /var/opt/mssql/data/ |
备份目录(如单独存放) |
| PostgreSQL | /var/lib/pgsql/data/ |
WAL 日志目录 |
| 达梦 DM8 | /dm8/data/ |
归档目录、备份目录 |
| MongoDB | /var/lib/mongo/ |
journal 目录 |
② 进程签名授权
需要签名授权的进程(这些进程在保护目录中正常读写):
bash
which mysqld # MySQL/MariaDB
which oracle # Oracle
which sqlservr # SQL Server
which postgres # PostgreSQL
which mongod # MongoDB
# 以及你的业务应用程序路径
③ 加密算法选择
- 等保合规推荐:SM4 国密算法(国家密码局认证)
- 性能优先可选:AES-256 + CPU 硬件加速(AES-NI)
④ 权限规则
| 系统账号 | 保护目录内权限 | 说明 |
|---|---|---|
| 业务账号(appuser) | 全部读写 | 运行数据库和业务程序的用户 |
| root / 管理员 | 无权访问 | 无法读取、无法复制 |
| DBA 运维账号 | 仅复制(密文) | 可备份,但不可读明文 |
| 其他未授权 | 禁止一切操作 | 勒索软件、黑客工具一律拦截 |
4.3 存量数据加密
bash
# 首次部署在有数据的系统上------
# 需在维护窗口期执行初次加密
# 1. 停止数据库写入(或进入只读模式)
# 2. 在 KSP 控制台发起「存量加密」任务
# 3. 监控进度(KSP 控制台显示百分比)
# 4. 加密完成后恢复业务写入
# 参考指标:
# 加密速度:驱动层约 45Gb/s(受磁盘 I/O 实际性能影响)
# 性能影响:部署后日常读写 < 3%(SM4 硬件加速)
踩坑 1:初次加密务必在维护窗口期执行。加密过程中有写入可能导致部分数据页加密不一致。加密完成后新写入自动加密,无需额外操作。
踩坑 2 :别漏了备份脚本的签名。很多团队部署 TDE 后备份失败------因为
xtrabackup、mysqldump触发的文件复制被驱动拦截。备份工具进程也需要签名授权。
4.4 验证加密生效
bash
# 核心验证:root 直读数据文件
strings /var/lib/mysql/your_db/user_data.ibd | head -30
# 预期:全是乱码/不可读字符
# 能看到明文 → TDE 未生效,排查保护策略
# 进阶验证:root 尝试复制数据文件
cp /var/lib/mysql/your_db/user_data.ibd /tmp/test_copy.ibd
strings /tmp/test_copy.ibd | head -30
# 同样应全为密文
# 业务验证:应用正常读写
mysql -u appuser -p -e "SELECT COUNT(*) FROM your_db.user_data;"
# 返回正常结果 → TDE 对业务透明
踩坑 3 :不要用
SELECT *验证 TDE。通过数据库连接查询走的是已签名授权的数据库进程 → TDE 自动解密 → 你必然看到明文。这是正确的设计。测评验证的是「绕过数据库,操作系统层直读文件」这条路径。
4.5 密钥管理------独立部署
bash
# 在独立密钥管理服务器上安装 KSP(不要装在数据库服务器上)
# 1. 安装
rpm -ivh ksp-2.x.x-el7.x86_64.rpm
# 2. 初始化密钥库
ksp-admin init --algorithm SM4 --hsm /dev/hsm0 # 如有 HSM
# 3. 配置自动备份
ksp-admin backup-policy --type auto --interval daily \
--target /secure_backup/ --remote nfs://offsite-backup/keys/
# 4. 在数据库服务器上配置 KSP 地址
# 编辑 /etc/tde/tde.conf:
# ksp_server = 192.168.10.50:8443
# ksp_cert = /etc/tde/ksp_client.crt
测评关键点:KSP 与数据库不在同一台服务器 → 密钥与数据物理隔离 ✓。如有 HSM → 根密钥永不出机 ✓。
五、测评最容易翻车的 3 个问题
翻车 1:以为原生 TDE 「够用了」
测评人员问:「Root 能不能直接读数据文件?」你答:「能,但读到的是密文。」这没错------原生 TDE 确实加密了磁盘文件。但接着问:「DBA 能不能用 mysqldump 导出数据?」------能,因为导出走的是数据库引擎。
2026 新规要求的是多层次防护 ,不仅看磁盘加密,还看权限路径。操作系统层 TDE 在驱动层额外拦一道:非授权进程(包括 root 发起的 cp、scp、tar)直接拒绝访问。两层叠加,测评才稳。
翻车 2:只加密了主库
从库、备份库存的数据和主库一样。主库 MySQL 用原生 TDE、从库 SQL Server 另配一套------两套方案、两次配置,更容易遗漏。
操作系统层 TDE 不限库型,所有服务器统一装驱动、统一配策略,从库不用单独折腾。一次部署覆盖 MySQL、Oracle、SQL Server、PostgreSQL、达梦、金仓、MongoDB。
翻车 3:密钥备份策略缺失
证书 / keyring / keystore 和数据库在同一台服务器?备份只有一份?没有异地容灾?
测评会检查你的密钥备份策略。最低要求:两份备份,分两处存放。独立的密钥管理平台(KSP)支持自动备份策略配置 + NFS 异地存储,如有 HSM 则根密钥永不出机。
六、数据库加密不止「存的时候加密」
自查清单第 4 项经常被忽略:数据库密码还在配置文件里?
很多团队存加密做完了,但 application.yml 里数据库密码还是明文写死。这在 2026 新规中也是扣分项------凭据管理和存储加密同等重要。
完整的数据库安全防护是三层:
| 防护层 | 做什么 | 等保对应条款 |
|---|---|---|
| 存储层 | 数据落盘即密文,Root/勒索/非法进程无法访问 | 数据存储加密 |
| 传输+访问层 | 传输加密 + 运维脱敏(DBA 排查问题但看不到真实数据) | 传输加密 / 访问控制 / 安全审计 |
| 凭据层 | 数据库密码从配置文件消失,动态下发,定期自动轮换 | 密钥管理 / 凭据安全 |
三个层次对应的产品能力可以分别部署,也可以在一个统一管理平台下集中管控。部署后日常运维几乎零成本。
七、实施路径总结
| 步骤 | 做什么 | 耗时参考 |
|---|---|---|
| 1 | 跑一遍自查清单(先搞清楚缺口在哪) | 10 分钟 |
| 2 | 在所有数据库服务器上安装 TDE 驱动 | 30 分钟 |
| 3 | 在 KSP 控制台配置保护策略 + 进程签名 | 30 分钟 |
| 4 | 维护窗口期执行存量数据加密 | 1-2 小时 |
| 5 | Root 直读文件验证密文状态 | 5 分钟 |
| 6 | 接入凭据管理系统消除配置文件明文密码 | 30 分钟 |
| 7 | 部署数据库加密网关实现传输加密和运维脱敏(按需) | 30 分钟 |
| 8 | 配置密钥自动备份 + 异地容灾 | 10 分钟 |
完成这 8 步,等保三级数据库加密部分基本就位。
如果这篇文章对你有帮助,欢迎点赞、收藏、关注。「更多技术分享见作者主页」
本文部署流程在 CentOS 7/8 + TDE 2.x 环境下验证通过。支持 MySQL、Oracle、SQL Server、PostgreSQL、达梦、人大金仓、MongoDB 等主流及国产数据库。