透明数据加密TDE(Transparent Data Encryption)可对数据文件执行实时I/O加密和解密,数据在写入磁盘之前进行加密,从磁盘读入内存时进行解密。TDE不会增加数据文件的大小,开发人员无需更改任何应用程序,即可使用TDE功能。

前提条件

  • 产品系列集群版单节点PolarDB MySQL集群支持TDE,历史库不支持TDE。

    集群版单节点PolarDB MySQL集群须满足如下版本要求:

    产品系列 版本 是否支持TDE
    集群版 5.6 Revision version需为5.6.1.0.21或以上。
    5.7 Revision version需为5.7.1.0.3或以上。
    8.0 Revision version需为8.0.1.1.1或以上。
    单节点 5.6 Revision version需为5.6.1.0.21或以上。
    5.7 Revision version需为5.7.1.0.3或以上。
    8.0 Revision version需为8.0.1.1.1或以上。
    历史库 8.0 不支持。
  • 已开通KMS。具体操作请参见开通密钥管理服务
  • 已授权RDS访问KMS。具体操作请参见授权RDS访问KMS

背景信息

PolarDB MySQL的TDE加密采用国际流行的AES算法,密钥长度为256比特。TDE加密使用的密钥由密钥管理服务(KMS)产生和管理,PolarDB MySQL不提供加密所需的密钥和证书。部分可用区不仅可以使用阿里云自动生成的密钥,也可以使用自带的密钥材料生成数据密钥,然后授权PolarDB MySQL使用。

注意事项

  • 如果是IO bound场景,开通TDE后,可能会对数据库性能产生一定影响。
  • 已加入全球数据库网络的集群无法开启TDE功能,已开启TDE功能的集群也无法加入全球数据库网络。

操作步骤

注意
  • 启用TDE加密会导致PolarDB集群重启,请谨慎操作。
  • TDE开通后将无法关闭。
  1. 登录PolarDB控制台
  2. 在控制台左上角,选择集群所在地域。
  3. 找到目标集群,单击集群ID。
  4. 在左侧导航栏单击配置与管理 > 安全管理
  5. TDE配置页签,打开TDE状态开关。
    MySQL开通TDE
  6. 设置TDE对话框中,选择使用服务密钥(阿里云自动生成)使用已有自定义密钥
    使用阿里云自动生成的密钥
    说明
    • 目前TDE支持的密钥类型为Aliyun_AES_256Aliyun_SM4
    • 高级选项开启后,所有新建的表会自动加密。对于现存的表,用户需要进行DDL操作才能进行数据加密。
    • 如果您选择使用服务密钥(阿里云自动生成),单击确定,开通TDE。
    • 如果您选择使用已有自定义密钥,下拉选择由密钥管理服务(KMS)产生的密钥,单击确定,开通TDE。自定义密钥
      说明
      • 如果没有自定义密钥,需要单击前往创建,在密钥管理服务控制台创建密钥并导入自带的密钥材料。详情请参见管理密钥
      • 使用已有自定义密钥时,需要注意:
        • 禁用密钥、设置密钥删除计划或者删除密钥材料都会造成密钥不可用。
        • 撤销授权关系后,重启PolarDB集群会导致PolarDB集群不可用。
        • 需要使用阿里云账号或者具有AliyunSTSAssumeRoleAccess权限的账号。
    开通TDE大约需要10分钟时间,请您耐心等待。

加密和解密操作

说明 开通TDE之后,如果打开了高级选项,所有新建的表将自动加密,无须手动进行加密操作。对于现存的表,用户还需要进行以下操作才能进行数据加密。
开启TDE之后,您还需要登录数据库对MySQL的表进行DDL操作才能进行数据加密或者解密,不同内核版本的加密和解密操作存在差异,具体如下:
操作类型 PolarDB MySQL 5.6 PolarDB MySQL 5.7&PolarDB MySQL 8.0
加密
alter table <tablename> block_format=encrypted;
alter table <tablename> encryption= 'Y';
解密
alter table <tablename> block_format=default;
alter table <tablename> encryption= 'N';