创建自定义密钥存储
您可以在账户中创建一个或多个自定义密钥存储。每个自定义密钥存储均相同 Amazon Web Services 区域 区域中的一个 Amazon CloudHSM 集群关联。在创建自定义密钥存储之前,您需要汇编先决条件。然后,在使用自定义密钥存储之前,您必须连接它和它的 Amazon CloudHSM 集群。
如果您尝试创建一个属性值与断开连接的现有自定义密钥存储相同的自定义密钥存储,Amazon KMS 不会创建新的自定义密钥存储,也不会引发异常或显示错误。相反,Amazon KMS 将副本识别为重试的可能结果,并返回现有自定义密钥存储的 ID。
汇编先决条件
每个 Amazon KMS 自定义密钥存储均由一个 Amazon CloudHSM 集群提供支持。要创建自定义密钥存储,您必须指定一个尚未与其他密钥存储关联的活动 Amazon CloudHSM 集群。您还需要在集群的 HSM 中创建一个专用的加密用户 (CU),Amazon KMS 可使用该用户代表您创建和管理密钥。
在创建自定义密钥存储之前,请执行以下操作:
- 选择一个 Amazon CloudHSM 集群
-
每个自定义密钥存储正好与一个 Amazon CloudHSM 集群关联。在自定义密钥存储中创建 Amazon KMS keys 时,Amazon KMS 会在 Amazon KMS 中创建 KMS 密钥元数据,例如 ID 和 Amazon Resource Name (ARN)。然后,它会在关联集群的 HSM 中创建密钥材料。您可以创建新的 Amazon CloudHSM 集群或使用现有的集群。Amazon KMS 不需要对集群的独占访问权限。
所选 Amazon CloudHSM 集群将与自定义密钥存储永久关联。在创建自定义密钥存储后,您可以为关联集群更改集群 ID,但您指定的集群必须与原始集群共享备份历史记录。要使用不相关的集群,您需要创建新的自定义密钥存储。
您选择的 Amazon CloudHSM 集群必须具有以下特征:
-
集群必须处于活动状态。
您必须创建集群,将其初始化,安装适用于您的平台的 Amazon CloudHSM 客户端软件,然后激活该集群。有关详细说明,请参阅 Amazon CloudHSM 用户指南中的入门部分。
-
集群必须与 Amazon KMS 自定义密钥存储位于相同的账户和区域中。您无法将一个区域中的自定义密钥存储与另一个区域中的群集相关联。要在多个区域中创建密钥基础设施,必须在每个区域中创建密钥存储和集群。
-
集群不能与同一账户和区域中的其他自定义密钥存储关联。此账户和区域中的每个自定义密钥存储都必须与不同的 Amazon CloudHSM 集群关联。您无法指定已与自定义密钥存储关联的集群,也无法指定与关联集群共享备份历史记录的集群。共享备份历史记录的集群具有相同的集群证书。要查看集群的集群证书,请使用 Amazon CloudHSM 控制台或 DescribeClusters 操作。
如果您将 Amazon CloudHSM 集群备份到不同的区域,则它将被视为一个不同的集群,并且您可以将备份关联到其区域中的自定义密钥存储。但是,两个自定义密钥存储中的 KMS 密钥不可互操作,即使它们具有相同的备用密钥。Amazon KMS 会将元数据绑定到加密文字,以确保只能由加密所用 KMS 密钥进行解密。
-
必须在区域中的至少两个可用区中为集群配置私有子网。由于 Amazon CloudHSM 并非在所有可用区中都受支持,因此,我们建议您在该区域的所有可用区中创建私有子网。您无法为现有集群重新配置子网,但可以从备份创建集群(在集群配置中具有不同的子网)。
重要 创建自定义密钥存储后,不要删除为其 Amazon CloudHSM 集群配置的任何私有子网。如果 Amazon KMS 未找到集群配置中的所有子网,则尝试连接到自定义密钥存储会失败,并显示
SUBNET_NOT_FOUND连接错误状态。有关详细信息,请参阅如何修复连接故障。 -
每个集群的私有子网必须具有至少一个可用的 IP 地址(最好有两个)来连接自定义密钥存储。如果与集群关联的任何私有子网的 IP 地址不足,则连接将失败并显示 INSUFFICIENT_FREE_ADDRESSES_IN_SUBNET 连接错误代码。由于您无法向现有子网添加 IP 地址,因此如果您无法释放地址空间,则需要从具有不同私有子网的备份中创建集群。
-
集群的安全组 (
cloudhsm-cluster-) 必须包含允许端口 2223-2225 上的 TCP 流量的入站规则和出站规则。入站规则中的 Source (源) 和出站规则中的 Destination (目标) 必须匹配安全组 ID。在创建集群时,默认情况下会设置这些规则。请勿删除或更改它们。<cluster-id>-sg -
集群必须在不同的可用区中包含至少两个活动 HSM。要验证 HSM 的数量,请使用 Amazon CloudHSM 控制台或 DescribeClusters 操作。如有必要,您可以添加 HSM。
-
- 查找信任锚点证书
-
在创建自定义密钥存储时,您必须将 Amazon CloudHSM 集群的信任锚点证书上传到 Amazon KMS。Amazon KMS 需要信任锚点证书才能将自定义密钥存储连接到集群。
每个活动 Amazon CloudHSM 集群均有一个信任锚点证书。在初始化集群时,您将生成此证书,将它保存在
customerCA.crt文件中,并将它复制到已连接到集群的主机。 - 为 Amazon KMS 创建
kmsuser加密用户 -
为了管理您的自定义密钥存储,Amazon KMS 会登录到选定集群中的 kmsuser 加密用户 (CU) 账户。在创建您的自定义密钥存储之前,您必须创建
kmsuserCU。然后,当您创建您的自定义密钥存储时,可以向 Amazon KMS 提供kmsuser的密码。每当您将自定义密钥存储连接到其关联的 Amazon CloudHSM 集群,Amazon KMS 就会轮换kmsuser密码。重要 在创建
kmsuserCU 时,请勿指定2FA选项。如果您这样做,Amazon KMS 将无法登录,并且您的自定义密钥存储将无法连接到此 Amazon CloudHSM 集群。一旦指定 2FA,便无法撤消它。相反,您必须删除 CU 并重新创建它。要创建
kmsuserCU,请使用以下过程。-
按 Amazon CloudHSM用户指南的准备运行 cloudhsm_mgmt_util 部分中所述启动 cloudhsm_mgmt_util。
-
在 cloudhsm_mgmt_util 中使用 createUser 命令创建名为
kmsuser的 CU。密码必须由 7 到 32 个字母数字字符组成。它区分大小写,并且不能包含任何特殊字符。例如,以下示例命令将创建密码为
kmsPswd的kmsuserCU。aws-cloudhsm>createUser CU kmsuserkmsPswd
-
创建自定义密钥存储(控制台)
当您在 Amazon Web Services Management Console 中创建自定义密钥存储时,您可以添加并创建先决条件作为工作流的一部分。但是,如果您事先已汇编这些先决条件,则此过程会更快。
-
登录到 Amazon Web Services Management Console,然后通过以下网址打开 Amazon Key Management Service (Amazon KMS) 控制台:https://console.aws.amazon.com/kms
。 -
要更改 Amazon Web Services 区域,请使用页面右上角的区域选择器。
-
在导航窗格中,选择 Custom key stores(自定义密钥存储)。
-
选择 Create key store (创建密钥存储)。
-
为自定义密钥存储输入友好名称。该名称在账户中必须是唯一的。
-
为自定义密钥存储选择一个 Amazon CloudHSM 集群。或者,要创建新的 Amazon CloudHSM 集群,请选择 Create an Amazon CloudHSM cluster(创建 Amazon CloudHSM 集群)链接。
该集群必须满足要求(与关联自定义密钥存储相关)。该菜单显示您的账户和区域中尚未与自定义密钥存储关联的自定义密钥存储。
-
选择 Upload file (上传文件),然后为选定的 Amazon CloudHSM 集群上传信任锚点证书。这是您在初始化集群时创建的
customerCA.crt文件。 -
输入您在选定集群中创建的 kmsuser 加密用户 (CU) 的密码。
-
选择 Create (创建) 。
当该过程成功时,新的自定义密钥存储将显示在账户和区域中的自定义密钥存储列表中。如果该过程失败,则会显示一条错误消息,描述问题并提供有关如何解决该问题的帮助。如果您需要更多帮助,请参阅对自定义密钥存储进行故障排除。
如果您尝试创建一个属性值与断开连接的现有自定义密钥存储相同的自定义密钥存储,Amazon KMS 不会创建新的自定义密钥存储,也不会引发异常或显示错误。相反,Amazon KMS 将副本识别为重试的可能结果,并返回现有自定义密钥存储的 ID。
下一步:不会自动连接新的自定义密钥存储。您必须先连接自定义密钥存储与其关联的 Amazon CloudHSM 集群,然后才能在自定义密钥存储中创建 Amazon KMS keys。
创建自定义密钥存储 (API)
CreateCustomKeyStore 操作将创建一个新的自定义密钥存储,该密钥存储与账户和区域中的 Amazon CloudHSM 集群关联。这些示例使用 Amazon Command Line Interface (Amazon CLI),但您可以使用任何受支持的编程语言。
CreateCustomKeyStore 操作需要以下参数值。
以下示例使用虚构的集群 ID。在运行命令之前,请将其替换为有效的集群 ID。
$aws kms create-custom-key-store --custom-key-store-nameExampleKeyStore\ --cloud-hsm-cluster-idcluster-1a23b4cdefg\ --key-store-passwordkmsPswd\ --trust-anchor-certificate<certificate-goes-here>
如果您使用的是 Amazon CLI,则可指定信任锚点证书文件而不是其内容。在下面的示例中,customerCA.crt 文件位于根目录中。
$aws kms create-custom-key-store --custom-key-store-nameExampleKeyStore\ --cloud-hsm-cluster-idcluster-1a23b4cdefg\ --key-store-passwordkmsPswd\ --trust-anchor-certificatefile://customerCA.crt
当此操作成功时,CreateCustomKeyStore 将返回自定义密钥存储 ID,如以下示例响应中所示。
{ "CustomKeyStoreId": cks-1234567890abcdef0 }
如果操作失败,请更正异常指示的错误,然后重试。有关其他帮助,请参阅对自定义密钥存储进行故障排除。
如果您尝试创建一个属性值与断开连接的现有自定义密钥存储相同的自定义密钥存储,Amazon KMS 不会创建新的自定义密钥存储,也不会引发异常或显示错误。相反,Amazon KMS 将副本识别为重试的可能结果,并返回现有自定义密钥存储的 ID。
接下来,要使用自定义密钥存储,可将它连接到 Amazon CloudHSM 集群。