设置透明数据加密TDE

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

前提条件

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

产品系列

数据库引擎

内核小版本

集群版

MySQL 5.6

需为5.6.1.0.21及以上。

MySQL 5.7

需为5.7.1.0.3及以上。

MySQL 8.0.1MySQL 8.0.2

需为8.0.1.1.1及以上。

标准版

MySQL 5.7

需为5.7.1.0.3及以上。

MySQL 8.0.1MySQL 8.0.2

需为8.0.1.1.1及以上。

背景信息

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

注意事项

  • 如果是IO bound场景,开通TDE后,可能会对数据库性能产生一定影响。

  • 已加入全球数据库网络(GDN)的集群支持开启TDE功能。GDN中的主集群开启TDE功能后,GDN中的从集群会默认同步开启该功能,且从集群使用的密钥及密钥所在地域与主集群相同,密钥所在地域不支持修改。

  • 暂不支持单独为GDN中的从集群开启TDE功能。

操作步骤

重要
  • 启用TDE加密会导致PolarDB集群重启,请谨慎操作。

  • TDE开通后将无法关闭。

  1. 登录PolarDB控制台

  2. 在左上角,选择集群所在地域。

  3. 找到目标集群,单击集群ID。

  4. 在左侧导航栏单击配置与管理 > 安全管理

  5. TDE配置页签,打开TDE状态开关。

    MySQL开通TDE

  6. 设置TDE对话框中,选择使用服务密钥(阿里云自动生成)使用已有自定义密钥

    使用阿里云自动生成的密钥

    说明

    目前TDE支持的密钥类型为Aliyun_AES_256Aliyun_SM4

    • 如果您选择使用服务密钥(阿里云自动生成),单击确定,开通TDE。

    • 如果您选择使用已有自定义密钥,下拉选择由密钥管理服务(KMS)产生的密钥,单击确定,开通TDE。自定义密钥

      说明
      • 使用已有自定义密钥时,需要满足以下条件:

      • 如果没有自定义密钥,需要单击前往创建,在密钥管理服务控制台创建密钥并导入自带的密钥材料。详情请参见创建密钥

      • 使用已有自定义密钥时,需要注意:

        • 禁用密钥、设置密钥删除计划或者删除密钥材料都会造成密钥不可用。

        • 撤销授权关系后,重启PolarDB集群会导致PolarDB集群不可用。

    开通TDE大约需要10分钟时间,请您耐心等待。

高级选项

说明

如果您需要开启高级选项功能,集群需满足下述条件的其中之一即可:

  • 集群版本为PolarDB MySQL版8.0版本且内核小版本为8.0.1.1.15及以上。

  • 集群版本为PolarDB MySQL版5.7版本且内核小版本为5.7.1.0.35及以上。

开通TDE时,您可以在设置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';
说明

通过以上alter table命令对表进行加密或解密时,该表会处于锁定状态。