更新时间:2025-06-13 GMT+08:00
分享

开启透明数据加密功能

操作场景

透明数据加密(Transparent Data Encryption,简称TDE),对数据文件执行实时I/O加密和解密,数据在写入磁盘之前进行加密,从磁盘读入内存时进行解密,能有效保护数据库及数据文件的安全。

TDE主要应对以下的场景:

  • 硬盘被盗导致数据泄露。
  • 黑客入侵系统进行文件复制导致数据泄露。在没有启用TDE的情况下,只要获得了数据库文件,即可直接浏览数据库中的所有内容,但如果在数据库上启用了TDE,整个数据被安全加密;没有密钥就不能访问到数据。

版本限制

云数据库 RDS for MySQL的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劣化幅度更大。

功能限制

表1 约束限制

阶段

限制说明

TDE开启前

  • 如需开通透明数据加密,您可以在管理控制台右上角,选择“工单 > 新建工单”,提交开通透明数据加密的申请。
  • 云数据库 RDS for MySQL实例已开通密钥管理服务(Key Management Service,KMS),加密使用的用户主密钥由KMS产生和管理,RDS不提供加密所需的密钥和证书。
  • 以下场景的实例不支持开启TDE:
    • 开启跨区域备份后不支持开启TDE。
    • CBR快照备份不支持开启TDE。
    • 集群版实例不支持TDE加密。
  • TDE功能支持的存储类型为本地SSD盘或SSD云盘。
  • TDE加密为数据库数据加密,包括全量备份,不包括增量备份。
  • TDE加密功能一旦开启,将不允许关闭,请您谨慎操作。

TDE开启过程中

  • TDE开启过程中,不会重启实例,但会显著增加CPU使用率,因此建议在业务低峰期操作。

TDE开启后

  • 开启TDE后,实例的功能限制:
    • 不支持异地容灾备份。
    • 不支持关闭以及修改默认主密钥。
    • TDE加密的备份不支持恢复到已有其他已存在实例。
    • 按指定时间点恢复(PITR)时,不允许恢复到其他已存在实例。
    • 使用自定义密钥创建的手动备份,只能下载,不能恢复。
    • 使用默认密钥创建的手动备份和自动备份,不能下载。
    • 不支持大版本升级。
  • 开启TDE后,才能执行加密或解密表操作。加密或解密表操作需要注意以下几点:
    • 确保常用数据库工具仍能正常使用。
    • 由于查询表数据时会解密并读取到内存中,因此查询加密的数据时结果仍是明文数据。开启TDE后,备份文件是加密后的密文数据,可以防止备份泄漏导致数据泄漏。

开启实例级别的TDE加密功能

  1. 单击管理控制台左上角的,选择区域。
  2. 单击页面左上角的,选择“数据库 > 云数据库 RDS”,进入RDS信息页面。
  3. “实例管理”页面,单击目标实例名称,进入实例的“概览”页面。
  4. 单击“TDE状态”后的“开启”。

    图1 开启实例级别的TDE加密功能

  5. 在弹出框中,单击“确定”,开启TDE加密功能。

    图2 TDE开启

  6. TDE开通后,如果您需要恢复数据到本地,参考以下两种方式:

    • 方式1:通过解密数据
      1. 通过RDS解密数据,请参考解密表
      2. 创建该数据库的手动备份。
      3. 获取备份文件并通过备份文件恢复数据。
    • 方式2:使用过渡密钥“--transition-key”
      1. 通过管理控制台创建手动备份时,按提示输入自定义的密钥字符串,对数据进行重新加密,详情请参考创建手动备份
        图3 自定义加密方式
      2. 下载全量备份文件,使用第三方全量备份工具Percona XtraBackup进行本地恢复。
        1. prepare 阶段: --transition-key = {自定义密钥}
        2. copy-back阶段:--transition-key={自定义密钥} --generate-new-master-key

加密或解密表

  1. 连接目标实例
  2. 执行如下命令对表进行加密或解密,tablename 为需要加密或解密的表名。

    • 加密
      alter table tablename encryption='Y';
    • 解密
      alter table tablename encryption='N';

    alter table tablename encryption='Y';alter table tablename encryption='N'; 都属于algorithm=COPY的DDL语句。与其他algorithm=COPY的DDL语句一样,由于实现方式是创建一张新表,拷贝所有数据后重命名,会导致以下现象:

    • 在DDL执行完毕后,对该表的查询会有短暂时间的性能抖动。
    • 在缓冲池(buffer pool)没打满的情况下,内存负载会增高。

相关文档