“文档” 菜单
文档首页
/
MongoDB Manual
/ / / / /

显式加密

在此页面上

  • 概述
  • 使用显式加密
  • 创建一个 ClientEncryption实例
  • 加密读写操作中的字段
  • 自动解密
  • 服务器端字段级加密实施
  • 了解详情

了解如何使用Queryable Encryption的显式加密机制。

显式加密是一种机制,您可以在其中指定在对数据库执行的每次操作中希望如何加密和解密文档中的字段。

以下使用 6.0 或更高版本的 MongoDB 产品支持显式加密:

  • MongoDB 社区服务器

  • MongoDB Enterprise Advanced

  • MongoDB 阿特拉斯

以下部分概述了如何在启用了 Queryable Encryption 的应用程序中使用显式加密:

ClientEncryption 是跨驱动程序和mongosh使用的抽象,用于封装显式加密中涉及的 Key Vault 集合和 KMS操作。

要创建ClientEncryption实例,请指定:

  • 配置为能够访问托管客户主密钥的KMSkmsProviders对象

  • 密钥保管库集合的命名空间

  • 如果您使用 MongoDB Community Server,请将 bypassQueryAnalysis 选项设置为 True

  • 可以访问您的密钥保管库集合的 MongoClient 实例

有关更多ClientEncryption选项,请参阅适用于 Queryable Encryption 的 MongoClient 选项。

注意

代码示例当前不可用,但很快就会提供。

您必须在整个应用程序中更新读写操作,使应用程序在执行读写操作前对字段进行加密。

要加密字段,请使用ClientEncryption实例的encrypt方法。 指定以下内容:

  • 要加密的值

  • 使用的算法, IndexedUnindexed

  • 数据加密密钥的 ID

  • 争用因子(如果您使用的是Indexed算法)

  • 如果执行读取操作,请设置为字段定义的查询类型(如果使用Indexed算法)

注意

查询类型

查询类型仅适用于读取操作。

要了解有关查询类型的更多信息,请参阅查询类型。

如果在字段上指定queryType ,请使用Indexed算法。

Indexed 支持相等查询。 Indexed字段需要在服务器上建立索引。 通过在 db.createCollection() 中指定encryptedFields选项来创建索引

要自动解密字段,必须按如下方式配置MongoClient实例:

  • 指定 kmsProviders 对象

  • 指定密钥保管库集合

  • 如果您使用 MongoDB Community Server,请将 bypassQueryAnalysis 选项设置为 True

注意

MongoDB Community Server 支持自动解密

虽然自动加密需要 MongoDB Enterprise 或 MongoDB Atlas,但使用 6.0 或更高版本的以下 MongoDB 产品中可以使用自动解密:

  • MongoDB 社区服务器

  • MongoDB Enterprise Advanced

  • MongoDB 阿特拉斯

指定加密字段以强制对collection中的特定字段进行加密。

Indexed 字段需要在服务器上有索引。 通过在db.createCollection()中指定encryptedFields选项来创建索引。

在配置为强制对某些字段进行加密的 MongoDB 实例上使用显式加密机制执行可查询加密的客户端必须按照 MongoDB 实例上指定的方式对这些字段进行加密。

要了解如何设置服务器端 Queryable Encryption 实施,请参阅字段加密和可查询性。

要了解有关密钥保管库集合、数据加密密钥和客户主密钥的详情,请参阅密钥和密钥保管库

要了解有关KMS提供程序和kmsProviders对象的更多信息,请参阅KMS 提供程序。

← 加密集合管理