CSFLE 如何解密文档
本页介绍了 CSFLE 如何使用您的数据加密密钥和客户主密钥的元数据来解密数据。
用于解密的元数据
当您使用 CSFLE 加密数据时,您加密的数据以以下方式存储BinData
子类型 6 对象,包括以下元数据
用于加密数据的
_id
用于加密数据的加密算法
数据加密密钥包含描述用于加密它们的客户主密钥的元数据。
驱动程序和mongosh
使用此元数据尝试自动解密您的数据。
自动解密过程
为了自动解密您的数据,您的 CSFLE 启用的客户端执行以下程序
检查您打算解密的字段用于数据加密密钥和加密算法的
BinData
blob元数据。检查当前数据库连接中配置的密钥保管库集合以获取指定的数据加密密钥。如果密钥保管库集合不包含指定的密钥,则自动解密失败,驱动程序返回错误。
检查用于加密密钥材料的客户主密钥(CMK)的数据加密密钥元数据。
解密数据加密密钥。此过程因KMS提供商而异
对于亚马逊网络服务(AWS)KMS,将数据加密密钥发送到您的AWS KMS实例进行解密。如果CMK不存在或连接配置没有授予对CMK的访问权限,则解密失败,驱动程序返回加密的
BinData
blob。提示
要了解如何使用亚马逊网络服务KMS进行自动加密,请参阅使用AWS的自动客户端侧字段级加密。
对于谷歌云平台(GCP)KMS,将数据加密密钥发送到您的GCP KMS实例进行解密。如果CMK不存在或连接配置没有授予对CMK的访问权限,则解密失败,驱动程序返回加密的
BinData
blob。提示
要了解如何使用谷歌云平台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 服务器,但没有访问所需的 CMK 和数据加密密钥,则无法解密 BinData
值。
自动加密读取行为
对于读取操作,驱动程序会在发出读取操作之前,使用您的加密方案 预先 加密查询文档中的字段值。
您的客户端应用程序随后使用 BinData
元数据自动解密您从 MongoDB 收到的文档。
要了解更多关于加密方案的信息,请参阅 加密方案。
了解更多
要了解如何配置客户端字段级加密的数据库连接,请参阅CSFLE 的 MongoClient 选项。
要了解更多关于数据加密密钥与客户主密钥之间关系的信息,请参阅加密密钥和密钥库。