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

查找 CMK 和密钥材料

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

  • 在 AWS CloudTrail 日志中跟踪自定义密钥存储中的 CMK。

  • 预测断开自定义密钥存储对 CMK 的影响。

  • 在删除自定义密钥存储之前计划删除 CMK。

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

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

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

在自定义密钥存储中查找 CMK

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

在自定义密钥存储中查找 CMK(控制台)

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

在自定义密钥存储中查找 CMK (API)

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

BashPowerShell
Bash

要在特定的自定义密钥存储中查找 CMK,请获取账户和区域中的所有 CMK。然后,筛选自定义密钥存储的 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

要获取账户和区域中的任何自定义密钥存储的 CMK,请搜索以 cks- 开头的 CustomKeyStoreId 值。

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

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

PS C:\> (Get-KMSKeyList).KeyArn | foreach {Get-KMSKey -KeyId $_} | where CustomKeyStoreId -eq 'cks-1234567890abcdef0'

要获取账户和区域中的任何自定义密钥存储中的 CMK,请使用 -like 比较运算符。所有自定义密钥存储标识符都以 cks- 开头。

PS C:\> (Get-KMSKeyList).KeyArn | foreach {Get-KMSKey -KeyId $_} | where CustomKeyStoreId -like 'cks*'

查找自定义密钥存储的所有密钥

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

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

  1. 使用准备运行 cloudhsm_mgmt_util 主题中所述的过程来启动 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 替换为集群中 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)

查找密钥的 CMK

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

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

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

注意

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

  1. 断开自定义密钥存储(如果尚未断开),然后以 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 的 CMK 的密钥材料。在运行此命令之前,请将示例密钥句柄替换为有效句柄。

    有关密钥属性的列表,请使用 listAttributes 命令或参阅 AWS CloudHSM User Guide 中的密钥属性参考

    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 Attribute Value on server 1(10.0.1.12): OBJ_ATTR_EXTRACTABLE arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab
  3. 注销 key_mgmt_util 或 cloudhsm_mgmt_util,并重新连接自定义密钥存储,如如何注销并重新连接中所述。

查找 CMK 的密钥

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

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

注意

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

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

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

    例如,此命令查找其标签与示例 CMK ARN arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab 匹配的密钥。示例输出显示密钥句柄为 262162 的密钥的标签中包含指定的 CMK 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 并重新连接自定义密钥存储,如如何注销并重新连接中所述。