AWS Key Management Service
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

什么是自定义密钥存储?

本主题介绍了 AWS KMS 自定义密钥存储中使用的一些概念。

AWS KMS 自定义密钥存储

密钥存储 是用于存储加密密钥的安全位置。AWS KMS 中的默认密钥存储还支持生成和管理其存储的密钥的方法。默认情况下,您在 AWS KMS 中创建的客户主密钥 (CMK) 在硬件安全模块 (HSM) 中生成并受其保护,这些模块是 FIPS 140-2 验证的加密模块。这些 CMK 绝不会让这些模块处于未加密状态。

但是,如果您需要更有力地控制 HSM,则可以创建由您拥有和管理的 AWS CloudHSM 集群中的 FIPS 140-2 3 级 HSM 支持的自定义密钥存储。

自定义密钥存储 是与 AWS CloudHSM 集群关联的 AWS KMS 资源。当您在自定义密钥存储中创建 AWS KMS CMK 时,AWS KMS 将在关联的 AWS CloudHSM 集群中生成 256 位、持久且不可导出的高级加密标准 (AES) 对称密钥。此密钥材料绝不会让您的 HSM 处于未加密状态。在自定义密钥存储中使用 CMK 时,会在集群中的 HSM 中执行加密操作。

自定义密钥存储将 AWS KMS 的方便、全面的密钥管理界面与 AWS 账户中的 AWS CloudHSM 集群提供的额外控制相结合。此集成功能可让您在 AWS KMS 中创建、管理和使用 CMK,同时保持对存储 CMK 的密钥材料的 HSM 的完全控制,包括管理集群、HSM 和备份。您可以使用 AWS KMS 控制台和 API 来管理自定义密钥存储及其 CMK。您还可以使用 AWS CloudHSM 控制台、API、客户端软件和关联的软件库来管理关联的集群。

您可以查看和管理自定义密钥存储,编辑其属性以及从其关联的 AWS CloudHSM 集群连接和断开它。如果您需要删除自定义密钥存储,则必须先删除自定义密钥存储中的 CMK,方法为计划其删除并等到宽限期结束。删除自定义密钥存储会从 AWS KMS 中移除资源,但不会影响您的 AWS CloudHSM 集群。

AWS CloudHSM 集群

每个 AWS KMS 自定义密钥存储均与一个 AWS CloudHSM 集群关联。当您在自定义密钥存储中创建客户主密钥 (CMK) 时,AWS KMS 将在关联的集群中创建 CMK 的密钥材料。当您在自定义密钥存储中使用 CMK 时,将在关联的集群中执行加密操作。

每个 AWS CloudHSM 集群只能与一个自定义密钥存储关联。您选择的集群无法与另一个密钥存储关联或与关联的集群共享备份历史记录。集群必须初始化且处于活动状态,并且必须与 AWS KMS 自定义密钥存储位于相同的 AWS 账户和区域中。您可以创建新集群或使用现有集群。AWS KMS 不需要集群的专用权。要在自定义密钥存储中创建 CMK,其关联的集群必须包含至少两个活动 HSM。所有其他操作都只需要一个 HSM。

您在创建自定义密钥存储时指定该集群,并且无法更改它。但是,您可以替换与原始集群共享备份历史记录的任何集群。这样,您就可以删除该集群(如有必要),然后将它替换为从其备份之一创建的集群。您可以完全控制关联的 AWS CloudHSM 集群,从而能管理用户和密钥、创建和删除 HSM 以及使用和管理备份。

当您准备好使用自定义密钥存储时,您可以将其连接到关联的 AWS CloudHSM 集群。您可以随时连接和断开自定义密钥存储。连接自定义密钥存储后,您可以创建和使用其 CMK。断开自定义密钥存储后,您可以查看和管理自定义密钥存储及其 CMK。但您无法创建新 CMK 或在自定义密钥存储中使用 CMK 以进行加密操作。

kmsuser 加密用户

为了在关联的 AWS CloudHSM 集群中代表您创建和管理密钥材料,AWS KMS 在名为 kmsuser 的集群中使用专用 AWS CloudHSM 加密用户 (CU)。kmsuser CU 是一个标准 CU 账户,它将自动同步到集群中的所有 HSM 并保存在集群备份中。

在创建自定义密钥存储之前,您使用 cloudhsm_mgmt_util 中的 createUser 命令在 AWS CloudHSM 集群中创建 kmsuser CU 账户。然后,当您创建自定义密钥存储时,您向 AWS KMS 提供 kmsuser 账户密码。当您连接自定义密钥存储时,AWS KMS 将以 kmsuser CU 身份登录到集群并轮换其密码。

只要自定义密钥存储处于连接状态,AWS KMS 将保持以 kmsuser 身份登录。您不应将此 CU 账户用于其他目的。但是,您保留对 kmsuser CU 账户的最终控制权。您可以随时查找 kmsuser 拥有的密钥的密钥句柄。必要时,您可以断开自定义密钥存储,更改 kmsuser 密码,以 kmsuser 身份登录到集群并查看和管理 kmsuser 拥有的密钥。

有关创建 kmsuser CU 账户的说明,请参阅创建 kmsuser 加密用户

自定义密钥存储中的 CMK

您可以使用 AWS 管理控制台或 AWS KMS API 在自定义密钥存储中创建客户主密钥 (CMK)。您将使用对任何 AWS KMS CMK 使用的同一方法。唯一的区别在于您必须标识自定义密钥存储并指定密钥材料的源是 AWS CloudHSM 集群。

当您在自定义密钥存储中创建一个 CMK 时,AWS KMS 将在 AWS KMS 中创建该 CMK,并在其关联集群中生成 256 位、持久且不可导出的高级加密标准 (AES) 对称备用密钥。尽管 AWS CloudHSM 支持不同类型的对称和非对称密钥,但 AWS KMS 和自定义密钥存储仅支持 AES 对称密钥。

您可以在 AWS KMS 控制台中查看自定义密钥存储中的 CMK,并使用控制台选项显示自定义密钥存储库 ID。您还可以使用 DescribeKey 操作来查找自定义密钥存储库 ID 和 AWS CloudHSM 集群 ID。

自定义密钥存储中的 CMK 与 AWS KMS 中的任何 CMK 的工作方式相同。授权用户需要相同的权限来使用和管理 CMK。您可使用相同的控制台过程和 API 操作来查看和管理自定义密钥存储中的 CMK。这包括启用和禁用 CMK、创建和使用标签和别名以及设置和更改 IAM 和密钥策略。您可以使用自定义密钥存储中的 CMK 进行加密操作,并将它们与支持使用客户托管 CMK 的集成式 AWS 服务一起使用。但是,您无法启用自动密钥轮换导入密钥材料到自定义密钥存储中的 CMK。

您还可以将相同的过程用于自定义密钥存储中的 CMK 的计划删除。在等待期限结束后,AWS KMS 将从 KMS 中删除 CMK。然后,它将尽可能从关联的 AWS CloudHSM 集群中删除 CMK 的密钥材料。但是,您可能需要从集群及其备份中手动删除孤立密钥材料