透明加密
更新时间:2023-11-06
透明数据加密TDE(Transparent Data Encryption)可对数据文件执行实时I/O加密和解密,数据在写入磁盘之前进行加密,从磁盘读入内存时进行解密。TDE不会增加数据文件的大小,您无需更改任何应用程序,即可使用TDE功能。为提高数据安全性,您可以通过控制台启用TDE功能,对实例数据进行加密。
前提条件
- 实例架构为副本集实例或分片集群实例。
影响
- 开通TDE功能的过程中,实例会重启一次并出现连接闪断,建议您在业务低峰期操作并确保应用有重连机制。
- 开通TDE功能后,会增加实例的CPU使用率。
- 加密后的集合不再支持通过物理备份恢复至自建数据库。如果您需要将加密后的集合恢复到自建数据库,您可以通过逻辑备份恢复至自建数据库,请参考逻辑备份恢复至自建数据库
注意事项
- TDE功能开通后无法关闭。
- 当前TDE功能的开通粒度为实例,仅支持对集合进行加密。如果业务上有特殊需求,您可以在创建集合时,指定该集合不被加密,具体操作可以参考下文设置指定的集合不被加密。
- TDE功能开通后,仅加密新创建的集合,已有的集合不会被加密。
- TDE功能所使用的密钥,由密钥管理服务KMS(Key Management Service)统一生成和管理,云数据库MongoDB不提供加密所需的密钥,请参密钥管理服务。
- 在开启透明加密过程当中,请避免进行DDL的操作,有可能出现新建集合不能正常读写的情况。
操作步骤
2.在页面左上角,选择实例所在的地域。
3.在左侧导航栏,单击副本集实例列表或分片集群实例列表。
- 找到目标实例,单击实例名称。
5.点击左侧的"安全管理"项,进入到安全管理。
- 点击TDE按钮
- 根据提示开启密钥管理服务,通过KMS页面生成BAIDU_AES_256或者AES_256类型的密钥
- 返回透明加密页面,单击开通按钮,开启透明加密
设置指定的集合不被加密
开启TDE加密后,所有新创建的集合都会被加密。如果业务上有特殊需求,您可以在创建集合时,指定该集合不被加密。
- 通过Mongo Shell连接数据库。如何连接,请参见通过Mongo Shell连接数据库
- 执行如下命令创建集合,指定该集合不被加密。
- 语法
db.createCollection("<collection_name>",{ storageEngine: { wiredTiger: { configString: "encryption=(name=none)" } } })
- 示例
db.createCollection("test_collection",{ storageEngine: { wiredTiger: { configString: "encryption=(name=none)" } } })