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

正在使用的加密

您可以使用 .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

EncStrStartsWith()

如果 string 值的首字符与指定 string 中的字符匹配,则返回 true。

EncStrEndsWith()

如果 string 值的最后几个字符与指定 string 中的字符匹配,则返回 true。

EncStrContains()

如果 string 值中的任何字符子集与指定 string 中的字符匹配,则返回 true。

EncStrNormalizedEq()

如果规范化 string 值与指定 string 的规范化 string 版本匹配,则返回 true。

要了解有关可查询加密的更多信息,请参阅服务器手册中有关可查询加密的内容。

客户端字段级加密 (CSFLE) 支持搜索加密字段的相等性。MongoDB Server 版本 4.2 引入了 CSFLE。

与 QE 不同,CSFLE 要求您为每个字段选择一种加密算法,该选择决定了您是否可以查询该字段。确定性加密对于相同的输入值总是产生相同的输出值。因为匹配的值在加密后看起来是一样的,所以您可以在这些字段上运行相等查询。随机加密每次加密相同的输入值时都会产生不同的输出值。驱动程序可以解密这些字段,但您无法查询它们。

确定性加密以牺牲部分机密性为代价来换取查询支持。当加密字段的关联基数较低时,攻击者可以比较每个加密值出现的频率,从而推断出原始值。这种技术称为频率分析。要保护不进行查询的字段,请使用随机加密。

提示

要了解有关这些概念的更多信息,请参阅以下维基百科条目:

要了解有关 CSFLE 的更多信息,请参阅服务器手册中的 CSFLE。