View a markdown version of this page

AWS CloudHSM 客户端 SDK 5 用户或策略包含不一致的值 - AWS CloudHSM

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

AWS CloudHSM 客户端 SDK 5 用户或策略包含不一致的值

AWS CloudHSM 不会自动同步集群中 HSM 上的用户或策略(例如 mTLS 设置)。CloudHSM CLI 会尽力在各个 HSM 之间同步这些操作,但仍可能出现不一致的情况。本页介绍如何识别和解决用户和策略的不一致之处。

解决用户值不一致的问题

AWS CloudHSM Client SDK 5 中的user list命令会返回集群中所有用户和用户属性的列表。如果用户的任何属性的值为 “不一致”,则该用户不会在您的集群中同步。这意味着该用户在集群中的不同 HSM 上具有不同的属性。根据不一致的属性,可以采取不同的修复步骤。

下表包括解决单个用户不一致问题的步骤。如果单个用户存在多个不一致之处,请从上到下按照以下步骤解决这些问题。如果有多个用户存在不一致之处,请为每个用户仔细阅读此列表,完全解决一位用户的不一致之处,然后再继续下一步。

注意

要执行这些步骤,理想情况下,您应该以管理员身份登录。如果您的管理员帐户不一致,请以管理员身份登录执行以下步骤,然后重复这些步骤,直到所有属性都一致为止。管理员帐户保持一致后,您可以继续使用该管理员帐户来同步集群中的其他用户。

不一致的属性 用户列表的示例输出 影响 恢复方法
用户 "role" 为 "inconsistent"
{ "username": "test_user", "role": "inconsistent", "locked": "false", "mfa": [], "cluster-coverage": "full" }
此用户 CryptoUser 在某些 HSM 上是管理员,在其他 HSM 上是管理员。如果两个 SDK 尝试同时创建具有不同角色的同一个用户,则会发生这种情况。您必须移除此用户,然后使用所需的角色重新创建该用户。
  1. 以管理员身份登录。

  2. 删除所有 HSM 上的用户:

    user delete --username <user's name> --role admin

    user delete --username <user's name> --role crypto-user

  3. 创建具有所需角色的用户:

    user create --username <user's name> --role <desired role>

用户 "cluster-coverage" 为 "inconsistent"
{ "username": "test_user", "role": "crypto-user", "locked": "false", "mfa": [], "cluster-coverage": "inconsistent" }

此用户存在于集群中 HSM 的子集上。如果 user create 部分成功或 user delete 部分成功,则可能发生这种情况。

您必须完成之前的操作,即在集群中创建或删除此用户。

如果用户不应该存在,请按照以下步骤操作:

  1. 以管理员身份登录。

  2. 运行以下命令:

    user delete --username<user's name> --role admin

  3. 现在请运行以下命令:

    user delete --username<user's name> --role crypto-user

如果用户应该存在,请按照以下步骤操作:

  1. 以管理员身份登录。

  2. 运行如下命令:

    user create --username <user's name> --role <desired role>

用户 "locked" 参数为 "inconsistent" 或 "true"
{ "username": "test_user", "role": "crypto-user", "locked": inconsistent, "mfa": [], "cluster-coverage": "full" }

该用户在 HSM 的某个子集中被锁定。

如果用户使用了错误的密码并且只连接到集群中 HSM 的某个子集,则可能会发生这种情况。

您必须更改用户的凭证,使这些凭证在整个集群中保持一致。

如果用户已激活 MFA,请按照以下步骤操作:

  1. 以管理员身份登录。

  2. 运行以下命令以暂时停用 MFA:

    user change-mfa token-sign --username <user's name> --role <desired role> --disable

  3. 更改用户的密码,以便他们可以登录所有 HSM:

    user change-password --username <user's name> --role <desired role>

如果用户应激活 MFA,请按照以下步骤操作:

  1. 让用户登录并重新启用 MFA(这将要求他们签署令牌并在 PEM 文件中提供其公有密钥):

    user change-mfa token-sign --username <user's name> --role <desired role> —token <File>

MFA 状态为 "inconsistent"
{ "username": "test_user", "role": "crypto-user", "locked": "false", "mfa": [ { "strategy": "token-sign", "status": "inconsistent" } ], "cluster-coverage": "full" }

此用户在集群中的不同 HSM 上具有不同的 MFA 标记。

如果 MFA 操作仅在 HSM 的某个子集中完成,则可能会发生这种情况。

您必须重置用户密码,并允许他们重新启用 MFA。

如果用户已激活 MFA,请按照以下步骤操作:

  1. 以管理员身份登录。

  2. 运行以下命令以暂时停用 MFA:

    user change-mfa token-sign --username <user's name> --role <desired role> --disable

  3. 然后,您还需更改用户密码,以便他们可以登录所有 HSM:

    user change-password --username <user's name> --role <desired role>

如果用户应激活 MFA,请按照以下步骤操作:

  1. 让用户登录并重新启用 MFA(这将要求他们签署令牌并在 PEM 文件中提供其公有密钥):

    user change-mfa token-sign --username <user's name> --role <desired role> —token <File>

解决不一致的 mTLS 保单价值问题

与用户一样,mTLS 策略(信任锚点和强制执行级别)不会在 HSM 之间自动同步。当您运行 mTLS 命令时,CloudHSM CLI 会尽力进行同步,但仍可能出现不一致的情况。您可以使用以下命令检查 mTLS 配置的同步状态。

检查 mTLS 信任锚点同步

运行cluster mtls list-trust-anchors命令以检查您的信任锚的同步状态。在输出中,每个信任锚都有一个cluster-coverage字段。如果值为 “f ull”,则所有 HSM 上都存在信任锚点。如果该值不是 “full”,则不会在集群中的所有 HSM 之间同步信任锚点。

{ "error_code": 0, "data": { "trust_anchors": [ { "certificate-reference": "0x01", "certificate": "<PEM Encoded Certificate>", "cluster-coverage": "full" } ] } }

如果信任锚的集群覆盖范围不一致,请重新运行注册或取消注册命令以完成操作:

  • 要完成某些 HSM 中缺少的信任锚的注册,请执行以下操作:

    cluster mtls register-trust-anchor --path <path-to-certificate>

  • 要完成对应移除的信任锚的注销,请执行以下操作:

    cluster mtls deregister-trust-anchor --certificate-reference <certificate-reference>

有关设置 mTLS 的更多信息,请参阅在客户端和 AWS CloudHSM之间设置双向 TLS