跳到主要内容
版本:4.x

透明数据加密(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_id
  • doris_tde_key_endpoint
  • doris_tde_key_region
  • doris_tde_key_provider=aws_kms

首次启用时,上述四项必须完整配置。只配置其中一部分会导致 FE 初始化根密钥失败。

2. 准备 AWS 访问凭证

支持两种凭证来源:

  • 通过环境变量 DORIS_TDE_AK / DORIS_TDE_SK 注入 Access Key 和 Secret Key。
  • 通过 AWS Instance Profile 获取凭证。

相关凭证至少应具备以下 KMS 权限:

  • kms:Encrypt
  • kms:Decrypt
  • kms:GenerateDataKey
  • kms: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。如果希望新建表启用数据加密,需要显式设置为 AES256SM4

首次初始化成功后,Root Key 信息会写入 Doris 元数据。后续如果只是修改 fe.conf 中的 doris_tde_key_* 参数,并不会自动把已有系统切换到新的 Root Key;更换 KMS Key 时应使用本文后面的 ADMIN ROTATE TDE ROOT KEY

推荐使用流程

建议按以下顺序启用 TDE:

  1. 在 AWS KMS 中准备可用的 KMS Key,并确认 FE 具备访问该 KMS Key 的凭证。
  2. 在 FE 环境中注入 DORIS_TDE_AK / DORIS_TDE_SK,或准备可用的 Instance Profile。
  3. fe.conf 中完整配置 doris_tde_key_providerdoris_tde_key_iddoris_tde_key_endpointdoris_tde_key_regiondoris_tde_algorithm
  4. 重启 FE。
  5. 执行 SELECT * FROM information_schema.encryption_keys;,确认主密钥已经初始化。
  6. 在完成上述配置后再创建需要加密的新表。

参数说明

FE 参数

参数默认值说明
doris_tde_key_provider根密钥提供方,使用 aws_kms
doris_tde_key_idAWS KMS Key ID。
doris_tde_key_endpointKMS Endpoint。
doris_tde_key_regionKMS 所在区域。
doris_tde_algorithmPLAINTEXT新建内部表默认使用的 TDE 算法,可选 AES256SM4PLAINTEXT
doris_tde_rotate_master_key_interval_ms2592000000自动轮转主密钥的时间间隔,默认 30 天。
doris_tde_check_rotate_master_key_interval_ms300000检查是否需要轮转主密钥的周期,默认 5 分钟。

生效方式

数据文件加密

doris_tde_algorithm 是 FE 级默认值。建表时会读取该值,并将对应算法写入表的加密元数据。

可选算法为:

  • AES256
  • SM4
  • PLAINTEXT

如果 FE 使用 PLAINTEXT,则新建表不会启用数据加密。

使用方式

通过 FE 配置项 doris_tde_algorithm 为新建内部表设置默认加密算法。

如果希望业务数据落盘即加密,应在建表前完成 FE TDE 参数配置。

查看密钥元数据

可以通过 information_schema.encryption_keys 查看 Doris 当前管理的主密钥元数据:

SELECT * FROM information_schema.encryption_keys;

该表包含主密钥的 ID、版本、父密钥信息、算法、密文、IV、校验值以及创建和修改时间,适合用于检查主密钥是否已初始化与轮转。

如果该查询没有返回预期结果,优先检查:

  • doris_tde_key_providerdoris_tde_key_iddoris_tde_key_endpointdoris_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,则自动生成新的主密钥版本,并同时维护 AES256SM4 两类主密钥版本。

手动轮转根密钥

管理员可以执行:

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 权限校验与凭证注入。