透明数据加密TDE(Transparent Data Encryption)可对数据文件执行实时I/O加密和解密,数据在写入磁盘之前进行加密,从磁盘读入内存时进行解密。TDE不会增加数据文件的大小,开发人员无需更改任何应用程序,即可使用TDE功能。
前提条件
- 实例类型如下:
- RDS MySQL 8.0高可用版(本地盘)
- RDS MySQL 5.7高可用版(本地盘)
- RDS MySQL 5.7三节点企业版(本地盘)
- RDS MySQL 5.6
- 已开通KMS。如果您未开通KMS,可在开通TDE过程中根据引导开通KMS。
背景信息
说明 开通后使用的加密算法为AES_128_ECB。
注意事项
- 为保证实例的稳定性,建议您将内核小版本升级到最新。如果主实例包含只读实例,建议将所有只读实例和主实例的内核小版本都升级到最新。更多信息,请参见升级内核小版本。
- TDE开通过程中会重启实例造成连接中断,请做好业务安排,谨慎操作。
- TDE开通后无法关闭。
- TDE开通后无法修改密钥。
- TDE开通后,用户如果要恢复数据到本地,需要先通过RDS解密数据。
- TDE开通后,会显著增加CPU使用率。
- 使用已有自定义密钥时,需要注意:
- 禁用密钥、设置密钥删除计划或者删除密钥材料都会造成密钥不可用。
- 撤销授权关系后,重启RDS实例会导致RDS实例不可用。
- 需要使用主账号或者具有AliyunSTSAssumeRoleAccess权限的账号。
说明 关于密钥的相关操作请参见 密钥管理服务。
使用由阿里云自动生成的密钥
使用已有自定义密钥
加密操作
登录数据库,执行如下命令,对要加密的表进行加密。
- MySQL 5.6
alter table <tablename> engine=innodb,block_format=encrypted;
- MySQL 5.7或8.0
alter table <tablename> encryption='Y';
解密操作
如果您要对TDE加密的表解密,请执行如下命令:
- MySQL 5.6
alter table <tablename> engine=innodb,block_format=default;
- MySQL 5.7或8.0
alter table <tablename> encryption='N';
常见问题
- 开启TDE后,常用数据库工具(Navicat等)还能正常使用吗?
可以正常使用。
- 开启TDE后,还能正常迁移数据到其他RDS实例吗?
可以正常迁移。
- 加密后查看数据为什么还是明文的?
查询数据时会解密并读取到内存,所以是明文显示。开启TDE可以防止备份泄露导致数据泄露,备份文件是加密的,无法用于恢复到本地,如果要恢复数据到本地,需要先解密数据。更多信息,请参见本文的解密操作章节。
相关文档
相关API
API | 描述 |
---|---|
开启TDE | 开启RDS实例透明数据加密。 |