Overview
了解如何使用Queryable Encryption的显式加密机制。显式加密允许您指定用于加密字段的密钥材料。它提供了对安全性的细粒度控制,但代价是配置collection和为 MongoDB 驱动程序编写代码时的复杂性增加。
显式加密是一种机制,您可以在其中为对数据库执行的每个操作指定如何加密和解密文档中的字段。
以下 MongoDB 产品提供显式加密:
MongoDB 社区服务器
MongoDB Enterprise Advanced
MongoDB Atlas
使用显式加密
创建 ClientEncryption 实例
ClientEncryption is an abstraction used across drivers and mongosh that encapsulates the Key Vault collection and KMS operations involved in explicit encryption.
要创建ClientEncryption实例,请指定:
经过配置,具备您客户主密钥 KMS 托管提供商访问权限的
kmsProviders对象密钥保管库集合的命名空间
如果您使用 MongoDB Community Server,请将
bypassQueryAnalysis选项设置为True可以访问您的密钥保管库集合的
MongoClient实例
有关更多ClientEncryption选项,请参阅适用于 Queryable Encryption 的 MongoClient 选项。
加密读写操作中的字段
您必须在整个应用程序中更新读写操作,使应用程序在执行读写操作前对字段进行加密。
要加密字段,请使用ClientEncryption实例的encrypt方法。 指定以下内容:
要加密的值
使用的算法,
Indexed或Unindexed数据加密密钥的 ID
争用因子(如果您使用的是
Indexed算法)如果执行读取操作,请设置为字段定义的查询类型(如果使用
Indexed算法)
算法选择
如果在字段上指定queryType ,请使用Indexed算法。
Indexed 支持相等查询。 Indexed字段需要在服务器上建立索引。 通过在 db.createCollection() 中指定encryptedFields选项来创建索引
自动解密
要自动解密字段,请按如下方式配置MongoClient实例:
指定
kmsProviders对象指定密钥保管库集合
如果您使用 MongoDB Community Server,请将
bypassQueryAnalysis选项设置为True
注意
MongoDB Community 服务器中的自动解密
MongoDB Community 服务器提供自动解密功能。自动加密需要 MongoDB Enterprise 或 MongoDB Atlas。
服务器端字段级加密实施
指定加密字段以强制对collection中的特定字段进行加密。
Indexed 字段需要在服务器上有索引。 通过在db.createCollection()中指定encryptedFields选项来创建索引。
如果您的 MongoDB 实例强制执行特定字段的加密,则任何使用显式加密执行 Queryable Encryption 的客户端都必须按指定方式对这些字段进行加密。 要了解如何设置服务器端 Queryable Encryption 实施,请参阅字段加密和可查询性。
了解详情
要了解有关密钥保管库集合、数据加密密钥和客户主密钥的更多信息,请参阅加密密钥和密钥保管库。
To learn more about KMS providers and kmsProviders objects, see KMS Providers.