透明数据加密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.1、MySQL 8.0.2 | 需为8.0.1.1.1及以上。 | |
标准版 | MySQL 5.7 | 需为5.7.1.0.3及以上。 |
MySQL 8.0.1、MySQL 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开通后将无法关闭。
登录PolarDB控制台。
在左上角,选择集群所在地域。
找到目标集群,单击集群ID。
在左侧导航栏单击 。
在TDE配置页签,打开TDE状态开关。
在设置TDE对话框中,选择使用服务密钥(阿里云自动生成)或使用已有自定义密钥。
说明目前TDE支持的密钥类型为
Aliyun_AES_256
、Aliyun_SM4
。如果您选择使用服务密钥(阿里云自动生成),单击确定,开通TDE。
如果您选择使用已有自定义密钥,下拉选择由密钥管理服务(KMS)产生的密钥,单击确定,开通TDE。
说明使用已有自定义密钥时,需要满足以下条件:
已开通KMS。具体操作请参见开通密钥管理服务。
已授权PolarDB访问KMS。具体操作,请参见授权PolarDB访问KMS。
需要使用阿里云账号或者具有AliyunSTSAssumeRoleAccess权限的账号。
如果没有自定义密钥,需要单击前往创建,在密钥管理服务控制台创建密钥并导入自带的密钥材料。详情请参见创建密钥。
使用已有自定义密钥时,需要注意:
禁用密钥、设置密钥删除计划或者删除密钥材料都会造成密钥不可用。
撤销授权关系后,重启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命令对表进行加密或解密时,该表会处于锁定状态。