开启透明数据加密功能
操作场景
透明数据加密(Transparent Data Encryption,简称TDE),对数据文件执行实时I/O加密和解密,数据在写入磁盘之前进行加密,从磁盘读入内存时进行解密,能有效保护数据库及数据文件的安全。
TDE主要应对以下的场景:
- 硬盘被盗导致数据泄露。
- 黑客入侵系统进行文件复制导致数据泄露。在没有启用TDE的情况下,只要获得了数据库文件,即可直接浏览数据库中的所有内容,但如果在数据库上启用了TDE,整个数据被安全加密;没有密钥就不能访问到数据。
版本限制
- 8.0,对应的小版本为8.0.32.250300及以上版本。
- 5.7,对应的小版本为5.7.38.221000及以上版本。
实例版本的查询方法请参见如何查看云数据库RDS实例的版本号。
性能说明
加密表的数据触发I/O时,加解密算法额外的计算开销,会给CPU带来额外的负载。
在通用场景下,实例的CPU未达到瓶颈时,加密表读写的性能影响在5%以内。
CPU小于8核的实例在高并发、CPU负载高的场景下,加密表的I/O密集型业务会产生更高的劣化,劣化幅度与业务模型和加密算法有关,国密SM4算法加密的数据比AES劣化幅度更大。
功能限制
阶段 |
限制说明 |
---|---|
TDE开启前 |
|
TDE开启过程中 |
|
TDE开启后 |
|
开启实例级别的TDE加密功能
- 单击管理控制台左上角的
,选择区域。
- 单击页面左上角的
,选择“数据库 > 云数据库 RDS”,进入RDS信息页面。
- 在“实例管理”页面,单击目标实例名称,进入实例的“概览”页面。
- 单击“TDE状态”后的“开启”。
图1 开启实例级别的TDE加密功能
- 在弹出框中,单击“确定”,开启TDE加密功能。
图2 TDE开启
- TDE开通后,如果您需要恢复数据到本地,参考以下两种方式:
- 方式1:通过解密数据
- 通过RDS解密数据,请参考解密表。
- 创建该数据库的手动备份。
- 获取备份文件并通过备份文件恢复数据。
- 方式2:使用过渡密钥“--transition-key”
- 通过管理控制台创建手动备份时,按提示输入自定义的密钥字符串,对数据进行重新加密,详情请参考创建手动备份。
图3 自定义加密方式
- 下载全量备份文件,使用第三方全量备份工具Percona XtraBackup进行本地恢复。
- prepare 阶段: --transition-key = {自定义密钥}
- copy-back阶段:--transition-key={自定义密钥} --generate-new-master-key
- 通过管理控制台创建手动备份时,按提示输入自定义的密钥字符串,对数据进行重新加密,详情请参考创建手动备份。
- 方式1:通过解密数据
加密或解密表
- 连接目标实例。
- 执行如下命令对表进行加密或解密,tablename 为需要加密或解密的表名。
alter table tablename encryption='Y'; 或 alter table tablename encryption='N'; 都属于algorithm=COPY的DDL语句。与其他algorithm=COPY的DDL语句一样,由于实现方式是创建一张新表,拷贝所有数据后重命名,会导致以下现象:
- 在DDL执行完毕后,对该表的查询会有短暂时间的性能抖动。
- 在缓冲池(buffer pool)没打满的情况下,内存负载会增高。