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

CSFLE 如何解密文档

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

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

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

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

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

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

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

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

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

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

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

    对于Amazon Web Services (AWS) KMS,将数据加密密钥发送到您的 AWS KMS实例进行解密。如果集合扫描不存在,或者连接配置未授予对集合扫描的访问权限,则解密失败,并且驾驶员会返回错误。

    提示

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

    对于Google Cloud Platform (GCP) KMS,将数据加密密钥发送到GCP KMS实例进行解密。如果集合扫描不存在,或者连接配置未授予对集合扫描的访问权限,则解密失败,并且驾驶员会返回错误。

    提示

    要学习;了解如何使用Google Cloud Platform KMS进行自动加密,请参阅通过GCP使用客户端字段级加密。

    对于Azure Key Vault,将数据加密密钥发送到Azure Key Vault实例进行解密。如果集合扫描不存在,或者连接配置未授予对集合扫描的访问权限,则解密失败,并且驾驶员会返回错误。

    提示

    若要学习;了解如何使用Azure Key Vault进行自动加密,请参阅在 Azure 中Azure客户端字段级加密。

    对于符合 KMIP 的KMS ,请从KMS中检索集合扫描 ,然后在本地使用该集合扫描对数据加密密钥进行解密。如果集合扫描不存在,或者连接配置未授予对集合扫描的访问权限,则解密失败,并且驾驶员会返回错误。

    提示

    要学习;了解如何使用符合 KMIP 的KMS进行自动加密,请参阅通过 KMIP 使用自动客户端字段级加密。

    对于本地密钥提供程序,从文件系统中检索集合扫描并使用它来解密数据加密密钥。如果未使用数据库配置中指定的本地密钥来加密数据加密密钥,则解密将失败,并且驾驶员会返回错误。

    警告

    不要在生产环境中使用本地密钥提供程序

    本地密钥提供程序是一种不安全的存储方法,建议不要用于生产环境。相反,应将客户主密钥存储在远程密钥管理系统 (KMS) 中。

    要学习;了解如何在 CSFLE实施中使用远程KMS ,请参阅 CSFLE 教程指南。

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

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

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

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

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

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

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