Docs 菜单
Docs 主页
/
MongoDB Manual
/ / / / /

加密密钥管理

在此页面上

  • 加密组件
  • 使用 mongosh 轮换加密密钥
  • 支持的密钥管理服务
  • 使用远程 KMS 的原因
  • 了解详情

在本指南中,您可以了解如何在启用了 Queryable Encryption 的应用程序中使用密钥管理系统 ( KMS ) 托管加密密钥。

MongoDB 使用以下组件来执行 Queryable Encryption:

  • 数据加密密钥 (DEK)

  • 客户主密钥 (CMK)

  • 密钥保管库集合

  • 密钥管理系统 (KMS)

要学习;了解有关密钥和密钥保管库的更多信息,请参阅密钥和密钥保管库。

您可以使用 KeyVault.rewrapManyDataKey()方法轮换加密密钥。 rewrapManyDataKey方法自动解密多个数据密钥,并使用指定的客户主密钥重新加密这些密钥。 然后,它会更新密钥保管库集合中轮换的密钥。 此方法允许您根据两个可选参数轮换加密密钥:

  • 用于指定要轮换的键的查询筛选器文档。 如果没有数据密钥与给定的筛选器匹配,则不会轮换任何密钥。 省略筛选器可轮换密钥保管库集合中的所有密钥。

  • 表示新 CMK 的对象。可以省略该对象以使用当前 CMK 轮换数据密钥。

rewrapManyDataKey方法采用以下语法:

let keyVault = db.getMongo().getKeyVault()
keyVault.rewrapManyDataKey(
{
"<Your custom filter>"
},
{
provider: "<KMS provider>",
masterKey: {
"<dataKeyOpts Key>" : "<dataKeyOpts Value>"
}
}
)

Queryable Encryption 支持以下密钥管理系统提供商:

  • Amazon Web Services KMS

  • Azure Key Vault

  • Google Cloud KMS

  • 任何符合 KMIP 的密钥管理系统

  • 本地密钥提供程序(仅供测试)

要了解有关这些提供商的更多信息,包括显示应用程序如何使用它们来执行Queryable Encryption的图表,请参阅KMS 提供商。

较之使用本地文件系统来托管 CMK,使用远程密钥管理系统来管理客户主密钥具有以下优势:

  • 安全存储密钥并进行访问审核

  • 降低了访问权限问题的风险

  • 密钥对远程客户端的可用性以及将密钥分发给远程客户端

  • 自动密钥备份和恢复

  • 集中加密密钥生命周期管理

此外,对于以下KMS提供商,您的KMS会远程加密和解密您的数据加密密钥,确保您的客户主密钥永远不会暴露给启用了 Queryable Encryption 的应用程序:

  • Amazon Web Services KMS

  • Azure Key Vault

  • Google Cloud KMS

有关详细介绍如何使用每个受支持的KMS提供商设置启用了 Queryable Encryption 的应用程序的教程,请参阅以下页面:

后退

KMS 提供商