文档菜单
文档首页
/
MongoDB 手册
/ / / / /

旋转和重包装加密密钥

本页内容

  • 概述
  • 相关信息
  • 步骤
  • 在密钥管理系统上旋转您的客户主密钥
  • 使用以下方式旋转数据加密密钥KeyVault.rewrapManyDataKey()

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

本程序演示了如何使用mongosh来旋转可查询加密的加密密钥。旋转数据加密密钥(DEK)涉及使用新的客户主密钥(CMK)对其进行重新包装,因此“旋转”和“重新包装”这两个术语有时可以互换使用。

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

警告

在旋转密钥之前,请确认它们在删除之前没有被用于加密任何密钥或数据。如果您删除了一个DEK,则使用该DEK加密的所有字段将永久无法读取。如果您删除了一个CMK,则使用该CMK加密的所有字段将永久无法读取。

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

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

有关如何使用每个支持的KMS提供程序设置可查询加密启用应用程序的教程,请参阅概述:启用可查询加密

1

旋转您的CMK的过程取决于您的KMS提供商。有关详细信息,请参阅密钥提供商的文档。

一旦您轮换了CMK,MongoDB将使用它来包装所有新的DEK。要重新包装现有的DEK,请继续以下步骤。

2

《KeyVault.rewrapManyDataKey()》方法会自动解密多个数据加密密钥,并使用指定的CMK重新加密它们。然后,它会更新密钥库集合中的密钥。

该方法具有以下语法

let keyVault = db.getMongo().getKeyVault()
keyVault.rewrapManyDataKey(
{
"<Query filter document>"
},
{
provider: "<KMS provider>",
masterKey: {
"<dataKeyOpts Key>" : "<dataKeyOpts Value>"
}
}
)
  1. 指定一个查询过滤器文档来选择要旋转的密钥,或者省略参数以旋转密钥库集合中的所有密钥

    如果您指定了查询过滤器文档,但没有密钥匹配,则不会旋转任何密钥。

  2. 指定KMS提供商

  3. 使用新的CMK指定masterKey,或省略参数以使用现有CMK旋转密钥

在用新的CMK重新包装后,您的DEK本身保持不变。密钥旋转过程是无缝的,不会中断您的应用程序。

返回

显式加密