Docs 主页 → 开发应用程序 → MongoDB Manual
CSFLE 如何解密文档
MongoDB 7.0 及更高版本推出了 MongoDB Queryable Encryption 功能 (GA)。要了解有关 Queryable Encryption 的更多信息,并比较它与客户端字段级加密的优势,请参阅 Queryable Encryption。
本页介绍 CSFLE 如何使用数据加密密钥和客户主密钥中的元数据来解密数据。
用于解密的元数据
使用 CSFLE 加密数据时,加密的数据将存储为 BinData
子类型 6 对象,其中包括以下元数据:
用于加密数据的数据加密密钥的
_id
用于加密数据的加密算法
数据加密密钥包含元数据,描述使用什么客户主密钥对其进行加密。
驱动程序和 mongosh
使用此元数据尝试自动解密您的数据。
自动解密过程
要自动解密数据,启用 CSFLE 的客户端执行以下过程:
检查您打算解密的字段的
BinData
blob 元数据,了解用于加密该值的数据加密密钥和加密算法。检查当前数据库连接中配置的密钥保管库集合中是否有指定的数据加密密钥。如果密钥保管库集合不包含指定的密钥,则自动解密将失败,并且驱动程序会返回错误。
检查用于加密密钥材料的客户主密钥 (CMK) 的数据加密密钥元数据。
解密数据加密密钥。 此过程因 KMS 提供商而异:
使用解密的数据加密密钥和适当的算法解密
BinData
值。
有权访问 MongoDB Server 的应用程序如果无权访问所需的 CMK 和数据加密密钥,则无法解密BinData
值。
自动加密读取行为
对于读操作,驱动程序会在发出读操作之前使用您的加密模式对查询文档中的字段值进行加密。
然后,客户端应用程序使用BinData
元数据自动解密从 MongoDB 收到的文档。
要了解有关加密模式的更多信息,请参阅加密模式。
了解详情
要了解如何为客户端字段级加密配置数据库连接,请参阅特定于 CSFLE 的 MongoClient 选项。
要详细了解数据加密密钥和客户主密钥之间的关系,请参阅密钥和密钥保管库。