对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。

CSFLE 如何解密文档

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

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

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

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

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

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

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

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

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

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

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

    对于 Amazon Web Services (AWS) KMS,请将数据加密密钥发送到您的 Amazon Web Services KMS 实例进行解密。如果 客户主密钥 不存在或者如果连接配置未授予对 客户主密钥 的访问权限,则解密失败,驱动程序会返回错误。

    提示

    要了解如何使用 Amazon Web Services KMS 进行自动加密,请参阅使用 Amazon Web Services 自动客户端字段级加密。

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

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

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

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

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

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

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