开启 TDE 透明加密

更新时间:
复制 MD 格式

本页面为您介绍 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;