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

前提条件

  • 实例架构为副本集实例或分片集群实例。
  • 实例的存储引擎为WiredTiger。
  • 实例的数据库版本为4.0或4.2版本。如果实例数据库版本过低,您可以升级数据库版本
    说明 正式开通TDE前,您可以创建一个4.0或4.2版本的按量付费的实例来测试应用与版本兼容性,测试完毕可释放该实例。

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

影响

注意事项

  • TDE功能开通后无法关闭。
  • 当前TDE的开启粒度为实例,仅支持集合粒度的控制,如您需要字段粒度的加密,请参见手动字段级加密(仅支持MongoDB 4.2版本实例)。
    说明 如果业务上有特殊需求,您可以在创建集合时,指定该集合不被加密,详情请参见设置指定的集合不被加密
  • TDE功能开启后,仅加密新创建的集合,已有的集合不会被加密。
  • TDE所使用的密钥,由密钥管理服务KMS(Key Management Service)统一生成和管理,云数据库MongoDB不提供加密所需的密钥和证书。

操作步骤

  1. 登录MongoDB管理控制台
  2. 在页面左上角,选择实例所在的资源组和地域。
  3. 根据实例类型,在左侧导航栏单击副本集实例列表分片集群实例列表
  4. 找到目标实例,单击实例ID。
  5. 在左侧导航栏,单击数据安全性 > TDE
  6. 单击TDE状态:右侧的滑块,开启TDE加密。
    TDE加密
  7. 在弹出的开通TDE对话框中,您可以选择使用自动生成密钥,也可以选择使用自定义密钥,单击确定。实例进入TDE修改中状态,当转变为运行中状态即代表操作完成。
    说明 自定义密钥可以通过密钥管理服务KMS进行管理。详情请参见密钥管理服务KMS

设置指定的集合不被加密

开启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)" } } })