CSFLE 如何解密文档
本页介绍 CSFLE 如何使用数据加密密钥和客户主密钥中的元数据来解密数据。
用于解密的元数据
使用 CSFLE 加密数据时,加密的数据将存储为 BinData
子类型6对象,其中包括以下元数据:
用于加密数据的数据加密密钥的
_id
用于加密数据的加密算法
数据加密密钥包含元数据,描述使用什么客户主密钥对其进行加密。
驱动程序和 mongosh
使用此元数据尝试自动解密您的数据。
自动解密过程
要自动解密数据,启用 CSFLE 的客户端执行以下过程:
检查您打算解密的字段的
BinData
blob 元数据,了解用于加密该值的数据加密密钥和加密算法。检查当前数据库连接中配置的密钥保管库集合中是否有指定的数据加密密钥。如果密钥保管库集合不包含指定的密钥,则自动解密将失败,并且驱动程序会返回错误。
检查用于加密密钥材料的客户主密钥 (CMK) 的数据加密密钥元数据。
解密数据加密密钥。 此过程因 KMS 提供商而异:
对于 Amazon Web Services (AWS) KMS,请将数据加密密钥发送到您的 AWS KMS 实例进行解密。 如果 客户主密钥 不存在或者连接配置未授予对 客户主密钥 的访问权限,则解密失败,并且驱动程序会返回加密的
BinData
blob。提示
要了解如何使用 Amazon Web Services KMS 进行自动加密,请参阅使用 Amazon Web Services 自动客户端字段级加密。
对于 Google Cloud Platform (GCP) KMS,将数据加密密钥发送到 GCP KMS 实例进行解密。如果 CMK 不存在或者连接配置未授予对 CMK 的访问权限,则解密失败,并且驱动程序会返回加密的
BinData
blob。提示
要了解如何使用 Google Cloud Platform KMS 进行自动加密,请参阅通过 GCP 使用自动客户端字段级加密。
对于 Azure Key Vault,将数据加密密钥发送到您的 Azure Key Vault 实例进行解密。如果 CMK 不存在或者连接配置未授予对 CMK 的访问权限,则解密失败,驱动程序会返回加密的
BinData
blob。提示
要了解如何使用 Azure Key Vault 进行自动加密,请参阅在 Azure 中使用自动客户端字段级加密。
对于符合 KMIP 的 KMS,请从 KMS 中检索 CMK,然后在本地使用该 CMK 来解密数据加密密钥。如果 CMK 不存在或者连接配置未授予对 CMK 的访问权限,则解密失败,并且驱动程序会返回加密的
BinData
blob。提示
要了解如何使用符合 KMIP 的 KMS 进行自动加密,请参阅通过 KMIP 使用自动客户端字段级加密。
使用解密的数据加密密钥和适当的算法解密
BinData
值。
有权访问 MongoDB Server 的应用程序如果无权访问所需的 CMK 和数据加密密钥,则无法解密BinData
值。
自动加密读取行为
对于读操作,驱动程序会在发出读操作之前使用您的加密模式对查询文档中的字段值进行加密。
然后,客户端应用程序使用BinData
元数据自动解密从 MongoDB 收到的文档。
要了解有关加密模式的更多信息,请参阅加密模式。
了解详情
要了解如何为客户端字段级加密配置数据库连接,请参阅CSFLE 的 MongoClient 选项。
要详细了解数据加密密钥和客户主密钥之间的关系,请参阅加密密钥和密钥保管库。