查找 KMS 密钥和密钥材料 - Amazon Key Management Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

查找 KMS 密钥和密钥材料

如果您管理 Amazon CloudHSM 密钥存储,则可能需要在每个 Amazon CloudHSM 密钥存储中标识 KMS 密钥。例如,您可能需要执行以下某些任务。

  • 在 Amazon CloudTrail 日志中跟踪 Amazon CloudHSM 密钥存储中的 KMS 密钥。

  • 预测断开 Amazon CloudHSM 密钥存储对 KMS 密钥的影响。

  • 在删除 Amazon CloudHSM 密钥存储之前计划删除 KMS 密钥。

此外,您可能需要标识 Amazon CloudHSM 集群中用作 KMS 密钥的密钥材料的密钥。尽管 Amazon KMS 管理 KMS 密钥和密钥材料,但您仍可以控制并负责管理 Amazon CloudHSM 集群、HSM 和备份以及 HSM 中的密钥。您可能需要标识密钥以便审核密钥材料,防止意外删除密钥材料或在删除 KMS 密钥后将密钥材料从 HSM 和集群备份中删除。

Amazon CloudHSM 密钥存储中 KMS 密钥的所有密钥材料由 kmsuser 加密用户(CU)拥有。Amazon KMS 将密钥标签属性(该属性仅在 Amazon CloudHSM 中可查看)设置为 KMS 密钥的 Amazon 资源名称(ARN)。

要查找 KMS 密钥和密钥材料,请使用下列任一方法。

在 Amazon CloudHSM 密钥存储中查找 KMS 密钥

如果您管理 Amazon CloudHSM 密钥存储,则可能需要在每个 Amazon CloudHSM 密钥存储中标识 KMS 密钥。您可以使用此信息在 Amazon CloudTrail 日志中跟踪 KMS 密钥操作,预测断开自定义密钥存储对 KMS 密钥的影响或在删除 Amazon CloudHSM 密钥存储前计划删除 KMS 密钥。

在 Amazon CloudHSM 密钥存储中查找 KMS 密钥(控制台)

要在特定的 Amazon CloudHSM 密钥存储中查找 KMS 密钥,请在 Customer managed keys(客户托管密钥)页面上,查看 Custom Key Store Name(自定义密钥存储名称)或 Custom Key Store ID(自定义密钥存储 ID)字段中的值。要确定任何 Amazon CloudHSM 密钥存储中的 KMS 密钥,请查找 Origin(源)值为 Amazon CloudHSM 的 KMS 密钥。要向显示添加可选列,请选择页面右上角的齿轮图标。

在 Amazon CloudHSM 密钥存储中查找 KMS 密钥(API)

要在密钥存储中查找 KMS 密Amazon CloudHSM钥,请使用ListKeysDescribeKey操作,然后按CustomKeyStoreId值筛选。在运行示例之前,请将虚构的自定义密钥存储 ID 值替换为有效值。

Bash

要在特定的 Amazon CloudHSM 密钥存储中查找 KMS 密钥,请获取账户和区域中的所有 KMS 密钥。然后,按自定义密钥存储 ID 进行筛选。

for key in $(aws kms list-keys --query 'Keys[*].KeyId' --output text) ; do aws kms describe-key --key-id $key | grep '"CustomKeyStoreId": "cks-1234567890abcdef0"' --context 100; done

要获取账户和区域中任何 Amazon CloudHSM 密钥存储的 KMS 密钥,请搜索值为 AWS_CloudHSMCustomKeyStoreType

for key in $(aws kms list-keys --query 'Keys[*].KeyId' --output text) ; do aws kms describe-key --key-id $key | grep '"CustomKeyStoreType": "AWS_CloudHSM"' --context 100; done
PowerShell

要在特定的Amazon CloudHSM密钥存储中查找 KMS 密钥,请使用 G et KmsKeyList 和 Get-KmsKey cmdlet 获取账户和区域中的所有 KMS 密钥。然后,按自定义密钥存储 ID 进行筛选。

PS C:\> Get-KMSKeyList | Get-KMSKey | where CustomKeyStoreId -eq 'cks-1234567890abcdef0'

要在账户和区域的任何密Amazon CloudHSM钥存储中获取 KMS 密钥,请筛选 CustomKeyStoreType 值AWS_CLOUDHSM

PS C:\> Get-KMSKeyList | Get-KMSKey | where CustomKeyStoreType -eq 'AWS_CLOUDHSM'

查找 Amazon CloudHSM 密钥存储的所有密钥

您可以标识 Amazon CloudHSM 集群中用作 Amazon CloudHSM 密钥存储的密钥材料的密钥。为此,请使用 cloudhsm_mgmt_util 中的findAllKeys命令查找拥有或共享的所有密钥的密钥句柄。kmsuser除非您以 kmsuser 身份登录并在 Amazon KMS 外部创建了密钥,否则 kmsuser 拥有的所有密钥都表示 KMS 密钥的密钥材料。

集群中的任何加密管理者都可以在不断开 Amazon CloudHSM 密钥存储的情况下运行此命令。

  1. 按照 Getting started with CloudHSM Management Utility (CMU) [CloudHSM 管理实用工具(CMU)入门] 主题所述的过程,启动 cloudhsm_mgmt_util。

  2. 使用加密管理者 (CO) 账户登录 cloudhsm_mgmt_util。

  3. 使用 listUsers 命令查找 kmsuser 加密用户的用户 ID。

    在此示例中,kmsuser 具有用户 ID 3。

    aws-cloudhsm> listUsers Users on server 0(10.0.0.1): Number of users found:3 User Id User Type User Name MofnPubKey LoginFailureCnt 2FA 1 PCO admin NO 0 NO 2 AU app_user NO 0 NO 3 CU kmsuser NO 0 NO
  4. 使用findAllKeys命令查找kmsuser拥有或共享的所有密钥的按键手柄。将示例用户 ID(3)替换为集群中 kmsuser 的实际用户 ID。

    示例输出显示 kmsuser 在集群中的两个 HSM 上拥有密钥句柄为 8、9 和 262162 的密钥。

    aws-cloudhsm> findAllKeys 3 0 Keys on server 0(10.0.0.1): Number of keys found 3 number of keys matched from start index 0::6 8,9,262162 findAllKeys success on server 0(10.0.0.1) Keys on server 1(10.0.0.2): Number of keys found 6 number of keys matched from start index 0::6 8,9,262162 findAllKeys success on server 1(10.0.0.2)

查找 Amazon CloudHSM 密钥的 KMS 密钥

如果您知道 kmsuser 在集群中拥有的密钥的密钥句柄,则可以使用密钥标签来标识 Amazon CloudHSM 密钥存储中的关联 KMS 密钥。

当 Amazon KMS 在 Amazon CloudHSM 集群中为 KMS 密钥创建密钥材料时,它会在密钥标签中写入 KMS 密钥的 Amazon Resource Name (ARN)。除非您已更改标签值,否则可在 key_mgmt_util 或 cloudhsm_mgmt_util 中使用 getAttribute 命令将密钥与其 KMS 密钥关联。

要运行此过程,您需要临时断开 Amazon CloudHSM 密钥存储,以便能以 kmsuser CU 身份登录。

注意

虽然自定义密钥存储已断开连接,但在自定义密钥存储中创建 KMS 密钥或在加密操作中使用现有 KMS 密钥的所有尝试都将失败。此操作可以阻止用户存储和访问敏感数据。

  1. 断开 Amazon CloudHSM 密钥存储(如果尚未断开),然后以 kmsuser 身份登录 key_mgmt_util,如 如何断开和登录 中所述。

  2. 使用 key_mgmt_utilcloudhsm_mgmt_util 中的 getAttribute 命令获取特定密钥句柄的标签属性(OBJ_ATTR_LABEL、属性 3)。

    例如,此命令使用 cloudhsm_mgmt_util 中的 getAttribute 来获取密钥句柄为 262162 的密钥的标签属性(属性 3)。输出显示密钥 262162 用作 ARN 为 arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab 的 KMS 密钥的密钥材料。在运行此命令之前,请将示例密钥句柄替换为有效句柄。

    对于密钥属性的列表,请使用 listAttributes 命令或查看 Amazon CloudHSM 用户指南中的密钥属性参考

    aws-cloudhsm> getAttribute 262162 3 Attribute Value on server 0(10.0.1.10): OBJ_ATTR_LABEL arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab
  3. 注销 key_mgmt_util 或 cloudhsm_mgmt_util,并重新连接 Amazon CloudHSM 密钥存储,如 如何注销并重新连接 中所述。

查找 KMS 密钥的 Amazon CloudHSM 密钥

您可以在 Amazon CloudHSM 密钥存储中使用 KMS 密钥的 KMS 密钥 ID 来标识 Amazon CloudHSM 集群中用作其密钥材料的密钥。然后,您可以使用其密钥句柄在 Amazon CloudHSM 客户端命令中标识密钥。

当 Amazon KMS 在 Amazon CloudHSM 集群中为 KMS 密钥创建密钥材料时,它会在密钥标签中写入 KMS 密钥的 Amazon Resource Name (ARN)。除非您已更改标签值,否则可在 key_mgmt_util 中使用 findKey 命令来获取 KMS 密钥的密钥材料的密钥句柄。要运行此过程,您需要临时断开 Amazon CloudHSM 密钥存储,以便能以 kmsuser CU 身份登录。

注意

虽然自定义密钥存储已断开连接,但在自定义密钥存储中创建 KMS 密钥或在加密操作中使用现有 KMS 密钥的所有尝试都将失败。此操作可以阻止用户存储和访问敏感数据。

  1. 断开 Amazon CloudHSM 密钥存储(如果尚未断开),然后以 kmsuser 身份登录 key_mgmt_util,如 如何断开和登录 中所述。

  2. 在 key_mgmt_util 中使用 findKey 命令在 Amazon CloudHSM 密钥存储中搜索其标签与 KMS 密钥的 ARN 匹配的密钥。将 -l(小写 L 表示“标签”)参数的值中的示例 KMS 密钥 ARN 替换为有效 KMS 密钥 ARN。

    例如,此命令查找其标签与示例 KMS 密钥 ARN arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab 匹配的密钥。示例输出显示密钥句柄为 262162 的密钥的标签中包含指定的 KMS 密钥 ARN。现在,您可以在其他 key_mgmt_util 命令中使用此密钥句柄。

    Command: findKey -l arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab Total number of keys present 1 number of keys matched from start index 0::1 262162 Cluster Error Status Node id 1 and err state 0x00000000 : HSM Return: SUCCESS Node id 0 and err state 0x00000000 : HSM Return: SUCCESS Cfm3FindKey returned: 0x00 : HSM Return: SUCCESS
  3. 注销 key_mgmt_util 并重新连接自定义密钥存储,如如何注销并重新连接中所述。