Docs 菜单

Docs 主页开发应用程序MongoDB Manual

CSFLE 如何解密文档

在此页面上

  • 用于解密的元数据
  • 自动解密过程
  • 自动加密读取行为
  • 了解详情

本页介绍 CSFLE 如何使用数据加密密钥和客户主密钥中的元数据来解密数据。

使用 CSFLE 加密数据时,加密的数据将存储为 BinData子类型 6 对象,其中包括以下元数据:

  • 用于加密数据的数据加密密钥的_id

  • 用于加密数据的加密算法

数据加密密钥包含元数据,描述使用什么客户主密钥对其进行加密。

驱动程序和 mongosh使用此元数据尝试自动解密您的数据。

要自动解密数据,启用 CSFLE 的客户端执行以下过程:

  1. 检查您打算解密的字段的BinData blob 元数据,了解用于加密该值的数据加密密钥和加密算法。

  2. 检查当前数据库连接中配置的密钥保管库集合中是否有指定的数据加密密钥。如果密钥保管库集合不包含指定的密钥,则自动解密将失败,并且驱动程序会返回错误。

  3. 检查用于加密密钥材料的客户主密钥 (CMK) 的数据加密密钥元数据。

  4. 解密数据加密密钥。 此过程因 KMS 提供商而异:

  5. 使用解密的数据加密密钥和适当的算法解密BinData值。

有权访问 MongoDB Server 的应用程序如果无权访问所需的 CMK 和数据加密密钥,则无法解密BinData值。

对于读操作,驱动程序会在发出读操作之前使用您的加密模式对查询文档中的字段值进行加密。

然后,客户端应用程序使用BinData元数据自动解密从 MongoDB 收到的文档。

要了解有关加密模式的更多信息,请参阅加密模式。

要了解如何为客户端字段级加密配置数据库连接,请参阅特定于 CSFLE 的 MongoClient 选项。

要详细了解数据加密密钥和客户主密钥之间的关系,请参阅密钥和密钥保管库。

← CSFLE 加密组件