首批通过分布式安全可靠测评,为关键业务系统打造
租户主密钥概述
更新时间:2026-04-07 20:57:20
租户主密钥是 OceanBase 数据库数据加密的基础设施。透明数据加密(TDE)、列加密功能和函数加密功能都依赖租户主密钥。
功能适用性
OceanBase 数据库社区版暂不支持租户主密钥相关功能。
两级密钥体系
OceanBase 数据库采用两级密钥体系实现数据加密:
- 租户主密钥(Master Key):每个租户有一个主密钥,用于加密保护数据密钥。主密钥存储在 Keystore 中。
- 数据密钥(Data Key):用于直接加密数据。每个加密的表空间都有对应的数据密钥。

为了保证数据的安全性,用户无法直接查看或指定主密钥和数据密钥,它们由系统生成,并且不会以明文形式存储在磁盘上,显著提高了系统安全性。
Keystore
Keystore 是主密钥的管理模块,提供密钥管理服务。Keystore 的功能包括:
- 主密钥的生成:主密钥由 Keystore 根据加密算法生成,用户无法指定。
- 主密钥相关信息存储:Keystore 保证相关信息的多副本特性、一致性特性和故障处理。
- 主密钥管理和多版本控制:多版本机制允许新生成的主密钥无需立即生效,可以逐步完成主密钥的替换。
- 获取主密钥的高可用服务。
- 处理 Keystore 的操作指令。
主密钥存储方式
通过配置项 tde_method 控制主密钥的存储方式:
tde_method 取值 |
含义 |
|---|---|
none |
不生成租户主密钥(默认值) |
internal |
主密钥存储于内部表 |
bkmi |
主密钥存储于外部 BKMI 系统 |
obcloud |
主密钥存储于 OceanBase Cloud KMS 服务 |
注意
- 系统租户不能开启加密。
- 配置项
tde_method一旦设置为非none值,就不能再修改。除非租户重建,否则无法切换为其他加密方式。
主密钥存储方式说明:
- 支持
internal和obcloud两种方式。internal方式的主密钥加密信息存储在内部表中进行管理。为了避免日志回放时的循环依赖,该加密方式下的 clog 不做加密。obcloud方式的主密钥通过 OceanBase Cloud KMS 或 OCP KMS 代理服务管理。 - 使用外部 KMS(如
obcloud)时,除设置tde_method外,可配置 external_kms_info,用于指定 KMS 的地址、认证信息、密钥名称等,数据库通过该配置连接并访问外部 KMS 获取主密钥。
开启加密时,使用主密钥对数据密钥进行加密后得到加密的数据密钥密文,该密文会存储在内部表、宏块头部、Clog 头部中,数据密钥不会明文存储在任何地方。需要加解密数据时,使用主密钥解密该密文后得到数据密钥,从而对宏块或 clog 中的用户数据进行加解密操作。