显式加密
Overview
了解如何使用Queryable Encryption的显式加密机制。显式加密允许您指定用于加密字段的密钥材料。它提供了对安全性的细粒度控制,但代价是配置collection和为 MongoDB 驱动程序编写代码时的复杂性增加。
显式加密是一种机制,您可以在其中为对数据库执行的每个操作指定如何加密和解密文档中的字段。
以下 MongoDB 产品提供显式加密:
MongoDB 社区服务器
MongoDB Enterprise Advanced
MongoDB Atlas
使用显式加密
创建 ClientEncryption 实例
ClientEncryption
是跨驱动程序和 mongosh
使用的抽象,封装了显式加密中涉及的 Key Vault集合和 KMS操作。
要创建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 实施,请参阅字段加密和可查询性。
了解详情
要了解有关密钥保管库集合、数据加密密钥和客户主密钥的详情,请参阅密钥和密钥保管库。
要了解有关KMS提供程序和kmsProviders
对象的更多信息,请参阅KMS 提供程序。