透明数据加密(TDE)
本文档介绍透明数据加密(Transparent Data Encryption,TDE)的配置方法与使用限制。
能力概览
TDE 用于保护 Doris 持久化数据的静态存储安全。TDE 由以下几层密钥协作完成:
- Root Key:保存在 KMS 中,用于保护 Doris 内部主密钥。
- Master Key:由 Doris 生成并保存在元数据中,用 Root Key 加密。
- Data Key:用于具体数据加密,由主密钥派生或保护。
当前支持使用 aws_kms 作为根密钥提供方。
使用边界
使用 TDE 时,请注意以下限制:
- 根密钥提供方使用
aws_kms。 - FE 级参数
doris_tde_algorithm决定新建内部表默认采用的加密算法。 - 修改
doris_tde_algorithm不会自动改写已有表的存量数据。
前置条件
1. 准备 AWS KMS Key
你需要准备一个可用的 AWS KMS Key,并获取以下信息:
doris_tde_key_iddoris_tde_key_endpointdoris_tde_key_regiondoris_tde_key_provider=aws_kms
首次启用时,上述四项必须完整配置。只配置其中一部分会导致 FE 初始化根密钥失败。
2. 准备 AWS 访问凭证
支持两种凭证来源:
- 通过环境变量
DORIS_TDE_AK/DORIS_TDE_SK注入 Access Key 和 Secret Key。 - 通过 AWS Instance Profile 获取凭证。
相关凭证至少应具备以下 KMS 权限:
kms:Encryptkms:Decryptkms:GenerateDataKeykms:DescribeKey
FE 配置
编辑 conf/fe.conf:
doris_tde_key_provider = aws_kms
doris_tde_key_id = <your-kms-key-id>
doris_tde_key_endpoint = https://kms.us-east-1.amazonaws.com
doris_tde_key_region = us-east-1
doris_tde_algorithm = AES256
doris_tde_rotate_master_key_interval_ms = 2592000000
doris_tde_check_rotate_master_key_interval_ms = 300000
然后为 FE 进程注入 AWS 凭证,例如:
export DORIS_TDE_AK=your_access_key
export DORIS_TDE_SK=your_secret_key
完成配置后重启 FE。
doris_tde_algorithm 的默认值为 PLAINTEXT。如果希望新建表启用数据加密,需要显式设置为 AES256 或 SM4。
首次初始化成功后,Root Key 信息会写入 Doris 元数据。后续如果只是修改 fe.conf 中的 doris_tde_key_* 参数,并不会自动把已有系统切换到新的 Root Key;更换 KMS Key 时应使用本文后面的 ADMIN ROTATE TDE ROOT KEY。
推荐使用流程
建议按以下顺序启用 TDE:
- 在 AWS KMS 中准备可用的 KMS Key,并确认 FE 具备访问该 KMS Key 的凭证。
- 在 FE 环境中注入
DORIS_TDE_AK/DORIS_TDE_SK,或准备可用的 Instance Profile。 - 在
fe.conf中完整配置doris_tde_key_provider、doris_tde_key_id、doris_tde_key_endpoint、doris_tde_key_region和doris_tde_algorithm。 - 重启 FE。
- 执行
SELECT * FROM information_schema.encryption_keys;,确认主密钥已经初始化。 - 在完成上述配置后再创建需要加密的新表。
参数说明
FE 参数
| 参数 | 默认值 | 说明 |
|---|---|---|
doris_tde_key_provider | 空 | 根密钥提供方,使用 aws_kms。 |
doris_tde_key_id | 空 | AWS KMS Key ID。 |
doris_tde_key_endpoint | 空 | KMS Endpoint。 |
doris_tde_key_region | 空 | KMS 所在区域。 |
doris_tde_algorithm | PLAINTEXT | 新建内部表默认使用的 TDE 算法,可选 AES256、SM4、PLAINTEXT。 |
doris_tde_rotate_master_key_interval_ms | 2592000000 | 自动轮转主密钥的时间间隔,默认 30 天。 |
doris_tde_check_rotate_master_key_interval_ms | 300000 | 检查是否需要轮转主密钥的周期,默认 5 分钟。 |
生效方式
数据文件加密
doris_tde_algorithm 是 FE 级默认值。建表时会读取该值,并将对应算法写入表的加密元数据。
可选算法为:
AES256SM4PLAINTEXT
如果 FE 使用 PLAINTEXT,则新建表不会启用数据加密。
使用方式
通过 FE 配置项 doris_tde_algorithm 为新建内部表设置默认加密算法。
如果希望业务数据落盘即加密,应在建表前完成 FE TDE 参数配置。
查看密钥元数据
可以通过 information_schema.encryption_keys 查看 Doris 当前管理的主密钥元数据:
SELECT * FROM information_schema.encryption_keys;
该表包含主密钥的 ID、版本、父密钥信息、算法、密文、IV、校验值以及创建和修改时间,适合用于检查主密钥是否已初始化与轮转。
如果该查询没有返回预期结果,优先检查:
doris_tde_key_provider、doris_tde_key_id、doris_tde_key_endpoint、doris_tde_key_region是否完整配置。- FE 进程是否已正确注入
DORIS_TDE_AK/DORIS_TDE_SK,或是否能从 Instance Profile 取到凭证。 - FE 启动日志中是否出现 KMS 初始化或
describeKey failed相关报错。
轮转机制
自动轮转主密钥
FE 会按照 doris_tde_check_rotate_master_key_interval_ms 周期检查是否达到轮转阈值;如果达到 doris_tde_rotate_master_key_interval_ms,则自动生成新的主密钥版本,并同时维护 AES256 和 SM4 两类主密钥版本。
手动轮转根密钥
管理员可以执行:
ADMIN ROTATE TDE ROOT KEY PROPERTIES (
"doris_tde_key_provider" = "aws_kms",
"doris_tde_key_id" = "<new-kms-key-id>",
"doris_tde_key_endpoint" = "https://kms.us-east-1.amazonaws.com",
"doris_tde_key_region" = "us-east-1"
);
该命令要求当前用户具备全局 ADMIN 权限。执行后,Doris 会使用新的 Root Key 重新保护已有主密钥。
运维建议
- 在生产环境中显式配置
doris_tde_algorithm,不要依赖默认值。 - 在启用 TDE 前先完成 AWS KMS 权限校验与凭证注入。