基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。
为新创建的表设置透明加密
更新时间:2026-07-15 22:01:30
本节主要介绍如何创建加密表空间来对新创建的表实现数据透明加密。
OceanBase 数据库的加密在形式上尽量兼容 Oracle 数据库,数据的加密单位为表空间(Tablespace)。OceanBase 数据库并非一个多数据文件的数据库系统,表空间是为了兼容而设计的概念,可以简单理解为表空间是一组表的集合。
本节以在加密表空间 sectest_ts1 上创建表 t1 为例,提供透明加密的操作指导。
注意
开启 TDE 功能后,`UPDATE` 场景性能无影响,但其他场景的性能略有损耗。具体情况参见[透明数据加密 TDE 测试报告](../150.transparent-data-encryption-tde-test-report.md)。
配置 internal 方式的透明加密
internal 方式的存储主密钥,其加密信息主要在内部表中管理。为了避免日志回放时的循环依赖,该模式中的 clog 不做加密。
管理员用户登录到集群的 Oracle 租户。
执行以下语句,开启 internal 方式的透明加密。
配置项
tde_method用于设置透明表空间加密的方式,默认为none,表示关闭透明表空间加密。更多配置项
tde_method的说明信息,参见 tde_method。注意
配置项
tde_method一旦设置,就不能再修改。obclient> ALTER SYSTEM SET tde_method='internal';执行以下语句,确认该租户上所有 OBServer 节点上的配置项
tde_method的值均为internal。obclient> SHOW PARAMETERS LIKE 'tde_method';创建 Keystore。
SQL 语句如下:
obclient> ADMINISTER KEY MANAGEMENT CREATE KEYSTORE keystore_name IDENTIFIED BY password;示例:
obclient> ADMINISTER KEY MANAGEMENT CREATE KEYSTORE sectest1 IDENTIFIED BY **3**;开启 Keystore。
SQL 语句如下:
obclient> ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY password;其中,
password为上一步设置的 Keystore 的密钥。示例:
obclient> ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY **3**;执行以下语句,生成主密钥。
obclient> ADMINISTER KEY MANAGEMENT SET KEY IDENTIFIED BY password;语句中的
password即为之前设置的 Keystore 的密钥。示例:
obclient> ADMINISTER KEY MANAGEMENT SET KEY IDENTIFIED BY **3**;创建表空间并指定加密算法。
可以指定加密算法
aes-256、aes-128、aes-192、sm4-cbc、aes-128-gcm、aes-192-gcm、aes-256-gcm、sm4-gcm。示例如下:
obclient> CREATE TABLESPACE sectest_ts1 ENCRYPTION USING 'aes-256';
在加密的表空间中创建新表
普通用户登录到 Oracle 租户。
创建表并指定表空间。
obclient> CREATE TABLE t1 (id1 int, id2 int) TABLESPACE sectest_ts1;创建后,该表对应的任何事务都需要加密。
确认表空间内的表是否标记为加密。
执行以下语句,查看
encryptionalg是否为之前设置的aes-256。obclient> SELECT table_name,encryptionalg,encrypted FROM V$OB_ENCRYPTED_TABLES; +------------+---------------+-----------+ | TABLE_NAME | ENCRYPTIONALG | ENCRYPTED | +------------+---------------+-----------+ | T1 | aes-256 | YES | +------------+---------------+-----------+ 1 row in setencryptionalg为aes-256,且encrypted为YES则表示表加密配置成功。更多视图
V$OB_ENCRYPTED_TABLES的字段及说明信息,参见 V$OB_ENCRYPTED_TABLES。