使用中加密
概述
您可以使用Java驱动程序通过一组称为使用中加密的功能来加密特定文档字段。使用中加密允许您的应用程序在将数据发送到MongoDB之前加密数据,并查询带有加密字段的文档。
重要
兼容加密库版本
Java驱动程序使用mongodb-crypt 在使用中的加密库。此驱动程序版本与以下兼容mongodb-crypt
v5.2.1。
从以下选项中选择Maven 和 Gradle 标签,了解如何通过指定的管理器将 mongodb-crypt
依赖项添加到项目中
<dependencies> <dependency> <groupId>org.mongodb</groupId> <artifactId>mongodb-crypt</artifactId> <version>5.2.1</version> </dependency> </dependencies>
dependencies { implementation '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 中引入的 GA 版本不兼容。可查询加密预览功能不再受支持。
想了解更多关于可查询加密的信息,请参阅服务器手册中的可查询加密。
客户端字段级加密
客户端字段级加密(CSFLE)自MongoDB服务器版本4.2引入,支持在加密字段中进行等值搜索。CSFLE与可查询加密的不同之处在于,您可以选择确定性或随机加密算法来加密字段。在使用CSFLE时,您只能查询使用确定性加密算法加密的加密字段。当您在CSFLE中使用随机加密算法加密字段时,它们可以被解密,但不能对这些字段执行等值查询。当您使用可查询加密时,您不能指定加密算法,但可以查询所有加密字段。
当您确定性加密一个值时,相同的输入值会产生相同的输出值。虽然确定性加密允许您对那些加密字段执行查询,但低基数加密数据容易受到频率分析的破解。
想了解更多关于CSFLE的信息,请参阅服务器手册中的CSFLE。