对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
See how MongoDB 9.0 delivers up to 2x higher throughput.
MongoDB Branding Shape
Register now >
Docs 菜单

正在使用的加密

您可以使用Kotlin Sync驱动程序通过一组称为 正在使用的加密 的功能来加密特定文档字段。正在使用的加密允许您的应用程序在将数据发送到MongoDB之前对数据进行加密,并使用加密字段查询文档。

警告

MongoDB 8.2已知问题

mongocryptd 的 8.2.0 版本可能无法在Windows上运行。如果您在启动 mongocryptd 时指定 --logpath NUL 参数,此错误会影响驱动程序的“正在使用的加密” 。

要学习;了解有关此问题及其解决方法的更多信息,请参阅MongoDB8.2发布说明。

Kotlin Sync 驱动程序使用 mongodb-crypt 加密库用于正在使用的加密。此驱动程序版本与 mongodb-crypt v5.12.0 兼容。

提示

物料清单

我们建议将Java虚拟机(JVM)驱动程序物料清单 (BOM) 添加到您的应用程序中,以管理驱动程序工件的版本。这删除了为 BOM 涵盖的任何单个包指定版本的需要,从而简化了依赖项管理。要学习;了解更多信息,请参阅入门指南中的“添加驱动程序物料清单”步骤。

从以下Maven和Gradle标签页中进行选择,查看如何使用指定的管理器将mongodb-crypt依赖项添加到项目中:

<dependencies>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-crypt</artifactId>
</dependency>
</dependencies>
dependencies {
implementation("org.mongodb:mongodb-crypt")
}

正在使用的加密可以防止未经授权的用户查看发送到 MongoDB 或位于加密数据库中的明文数据。要在应用程序中启用正在使用的加密并授权其解密数据,必须创建只有应用程序才能访问的加密密钥。只有有权访问加密密钥的应用程序才能访问解密的明文数据。如果攻击者获得对数据库的访问权限,他们只能看到加密的密文数据,因为他们无法访问加密密钥。

您可以使用正在使用的加密来加密 MongoDB 文档中包含以下类型敏感数据的字段:

  • 信用卡号码

  • 地址

  • 健康信息

  • 财务信息

  • 任何其他敏感信息或个人身份信息 (PII)

MongoDB 提供以下功能来启用正在使用的加密:

Queryable Encryption(QE) 是一项正在使用的加密功能,支持查询唯一加密的字段值,包括相等、范围、前缀、后缀和子字符串查询。范围查询支持需要MongoDB Server 8.0 或更高版本。前缀、后缀和子字符串查询支持需要MongoDB Server 9.0 或更高版本。

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

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

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

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

提示

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

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