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