透明数据加密TDE(Transparent Data Encryption)可对数据文件执行实时I/O加密和解密,数据在写入磁盘之前进行加密,从磁盘读入内存时进行解密。TDE不会增加数据文件的大小,开发人员无需更改任何应用程序,即可使用TDE功能。
前提条件
- 仅产品系列为集群版或单节点的PolarDB MySQL版集群支持TDE,高压缩引擎(X-Engine)不支持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或以上。 高压缩引擎(X-Engine) 8.0 不支持。 - 已开通KMS。具体操作请参见购买专属KMS实例。
- 已授权RDS访问KMS。具体操作请参见授权RDS访问KMS。
背景信息
PolarDB MySQL版的TDE加密采用国际流行的AES算法,密钥长度为256比特。TDE加密使用的密钥由密钥管理服务(KMS)产生和管理,PolarDB MySQL版不提供加密所需的密钥和证书。部分可用区不仅可以使用阿里云自动生成的密钥,也可以使用自带的密钥材料生成数据密钥,然后授权PolarDB MySQL版使用。
注意事项
- 如果是IO bound场景,开通TDE后,可能会对数据库性能产生一定影响。
- 已加入全球数据库网络(GDN)的集群支持开启TDE功能。GDN中的主集群开启TDE功能后,GDN中的从集群会默认同步开启该功能,且从集群使用的密钥及密钥所在地域与主集群相同,密钥的地域不支持修改。
- 暂不支持单独为GDN中的从集群开启TDE功能。
操作步骤
重要
- 启用TDE加密会导致PolarDB集群重启,请谨慎操作。
- TDE开通后将无法关闭。
- 登录PolarDB控制台。
- 在控制台左上角,选择集群所在地域。
- 找到目标集群,单击集群ID。
- 在左侧导航栏单击 。
- 在TDE配置页签,打开TDE状态开关。
- 在设置TDE对话框中,选择使用服务密钥(阿里云自动生成)或使用已有自定义密钥。说明 目前TDE支持的密钥类型为
Aliyun_AES_256
、Aliyun_SM4
。- 如果您选择使用服务密钥(阿里云自动生成),单击确定,开通TDE。
- 如果您选择使用已有自定义密钥,下拉选择由密钥管理服务(KMS)产生的密钥,单击确定,开通TDE。说明
- 如果没有自定义密钥,需要单击前往创建,在密钥管理服务控制台创建密钥并导入自带的密钥材料。详情请参见创建密钥。
- 使用已有自定义密钥时,需要注意:
- 禁用密钥、设置密钥删除计划或者删除密钥材料都会造成密钥不可用。
- 撤销授权关系后,重启PolarDB集群会导致PolarDB集群不可用。
- 需要使用阿里云账号或者具有AliyunSTSAssumeRoleAccess权限的账号。
开通TDE大约需要10分钟时间,请您耐心等待。
高级选项
说明 仅当集群版本为PolarDB MySQL版8.0版本且内核小版本为8.0.1.1.15及以上时,支持开启高级选项功能。
开通TDE时,您可以在设置TDE对话框中,开启高级选项功能。该功能开启后,所有新建的表将自动加密。

加密和解密操作
说明 如果打开了高级选项功能,所有新建的表将自动加密,无须手动进行加密操作。对于现存的表,用户还需要进行以下操作才能进行数据加密。
开启TDE之后,您还需要登录数据库对MySQL的表进行DDL操作才能进行数据加密或者解密,不同内核版本的加密和解密操作存在差异,具体如下:
操作类型 | PolarDB MySQL 5.6 | PolarDB MySQL 5.7&PolarDB MySQL 8.0 |
---|---|---|
加密 |
|
|
解密 |
|
|
说明 通过以上alter table命令对表进行加密或解密时,该表会处于锁定状态。