使用中加密
概述
您可以使用Scala驱动程序通过一组称为使用中加密的功能来加密特定文档字段。使用中加密允许您的应用程序在将数据发送到MongoDB之前加密数据,并查询具有加密字段的文档。
重要
兼容的加密库版本
Scala驱动程序使用mongodb-crypt加密库进行使用中加密。此驱动程序版本与mongodb-crypt
v5.2.1兼容。
从以下选项中选择Maven和sbt选项卡以查看如何使用指定的管理器将mongodb-crypt
依赖项添加到项目中
<dependencies> <dependency> <groupId>org.mongodb</groupId> <artifactId>mongodb-crypt</artifactId> <version>5.2.1</version> </dependency> </dependencies>
libraryDependencies += "org.mongodb" % "mongodb-crypt" % "5.2.1"
使用中加密可以防止未经授权的用户在数据发送到MongoDB或在其加密数据库中时查看明文数据。要启用应用程序中的使用中加密并授权其解密数据,您必须创建只有您的应用程序可以访问的加密密钥。只有有权访问加密密钥的应用程序才能访问已解密的明文数据。如果攻击者获得对数据库的访问权限,他们只能看到加密的密文数据,因为他们无法访问加密密钥。
您可以使用使用中加密来加密包含以下类型敏感数据的MongoDB文档字段
信用卡号
地址
健康信息
财务信息
任何其他敏感或可识别个人身份信息(PII)
MongoDB 提供以下功能以启用使用中加密:
可查询加密
可查询加密是下一代使用中加密功能,首次作为 MongoDB 服务器版本 6.0 的预览功能引入,并在 MongoDB 7.0 中作为通用可用(GA)功能推出。可查询加密支持在加密字段中搜索等于条件,并为每个值唯一加密。
重要
预览功能与 MongoDB 7.0 不兼容
MongoDB 6.0 中可查询加密的实现与 MongoDB 7.0 中引入的通用可用版本不兼容。可查询加密预览功能不再受支持。
有关可查询加密的更多信息,请参阅服务器手册中的 可查询加密。
客户端字段级加密
客户端字段级加密(CSFLE)首次在 MongoDB 服务器版本 4.2 中引入,并支持在加密字段中搜索等于条件。与可查询加密不同,您可以选择确定性的或随机的加密算法来加密字段。在使用 CSFLE 时,您只能查询使用确定性加密算法加密的加密字段。当您在 CSFLE 中使用随机加密算法加密字段时,它们可以被解密,但您不能对这些字段执行等于查询。当您使用可查询加密时,您不能指定加密算法,但可以查询所有加密字段。
当您确定性地加密一个值时,相同的输入值产生相同的输出值。虽然确定性加密允许您在那些加密字段上执行查询,但具有低基数(cardinality)的加密数据容易受到频率分析(frequency analysis)的破解。
有关 CSFLE 的更多信息,请参阅服务器手册中的 CSFLE。