首批通过分布式安全可靠测评,为关键业务系统打造
TDE 透明加密
更新时间:2026-06-25 16:45:30
本页面为您介绍 TDE(Transparent Data Encryption) 透明加密的操作步骤。数据表开启TDE透明加密之后,不支持自动解除加密,关闭方法详见 数据表解除TDE透明加密。
背景信息
TDE 是 Transparent Data Encryption 的缩写,指的是透明数据加密。这是一种用于保护数据库中静态数据(即存储在磁盘上的数据)的加密技术。
OB Cloud 云数据库的 TDE 支持服务秘钥,由 OceanBase 云数据库生成和管理的密钥。同时也支持使用云厂商的 KMS 密钥,支持的云厂商和详细使用说明,请参见 云厂商账号授权。
概念介绍
TDE(透明数据加密)是数据库层的一种加密解决方案,专注于保护存储在磁盘上的静态数据。它的主要特点是:
自动加密和解密:当数据写入存储时,自动执行加密操作;当数据被读取时,自动解密,且对应用程序透明(无需任何代码更改)。
加密广度:保护表空间文件、事务日志文件和数据库备份等静态数据。
密钥托管:结合云端密钥管理服务(KMS,Key Management Service),对加密密钥进行安全存储和管理。
高效透明:对用户和应用来说是“无感”的,没有操作上的干扰。
OB Cloud 提供了强大的 TDE 支持,结合其云原生特性,用户可以高效地加密自己的敏感数据,同时保持数据服务的高可用性和高性能。
原理介绍
TDE 使用对称加密算法(如 AES,Advanced Encryption Standard)来加密数据库或存储的数据。加密和解密的过程通常由数据库管理系统(DBMS)自动完成,对于应用程序和用户来说是透明的。以下是 TDE 的核心原理和流程:
主密钥(Master Key)
主密钥是最顶层的密钥,用于保护(加密)其他密钥。
主密钥通常存储在专用的安全存储区中(如操作系统的加密模块、硬件安全模块 HSM 或 Key Management Service KMS)。
主密钥本身受到强加密措施的保护。
数据库加密密钥(Database Encryption Key, DEK)
数据库会使用专门的加密密钥(DEK)来对目标数据进行加密。
DEK 使用主密钥进行加密,以便在需要时可以安全地存储或传输。
数据加密
使用数据库加密密钥(DEK),TDE 对数据库中存储的数据进行加密处理。
加密的粒度通常是整个数据库文件(例如表数据文件)或特定表的页面。
数据解密
在访问数据时,数据库服务器会自动解密数据文件中加密的内容。
解密使用存储的数据库加密密钥(DEK),无需用户干预。
写入加密数据
在数据写入磁盘时,TDE 会对数据块进行加密,然后存储为加密形式。
即使磁盘或数据库文件被盗窃,攻击者也无法直接访问加密数据。
内存中的数据依然是明文
数据从磁盘读取到内存时会被自动解密并加载为明文。
这意味着加密主要保护的是静态数据,而不是数据在内存中或者传输过程中的安全。
使用限制
服务密钥使用限制
TDE 加密功能开启后将不能关闭。
Oracle 兼容模式租户支持的密钥类型包括 AES-256,AES-128,AES-192,SM4-CBC,MySQL 租户支持密钥类型为 AES-256,设置后不能修改,不能做类型转换。
开启 TDE 功能后,update 场景性能无影响,但其他场景的性能略有损耗。
操作步骤
开启 TDE 之后,在当前页面创建加密表空间,再进行创建加密表的 DDL 操作才能进行数据加密。创建加密表 DDL:CREATE TABLE t1 (id1 int,id2 int) TABLESPACE sectest_ts1;。若有历史数据表加入表加密空间,加入后请进行一次全量合并,实现数据的持久化。
开启 TDE 透明加密操作
登录 OB Cloud 云数据库控制台。
在左侧导航栏单击 集群列表,选择目标集群,进入 集群工作台 页面。
在左侧导航栏单击 安全设置。
在安全设置界面,单击 TDE 透明加密 页签。页签展示 TDE 设置列表,您可进行如下操作:

单击 操作 列下的 开启加密 ,开启 TDE 加密功能。TDE 透明加密功能开启之后将无法关闭,并且对性能有一定的影响,请谨慎操作。
在弹出框中选择需要使用的密钥类型。
使用由 OB Cloud 提供的密钥。
使用由云厂商提供的密钥。
华为云、AWS 和阿里云自营渠道的实例,需要先绑定云厂商账号,操作的详细说明,请参见 云厂商账号授权。
阿里云云市场渠道的实例,可以通过跳转绑定阿里云账号后使用相应密钥。
选择您的密钥类型后,单击 开启 ,完成 TDE 加密功能的开启。
创建表空间加密
单击 操作 列下的 创建表空间 。
在 创建表空间 弹窗中填写 加密表空间名 和 加密算法 。

单击 确定 ,创建表空间。
当您完成加密表空间的创建之后,还可通过数据研发功能或其他命令行工具进行 DDL 操作,创建表并将表指定到加密的表空间,示例如下:
Oracle 租户
create table table_name (column1 int, column2 int) tablespace tablespace_name;MySQL 租户
create table table_name (column1 int, column2 int) tablespace tablespace_name;
单击某个租户前面的"+"号,可以查看该租户下所有的加密表空间信息,包括加密表空间名、加密算法和创建时间。
单击加密表空间名,可以查看加密表的状态、加密进度等信息。加密进度表示当前数据表中,已完成加密的数据块百分比。
对历史数据表执行全量合并
对历史数据表执行全量合并的操作步骤如下,以已有表 t1 为例:
将参数
progressive_merge_num的值设置为1。obclient> ALTER TABLE t1 set progressive_merge_num = 1;在集群实例工作台页面手动触发一次数据合并,详情请参见 数据合并。
待数据合并完成后,再将参数
progressive_merge_num的值设置为0。obclient> ALTER TABLE t1 set progressive_merge_num = 0;