本页面为您介绍 TDE(Transparent Data Encryption) 透明加密的操作步骤。TDE 透明加密功能开启之后将无法关闭,请谨慎操作。
背景信息
云数据库 OceanBase 支持 TDE(Transparent Data Encryption)透明加密,可对存储和 RPC 进行加密。
存储的加密,即磁盘的加密。
RPC 的加密,主要是 OBServer 之间的通信的加密。
OceanBase 数据库 V3.2.3、V3.2.4 和 V4.2.1 版本支持 TDE 加密功能。
TDE 透明加密功能当前支持服务密钥和自定义密钥两种方式。
服务密钥
由 OceanBase 云数据库生成和管理的密钥。
自定义密钥
采用阿里云 KMS 服务创建的密钥,当您购买了阿里云 KMS 服务时,可到 KMS 管理控制台创建您的自定义密钥,具体操作参见 创建密钥。
使用限制
服务密钥使用限制
TDE 加密功能开启后将不能关闭。
Oracle 租户支持的密钥类型包括 AES-256,AES-128,AES-192,SM4-CBC,MySQL 租户支持密钥类型为 AES-256,设置后不能修改,不能做类型转换。
自定义密钥使用限制
TDE 加密功能开启后将不能关闭。
Oracle租户支持的密钥类型包括 AES-256,AES-128,AES-192,SM4-CBC,MySQL 租户支持密钥类型为 AES-256,密钥类型设置后不能修改,不能做类型转换。
自定义密钥目前支持 OceanBase 数据库 V2.2.77 及以上版本。
云产品将触发创建服务角色 AliyunServiceRoleForOceanBase(如已创建,不会重复创建),便于您加密 OceanBase 云服务数据。请确保您使用的账号为主账号,或者具有 AliyunSTSAssumeRoleAccess 权限的账号。
请勿在 KMS 平台进行禁用密钥、设置密钥计划删除或者删除密钥的操作,此类操作将导致 TDE 加密功能无法正常开启。
当您在 KMS 管理平台创建完密钥后,需要给密钥添加
oceanbase:encryption: true
标签。KMS 只能选择 HSM 的版本。
开启 TDE 透明加密
在左侧导航栏单击 实例列表,选择目标集群实例,进入 集群实例工作台 页面。
在左侧导航栏单击 安全设置。
在 TDE 透明加密 页签中,可查看 TDE 设置列表。
单击 操作 列下的 开启加密,开启 TDE 加密功能。
说明TDE 透明加密功能开启之后将无法关闭,并且对性能有一定的影响,请谨慎操作。
在弹出框中单击 确定,设置密钥类型。
密钥类型分为服务密钥和自定义密钥:
服务密钥:由 OceanBase 云数据库生成和管理的密钥。
说明目前支持的密钥类型为 Aliyun_AES_256,Aliyun_SM4,密钥类型设置后不能修改,不能做类型转换。
自定义密钥:采用阿里云 KMS 服务创建的密钥,当您购买了阿里云 KMS 服务时,可到 KMS 管理控制台创建您的自定义密钥,具体操作参见 创建密钥。
说明目前支持的密钥类型为 Aliyun_AES_256,Aliyun_SM4,密钥类型设置后不能修改,不能做类型转换。
云产品将触发创建服务角色 AliyunServiceRoleForOceanBase(如已创建,不会重复创建),便于您加密 OceanBase 云服务数据。
选择您的密钥类型后,单击 确定,完成 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;
说明开启 TDE 之后,在当前页面创建加密表空间,再进行创建加密表的 DDL 操作才能进行数据加密。创建加密表 DDL:
CREATE TABLE t1 (id int,id2 int) TABLESPACE sectest_ts1;
若有历史数据表加入表加密空间,加入后请进行一次全量合并,实现数据的持久化。
单击某个租户前面的“+”号,可以查看该租户下所有的加密表空间信息,包括加密表空间名、加密算法和创建时间。
单击加密表空间名,可以查看加密表的状态、加密进度等信息。加密进度表示当前数据表中,已完成加密的数据块百分比。
对历史数据表执行全量合并
对历史数据表执行全量合并的操作步骤如下,以已有表 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;