更新时间:2024-10-14 GMT+08:00
开启透明数据加密功能
操作场景
透明数据加密(Transparent Data Encryption,简称TDE),对数据文件执行实时I/O加密和解密,数据在写入磁盘之前进行加密,从磁盘读入内存时进行解密,能有效保护数据库及数据文件的安全。
TDE主要应对以下的场景:
- 硬盘被盗导致数据泄露。
- 黑客入侵系统进行文件复制导致数据泄露。在没有启用TDE的情况下,只要获得了数据库文件,即可直接浏览数据库中的所有内容,但如果在数据库上启用了TDE,整个数据被安全加密;没有密钥就不能访问到数据。
使用限制
- 云数据库 RDS for MySQL实例已开通密钥管理服务(Key Management Service,KMS),加密使用的用户主密钥由KMS产生和管理,RDS不提供加密所需的密钥和证书。
- 云数据库 RDS for MySQL的透明数据加密功能支持的内核版本为5.7(5.7.38.221000及以上),存储类型为SSD云盘。
- 如需开通透明数据加密,您可以在管理控制台右上角,选择“工单 > 新建工单”,提交开通透明数据加密的申请。
- TDE开通后不支持关闭以及修改默认主密钥。
- TDE加密为数据库数据加密,包括全量备份,不包括增量备份。
- 以下场景的实例不支持开启TDE:
- 已开启异地容灾备份。
- 已开启TDE的实例不支持以下操作:
- 异地容灾备份。
- TDE加密的备份恢复到已有其他已存在实例。
- 按指定时间点恢复(PITR)时,不允许恢复到其他已存在实例。
- 使用自定义密钥创建的手动备份,只能下载,不能恢复。
- 使用默认密钥创建的手动备份和自动备份,不能下载。
- TDE开通过程中,不会重启实例,但会显著增加CPU使用率,因此建议在业务低峰期操作。
开启实例级别的TDE加密功能
- 登录管理控制台。
- 单击管理控制台左上角的,选择区域。
- 单击页面左上角的,选择“数据库 > 云数据库 RDS”,进入RDS信息页面。
- 在“实例管理”页面,单击目标实例名称,进入实例的“概览”页面。
- 单击“TDE状态”后的“开启”。
图1 开启实例级别的TDE加密功能
- 在弹出框中,单击“确定”,开启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:通过解密数据
加密或解密表
- 请确保已成功开启实例级别的TDE加密功能。
- 开启TDE后,常用数据库工具仍能正常使用。
- 由于查询表数据时会解密并读取到内存中,因此查询加密的数据时结果仍是明文数据。开启TDE后,备份文件是加密后的密文数据,可以防止备份泄漏导致数据泄漏。
- 连接目标实例。
请参考通过公网连接RDS for MySQL实例、通过内网连接RDS for MySQL实例及通过DAS连接RDS for MySQL实例。
- 执行如下命令对表进行加密或解密,tablename 为需要加密或解密的表名。