开启 TDE 透明加密

本页面为您介绍 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 功能后,update 场景性能无影响,但其他场景的性能略有损耗。具体情况参见透明数据加密 TDE 测试报告

开启 TDE 透明加密

  1. 在左侧导航栏单击 实例列表,选择目标集群实例,进入 集群实例工作台 页面。

  2. 在左侧导航栏单击 安全设置

  3. TDE 透明加密 页签中,可查看 TDE 设置列表。1

    1. 单击 操作 列下的 开启加密,开启 TDE 加密功能。

      说明

      TDE 透明加密功能开启之后将无法关闭,并且对性能有一定的影响,请谨慎操作。

    2. 在弹出框中单击 确定,设置密钥类型。

      密钥类型分为服务密钥和自定义密钥:

      • 服务密钥:由 OceanBase 云数据库生成和管理的密钥。

        说明

        目前支持的密钥类型为 Aliyun_AES_256,Aliyun_SM4,密钥类型设置后不能修改,不能做类型转换。

      • 自定义密钥:采用阿里云 KMS 服务创建的密钥,当您购买了阿里云 KMS 服务时,可到 KMS 管理控制台创建您的自定义密钥,具体操作参见 创建密钥

      • 说明
        1. 目前支持的密钥类型为 Aliyun_AES_256,Aliyun_SM4,密钥类型设置后不能修改,不能做类型转换。

        2. 云产品将触发创建服务角色 AliyunServiceRoleForOceanBase(如已创建,不会重复创建),便于您加密 OceanBase 云服务数据。

    3. 选择您的密钥类型后,单击 确定,完成 TDE 加密功能的开启。

创建表空间加密

  1. 单击 操作 列下的 创建表空间

  2. 创建表空间 弹窗中填写 加密表空间名加密算法

  3. 单击 确定,创建表空间。

  4. 当您完成加密表空间的创建之后,还可通过数据研发功能或其他命令行工具进行 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;
    说明
    1. 开启 TDE 之后,在当前页面创建加密表空间,再进行创建加密表的 DDL 操作才能进行数据加密。创建加密表 DDL:CREATE TABLE t1 (id int,id2 int) TABLESPACE sectest_ts1;

    2. 若有历史数据表加入表加密空间,加入后请进行一次全量合并,实现数据的持久化。

  5. 单击某个租户前面的“+”号,可以查看该租户下所有的加密表空间信息,包括加密表空间名、加密算法和创建时间。

    TDE透明加密3

  6. 单击加密表空间名,可以查看加密表的状态、加密进度等信息。加密进度表示当前数据表中,已完成加密的数据块百分比。

    TDE透明加密2

对历史数据表执行全量合并

对历史数据表执行全量合并的操作步骤如下,以已有表 t1 为例:

  1. 将参数 progressive_merge_num 的值设置为 1

    obclient> ALTER TABLE t1 set progressive_merge_num = 1;
  2. 在集群实例工作台页面手动触发一次数据合并,详情请参见 数据合并

  3. 待数据合并完成后,再将参数 progressive_merge_num 的值设置为 0

    obclient> ALTER TABLE t1 set progressive_merge_num = 0;