Overview
您可以使用 .NET/C# 驱动程序通过一组称为正在使用的加密的功能来加密特定文档字段。正在使用的加密允许应用程序在将数据发送到 MongoDB之前对数据进行加密,并使用加密字段查询文档。
警告
MongoDB 8.2已知问题
在Windows平台上,您无法使用默认生成参数运行mongocryptd 的 8.2.0 版本。要避免此问题,您必须手动启动 mongocryptd进程并指定 --logpath 参数。或者,使用自动加密共享库而不是 mongocryptd。
要学习;了解有关此问题及其解决方法的更多信息,请参阅MongoDB 8.2发布说明中的已知问题。
重要
配置为使用 客户端字段级加密或Queryable Encryption自动加密的客户端不支持 $rerank 阶段。包含 $rerank 的管道失败,并显示 Unrecognized pipeline stage name: '$rerank' 等错误。
该限制适用于所有集合,包括没有加密字段的集合,以及在子管道内使用 $rerank,例如 $unionWith。
正在使用的加密可以防止未经授权的用户查看发送到 MongoDB 或位于加密数据库中的明文数据。要在应用程序中启用正在使用的加密并授权其解密数据,必须创建只有应用程序才能访问的加密密钥。只有有权访问加密密钥的应用程序才能访问解密的明文数据。如果攻击者获得对数据库的访问权限,他们只能看到加密的密文数据,因为他们无法访问加密密钥。
您可以使用正在使用的加密来加密 MongoDB 文档中包含以下类型敏感数据的字段:
信用卡号码
地址
健康信息
财务信息
任何其他敏感信息或个人身份信息 (PII)
MongoDB 提供以下功能来启用正在使用的加密:
可查询加密
Queryable Encryption (QE) 是一项正在使用的加密功能,支持查询独特加密的字段值,包括等值、范围、前缀、后缀和子字符串查询。范围查询支持需要 MongoDB Server 8.0 或更高版本。前缀、后缀和子字符串查询支持需要 MongoDB Server 9.0 或更高版本。
下表列出 .NET/C# 驱动程序方法以及对应的 MongoDB Server 操作符,用于前缀、后缀和子字符串查询:
.NET/ C#驱动程序程序方法 | 说明 | MongoDB Server Operator |
|---|---|---|
| 如果 string 值的首字符与指定 string 中的字符匹配,则返回 | |
| 如果 string 值的最后几个字符与指定 string 中的字符匹配,则返回 | |
| 如果 string 值中的任何字符子集与指定 string 中的字符匹配,则返回 | |
| 如果规范化 string 值与指定 string 的规范化 string 版本匹配,则返回 |
要了解有关可查询加密的更多信息,请参阅服务器手册中有关可查询加密的内容。
客户端字段级加密 (Client-Side Field Level Encryption)
客户端字段级加密 (CSFLE) 支持搜索加密字段的相等性。MongoDB Server 版本 4.2 引入了 CSFLE。
与 QE 不同,CSFLE 要求您为每个字段选择一种加密算法,该选择决定了您是否可以查询该字段。确定性加密对于相同的输入值总是产生相同的输出值。因为匹配的值在加密后看起来是一样的,所以您可以在这些字段上运行相等查询。随机加密每次加密相同的输入值时都会产生不同的输出值。驱动程序可以解密这些字段,但您无法查询它们。
确定性加密以牺牲部分机密性为代价来换取查询支持。当加密字段的关联基数较低时,攻击者可以比较每个加密值出现的频率,从而推断出原始值。这种技术称为频率分析。要保护不进行查询的字段,请使用随机加密。
要了解有关 CSFLE 的更多信息,请参阅服务器手册中的 CSFLE。