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

轮换和重新封装加密密钥

在此页面上

  • Overview
  • 相关信息
  • 步骤
  • 在密钥管理系统上轮换客户主密钥
  • 使用轮换数据加密密钥 KeyVault.rewrapManyDataKey()

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

此过程向您展示如何使用 mongosh轮换可查询加密的加密密钥。轮换 DEK 包括使用新的客户主密钥重新包装 DEK,因此“轮换”和“重新包装”这两个术语有时可以互换使用。

完成本指南后,您应该能够在密钥管理系统上轮换客户主密钥 ( 客户主密钥 ),然后使用新的客户主密钥重新包装密钥保管库集合中的现有 DEK。

警告

轮换密钥时,请在删除密钥之前确认它们不用于加密任何密钥或数据。 如果删除DEK ,则使用该DEK加密的所有字段将永久不可读。 如果您删除 客户主密钥 ,则使用该 客户主密钥 通过 DEK 加密的所有字段将永久不可读。

有关此过程中所包含概念的详细说明,请参阅以下主题。

要了解有关密钥和密钥保管库的更多信息,请参阅加密密钥和密钥保管库。要查看支持的KMS提供商列表,请参阅KMS 提供商页面。

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

1

轮换客户主密钥的过程取决于您的KMS提供商。有关详细信息,请参阅密钥提供程序的文档:

轮换CMK后,MongoDB 会使用它来包装所有新的 DEK。 要重新包装现有 DEK,请继续执行以下步骤。

2

KeyVault.rewrapManyDataKey()方法自动解密多个数据加密密钥,并使用指定的客户主密钥重新加密。然后更新密钥保管库集合中的密钥。

该方法的语法如下:

let keyVault = db.getMongo().getKeyVault()
keyVault.rewrapManyDataKey(
{
"<Query filter document>"
},
{
provider: "<KMS provider>",
masterKey: {
"<dataKeyOpts Key>" : "<dataKeyOpts Value>"
}
}
)
  1. 指定查询筛选器文档以选择要轮换的密钥,或省略该参数以轮换密钥保管库集合中的所有密钥

    如果指定了查询筛选器 文档,但没有匹配的键,则不会轮换键。

  2. 指定KMS提供商

  3. 使用新的客户主密钥指定masterKey ,或省略该参数以使用现有的客户主密钥轮换密钥

使用新的客户主密钥重新包装 DEK 后,DEK 本身保持不变。密钥轮换过程是无缝的,不会中断您的应用程序。

后退

显式加密