透明数据加密 TDE 的原理与适用版本
TDE 的加解密位置(引擎侧透明)、证书/密钥机制、开启后对备份还原的影响,以及哪些引擎版本具备 TDE、开启的代价。
结论先行
TDE(Transparent Data Encryption)在引擎侧对整个数据库文件透明加解密:应用与 SQL 无感,落盘的 .mdf/.ndf 是密文。它的价值在介质防护(磁盘/备份文件被偷走后读不出明文),不是身份防护(有权限进引擎的人照样看到明文——那是 Always Encrypted 的领域)。TDE 是付费版本的特性,开发/测试用的免费版本不具备(以条目页为准)。
原理分层
- 数据库加密密钥(DEK):真正加密数据库数据页,每个库一个,由证书(或非对称密钥)保护。
- 证书 / 主密钥:保护 DEK;证书本身可放引擎证书库或 HSM 里保管。
- 引擎打开数据库时用证书解开 DEK,在内存中加解密数据页——应用层完全无感,故称「透明」。
开启路径(T-SQL)
USE master;
-- 1. 建立(或存在)主密钥,用于保护证书
CREATE MASTER KEY ENCRYPTION BY PASSWORD = N'强密码';
-- 2. 建证书
CREATE CERTIFICATE SalesTdeCert WITH SUBJECT = N'TDE cert for Sales';
-- 3. 开启数据库加密(DEK 不存在时自动创建,用证书加密保护)
ALTER DATABASE Sales SET ENCRYPTION ON;
图形方式:SSMS 管理工具条目 中 安全性 → 证书(Certificate)/ 数据库加密相关节点操作。
证书/主密钥的保管直接决定「偷磁盘」防护的有效性——证书泄露等于白加密,务必按密钥管理要求存放(独立存储、权限最小化)。
开启后的连带影响(必须知道)
| 影响 | 说明 |
|---|---|
| 备份还原 | 还原 TDE 库必须同时还原证书,否则还原后库不可用 |
| 性能 | 加解密走引擎,整体有 IOPS/CPU 开销,大库有感 |
| 跨版本 | 加密属性随备份走,还原到高版本引擎需证书跟随 |
| 迁移 | 分离/附加、镜像等高级特性受 TDE 状态约束 |
TDE 开启是不可轻易关闭的动作:关闭前必须有备份兜底,且关闭过程会重加密/解密全部文件,耗时。
版本归属
TDE 的能力归属付费版本;免费版本(如 SQL Server 2025 Developer 这类开发用途条目)不开放 TDE(以各条目页特性说明为准)。若你的场景是免费版本,介质防护只能靠「文件权限 + 备份加密」组合近似达成。与 Always Encrypted 的分工另见「Always Encrypted」相关条目,SQL Server 产品族条目 中各版本特性以条目页为准。