设置透明数据加密TDE

透明数据加密TDE(Transparent Data Encryption)可对数据文件执行实时I/O加密和解密,数据在写入磁盘之前进行加密,从磁盘读入内存时进行解密。TDE不会增加数据文件的大小,您无需更改任何应用程序,即可使用TDE功能。为提高数据安全性,您可以通过控制台启用TDE功能,对实例数据进行加密。

前提条件

  • 实例架构为副本集实例或分片集群实例。

  • 实例的存储引擎为WiredTiger。

  • 实例的存储类型为本地盘版。

  • 实例的数据库版本为4.04.2版本。如果实例数据库版本过低,您可以升级数据库大版本

    说明

    正式开通TDE功能前,您可以创建一个4.04.2版本的按量付费实例来测试应用与版本兼容性,测试完毕可释放该实例。

如果您的实例不满足实例架构或存储引擎的条件,您可以通过其他方式变更,详情请参见变更配置方案概览

影响

  • 开通TDE功能的过程中,实例会重启一次并出现连接闪断,建议您在业务低峰期操作并确保应用有重连机制。

  • 开通TDE功能后,会增加实例的CPU使用率。

  • 加密后的集合不再支持通过物理备份恢复至自建数据库。如果您需要将加密后的集合恢复到自建数据库,您可以通过逻辑备份恢复至自建数据库,具体请参见通过逻辑备份恢复至自建数据库

注意事项

  • TDE功能开通后无法关闭。

  • 已开通TDE功能的实例释放后,不支持从回收站中恢复。

  • 当前TDE功能的开通粒度为实例,仅支持对集合进行加密。如果您需要对字段进行加密,请参见手动字段级加密(仅支持MongoDB 4.2版本实例)。

    说明

    如果业务上有特殊需求,您可以在创建集合时,指定该集合不被加密。如何设置,请参见设置指定的集合不被加密

  • TDE功能开通后,仅加密新创建的集合,已有的集合不会被加密。

  • TDE功能所使用的密钥,由密钥管理服务KMS(Key Management Service)统一生成和管理,云数据库MongoDB不提供加密所需的密钥和证书。密钥管理服务KMS的更多信息,请参见什么是密钥管理服务

  • 实例开通TDE加密后,不支持更换密钥。如需更换密钥,您可以使用DTS将数据迁移到使用新密钥的新实例上,如何迁移数据,请参见云数据库MongoDB实例间迁移

操作步骤

  1. 访问MongoDB副本集实例列表MongoDB分片集群实例列表,在上方选择地域,然后单击目标实例ID。

  2. 在目标实例页面的左侧导航栏,单击数据安全性 > TDE

  3. 打开TDE状态:右侧的开关。

  4. 在弹出的开通TDE对话框中,根据实际需要选择生成方式。

    • 使用自动生成密钥:使用系统自动生成的密钥。

    • 使用自定义密钥:根据业务需要,在下拉列表中选择密钥。如果下拉列表中不存在目标密钥,您可以先创建密钥,然后进行选择。创建方法请参见创建密钥

  5. 单击确定

    实例进入TDE修改中状态,当转变为运行中状态时,代表操作完成。

设置指定的集合不被加密

开启TDE加密后,所有新创建的集合都会被加密。如果业务上有特殊需求,您可以在创建集合时,指定该集合不被加密。

  1. 通过Mongo Shell连接数据库。如何连接,请参见连接副本集实例连接分片集群实例

  2. 执行如下命令创建集合,指定该集合不被加密。

    • 语法:

      db.createCollection("<collection_name>",{ storageEngine: { wiredTiger: { configString: "encryption=(name=none)" } } })
      说明

      命令中的collection_name为集合名。

    • 示例:

      db.createCollection("customer",{ storageEngine: { wiredTiger: { configString: "encryption=(name=none)" } } })