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

连接和断开自定义密钥存储

新自定义密钥存储未连接。您需要先将客户主密钥 (CMK) 连接到其关联的 AWS CloudHSM 集群,然后才能在自定义密钥存储中创建和使用这些密钥。您可以随时连接和断开自定义密钥存储,并查看其连接状态

您无需连接自定义密钥存储。您可以将自定义密钥存储保持在无限期断开的状态并且仅在您需要使用它时进行连接。但是,您可能希望定期测试连接以验证设置是否正确以及自定义密钥存储是否可以连接。

注意

只有当密钥库从未连接或者您明确断开连接时,自定义密钥存储才会具有 DISCONNECTED 状态。如果您的自定义密钥存储状态为 CONNECTED 但在使用时遇到问题,请确保其关联的 AWS CloudHSM 集群活动并且包含至少一个活动 HSM。如需帮助解决连接故障,请参阅对自定义密钥存储进行故障排除

连接自定义密钥存储

当您连接到自定义密钥存储时,AWS KMS 将查找关联的 AWS CloudHSM 集群,连接到该集群,以 kmsuser 加密用户 (CU) 身份登录到 AWS CloudHSM 客户端,然后轮换 kmsuser 密码。只要自定义密钥存储处于连接状态,AWS KMS 就保持登录到 AWS CloudHSM 客户端。

为了建立连接,AWS KMS 将在集群的 Virtual Private Cloud (VPC) 中的创建一个名为 kms-<custom key store ID>安全组。该安全组具有一个允许来自集群安全组的入站流量的规则。AWS KMS 还会在集群的私有子网的每个可用区中创建一个弹性网络接口 (ENI)。AWS KMS 会将 ENI 添加到 kms-<cluster ID> 安全组和集群的安全组。每个 ENI 的描述都是 KMS managed ENI for cluster <cluster-ID>

连接过程可能需要较长时间才能完成;最多 20 分钟。

在连接自定义密钥存储之前,请验证它是否符合要求。

  • 其关联的 AWS CloudHSM 集群必须至少包含一个活动 HSM。要查找集群中的 HSM 数,请在 AWS CloudHSM 控制台中查看集群或使用 DescribeClusters 操作。如有必要,您可以添加 HSM

  • 自定义密钥存储的连接状态不能是 DISCONNECTINGFAILED。您可以在控制台中或使用 DescribeCustomKeyStores 操作查看连接状态。如果连接状态为 FAILED,请断开自定义密钥存储然后连接它。

连接自定义密钥存储后,您可以在其中创建 CMK,然后在加密操作中使用现有 CMK。

断开自定义密钥存储

当您断开自定义密钥存储时,AWS KMS 将从 AWS CloudHSM 客户端注销,从关联的 AWS CloudHSM 集群断开,然后移除它创建用于支持连接的网络基础设施。

当某个自定义密钥存储断开时,您可以管理自定义密钥存储及其客户主密钥 (CMK),但无法在自定义密钥存储中创建或使用 CMK。密钥存储的状态为 DISCONNECTED,自定义密钥存储中的 CMK 的密钥状态Unavailable,除非它们是 PendingDeletion。 您可以随时重新连接自定义密钥存储。

注意

自定义密钥存储断开连接时,在自定义密钥存储中创建客户主密钥 (CMK) 或者在加密操作中使用现有 CMK 的所有尝试将失败。此操作可以防止用户存储和访问敏感数据。

为了更好地估计断开密钥存储的影响,请在自定义密钥存储中标识 CMK,并确定其过去的使用情况

您可能出于以下原因断开自定义密钥存储:

  • 轮换 kmsuser 密码。每当 AWS KMS 连接到 AWS CloudHSM 集群时,它就会更改 kmsuser 密码。要强制轮换密码,只需断开并重新连接。

     

  • 审核 AWS CloudHSM 集群中的 CMK 的密钥材料。当您断开自定义密钥存储时,AWS KMS 将从 AWS CloudHSM 客户端中的 kmsuser 加密用户账户注销。这样,您便能以 kmsuser CU 身份登录到集群并审核和管理 CMK 的密钥材料。

     

  • 立即禁用自定义密钥存储中的所有 CMK。您可以使用 AWS 管理控制台或 DisableKey API 操作在自定义密钥存储中禁用并重新启用 CMK。这些操作会快速完成,但它们一次只针对一个 CMK。断开连接会立即将自定义密钥中所有 CMK 的密钥状态更改为 Unavailable,这将阻止在任何加密操作中使用这些 CMK。

     

  • 修复失败的连接尝试。如果连接自定义密钥存储的尝试失败(自定义密钥存储区的连接状态为 FAILED),则必须在尝试再次连接自定义密钥存储之前断开它。

连接自定义密钥存储(控制台)

要在 AWS 管理控制台中连接自定义密钥存储,请首先从 Custom key stores (自定义密钥存储) 页面选择该自定义密钥存储。该过程可能最多需要 20 分钟才能完成。

  1. 登录 AWS 管理控制台并通过以下网址打开 AWS Key Management Service (AWS KMS) 控制台:https://console.amazonaws.cn/kms

  2. 要更改 AWS 区域,请使用页面右上角的区域选择器。

  3. 在左侧导航窗格中,选择 Custom key stores (自定义密钥存储)

  4. 选择要连接的自定义密钥存储。

  5. 如果自定义密钥存储的状态为 FAILED,则必须在连接自定义密钥存储之前断开自定义密钥存储

  6. Key store actions (密钥存储操作) 菜单中,选择 Connect custom key store (连接自定义密钥存储)

AWS KMS 将开始连接自定义密钥存储的过程。它将查找关联的 AWS CloudHSM 集群,构建所需的网络基础设施,连接到网络基础设施,以 kmsuser CU 身份登录到 AWS CloudHSM 集群,然后轮换 kmsuser 密码。当操作完成时,连接状态将变为 CONNECTED

如果操作失败,则会出现一条描述失败原因的错误消息。在尝试再次连接之前,请查看自定义密钥存储的连接状态。如果状态为 FAILED,则必须先断开自定义密钥存储,然后再次连接它。如果您需要帮助,请参阅对自定义密钥存储进行故障排除

下一步:在自定义密钥存储中创建 CMK

连接自定义密钥存储 (API)

要连接已断开的自定义密钥存储,请使用 ConnectCustomKeyStore 操作。关联的 AWS CloudHSM 集群必须至少包含一个活动 HSM,且连接状态不能为 FAILED

连接过程需要较长时间才能完成;最多 20 分钟。除非该过程迅速失败,否则操作将返回 HTTP 200 响应和无属性的 JSON 对象。但是,此初始响应不指示连接是否成功。要确定自定义密钥存储的连接状态,请使用 DescribeCustomKeyStores 操作。

此部分中的示例使用 AWS Command Line Interface (AWS CLI),但您可以使用任何受支持的编程语言。

要确定自定义密钥存储,请使用自定义密钥存储 ID。您可以在控制台中的 Custom key stores (自定义密钥存储) 页面上或使用 DescribeCustomKeyStores 操作找到该 ID。在运行此示例之前,请将示例 ID 替换为有效的 ID。

$ aws kms connect-custom-key-store --custom-key-store-id cks-1234567890abcdef0

要验证自定义密钥存储是否已连接,请使用 DescribeCustomKeyStores 操作。默认情况下,此操作将返回您的账户和区域中的所有自定义密钥存储。但您可以使用 CustomKeyStoreIdCustomKeyStoreName 参数(但不能同时使用两者)将响应限制到特定自定义密钥存储。ConnectionStateCONNECTED 表示自定义密钥存储已连接到其 AWS CloudHSM 集群。

$ aws kms describe-custom-key stores --custom-key-store-id cks-1234567890abcdef0 { "CustomKeyStores": [ "CustomKeyStoreId": "cks-1234567890abcdef0", "CustomKeyStoreName": "ExampleKeyStore", "CloudHsmClusterId": "cluster-1a23b4cdefg", "TrustAnchorCertificate": "<certificate string appears here>", "CreationDate": "1.499288695918E9", "ConnectionState": "CONNECTED" ], }

如果 ConnectionState 值为 FAILED,ConnectionErrorCode 元素将指示失败的原因。在此情况下,AWS KMS 在您的账户中找不到集群 ID 为 cluster-1a23b4cdefg 的 AWS CloudHSM 集群。如果您删除了该集群,则可以从原始集群的备份还原它,然后编辑自定义密钥存储的集群 ID

$ aws kms describe-custom-key stores --custom-key-store-id cks-1234567890abcdef0 { "CustomKeyStores": [ "CustomKeyStoreId": "cks-1234567890abcdef0", "CustomKeyStoreName": "ExampleKeyStore", "CloudHsmClusterId": "cluster-1a23b4cdefg", "TrustAnchorCertificate": "<certificate string appears here>", "CreationDate": "1.499288695918E9", "ConnectionState": "FAILED" "ConnectionErrorCode": "CLUSTER_NOT_FOUND" ], }

下一步:在自定义密钥存储中创建 CMK

断开自定义密钥存储(控制台)

要在 AWS 管理控制台中断开已连接的自定义密钥存储,请首先从 Custom Key Stores (自定义密钥存储) 页面选择该自定义密钥存储。

  1. 登录 AWS 管理控制台并通过以下网址打开 AWS Key Management Service (AWS KMS) 控制台:https://console.amazonaws.cn/kms

  2. 要更改 AWS 区域,请使用页面右上角的区域选择器。

  3. 在左侧导航窗格中,选择 Custom key stores (自定义密钥存储)

  4. 选择要断开的自定义密钥存储。

  5. Key store actions (密钥存储操作) 菜单中,选择 Disconnect custom key store (断开自定义密钥存储)

当操作完成时,连接状态将从 DISCONNECTING 变为 DISCONNECTED。如果操作失败,则会出现一条错误消息,描述问题并提供有关如何修复它的帮助。如果您需要更多帮助,请参阅对自定义密钥存储进行故障排除

断开自定义密钥存储 (API)

要断开已连接的自定义密钥存储,请使用 DisconnectCustomKeyStore 操作。如果操作不成功,AWS KMS 将返回 HTTP 200 响应和无属性的 JSON 对象。

此部分中的示例使用 AWS Command Line Interface (AWS CLI),但您可以使用任何受支持的编程语言。

本示例将断开一个自定义密钥存储。在运行此示例之前,请将示例 ID 替换为有效的 ID。

$ aws kms disconnect-custom-key-store --custom-key-store-id cks-1234567890abcdef0

要验证自定义密钥存储是否已断开,请使用 DescribeCustomKeyStores 操作。默认情况下,此操作将返回您的账户和区域中的所有自定义密钥存储。但您可以使用 CustomKeyStoreIdCustomKeyStoreName 参数(但不能同时使用两者)将响应限制到特定自定义密钥存储。ConnectionStateDISCONNECTED 表示自定义密钥存储未连接到其 AWS CloudHSM 集群。

$ aws kms describe-custom-key stores --custom-key-store-id cks-1234567890abcdef0 { "CustomKeyStores": [ "CloudHsmClusterId": "cluster-1a23b4cdefg", "ConnectionState": "DISCONNECTED", "CreationDate": "1.499288695918E9", "CustomKeyStoreId": "cks-1234567890abcdef0", "CustomKeyStoreName": "ExampleKeyStore", "TrustAnchorCertificate": "<certificate string appears here>" ], }