排查 IAM Identity Center 问题 - Amazon IAM Identity Center
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

排查 IAM Identity Center 问题

以下内容可帮您排查在设置或使用 IAM Identity Center 控制台时可能会遇到的一些常见问题。

创建 IAM Identity Center 账户实例时出现的问题

创建 IAM Identity Center 账户实例时可能会遇到一些限制。如果您无法通过 IAM Identity Center 控制台或受支持的 Amazon 托管应用程序的设置体验创建账户实例,请验证是否存在以下使用情况:

  • 在您试图创建账户实例的 Amazon Web Services 账户 中,检查其他 Amazon Web Services 区域。对于每个 Amazon Web Services 账户,IAM Identity Center 实例数量都被限制为一个。要启用该应用程序,请切换到具有 IAM Identity Center 实例的 Amazon Web Services 区域,或者切换到没有 IAM Identity Center 实例的账户。

  • 如果您的组织在 2023 年 9 月 14 日之前启用了 IAM Identity Center,您的管理员可能需要选择启用账户实例创建功能。请与您的管理员合作,在管理账户中通过 IAM Identity Center 控制台启用账户实例创建功能。

  • 您的管理员可能创建了服务控制策略,以限制 IAM Identity Center 账户实例的创建。请与您的管理员合作,将您的账户添加到允许列表。

尝试查看预配置为与 IAM Identity Center 配合使用的云应用程序列表时,收到错误消息

如果您的策略允许 sso:ListApplications,但不允许其他 IAM Identity Center API,将发生以下错误。请更新策略,以解决此错误。

ListApplications 权限会授权多个 API:

  • ListApplications API。

  • 在 IAM Identity Center 控制台中使用的内部 API,例如 ListApplicationProviders API。

为了帮助解决重复问题,内部 API 现在也使用 ListApplicationProviders 操作进行授权。要允许公共的 ListApplications API,但拒绝内部 API,您的策略必须包含拒绝 ListApplicationProviders 操作的声明:

"Statement": [ { "Effect": "Deny", "Action": "ListApplicationProviders", "Resource": "*" }, { "Effect": "Allow", "Action": "ListApplications", "Resource": "<instanceArn>" // (or "*" for all instances) } ]

要允许内部 API,但拒绝 ListApplications,策略需要只允许 ListApplicationProviders。如果未明确允许,将拒绝 ListApplications API。

"Statement": [ { "Effect": "Allow", "Action": "ListApplicationProviders", "Resource": "*" } ]

您的政策更新后,请联系 Amazon Web Services Support,移除此主动措施。

与 IAM Identity Center 创建的 SAML 断言内容有关的问题

从 Amazon Web Services 访问门户访问 Amazon Web Services 账户 和 SAML 应用程序时,IAM Identity Center 为 IAM Identity Center 创建和发送的 SAML 断言(包括这些断言中的属性)提供基于 Web 的调试体验。要查看 IAM Identity Center 生成的 SAML 断言的详细信息,请使用以下步骤。

  1. 登录到 Amazon Web Services 访问门户。

  2. 在您登录到门户后,按住 Shift 键,选择相应的应用程序磁贴,然后松开 Shift 键。

  3. 检查名为 You are now in administrator mode (您当前处于管理员模式) 的页面上的信息。要保留这些信息以备将来参考,请选择复制 XML,然后将内容粘贴到其他地方。

  4. 选择发送至 <应用程序>继续。此选项将断言发送给服务提供商。

注意

有些浏览器配置和操作系统可能不支持此步骤。已经在 Windows 10 上使用 Firefox、Chrome 和 Edge 浏览器对此步骤进行了测试。

特定用户无法从外部 SCIM 提供商同步到 IAM Identity Center

如果在您的 IdP 中配置为预调配到 IAM Identity Center 中的一部分用户的 SCIM 同步成功,但其他用户的 SCIM 同步失败,则您可能会看到类似于身份提供者 'Request is unparsable, syntactically incorrect, or violates schema' 的错误。您还可以在 Amazon CloudTrail 中看到详细的预调配失败消息。

此问题通常表明您的 IdP 中的用户的配置方式是 IAM Identity Center 所不支持的。有关 IAM Identity Center SCIM 实施的完整详细信息,包括用户对象的必需、可选和禁止参数和操作的规范,请参阅 IAM Identity Center SCIM 实施开发人员指南。有关 SCIM 要求的信息,SCIM 开发人员指南应被视为权威性指南。但是,以下是导致此错误的几个常见原因:

  1. IdP 中的用户对象缺少名字、姓氏和/或显示名称。

    1. 解决方案:为用户对象添加名字、姓氏和显示名称。此外,请确保将 IdP 中用户对象的 SCIM 预调配映射配置为发送所有这些属性的非空值。

  2. 正在向用户发送单个属性的多个值(也称为“多值属性”)。例如,用户可能在 IdP 中同时指定了工作电话号码和家庭电话号码,或者有多个电子邮件或实际地址,并且您的 IdP 配置为尝试同步该属性的多个或全部值。

    1. 解决方案选项:

      1. 更新 IdP 中用户对象的 SCIM 预调配映射,仅发送给定属性的单个值。例如,配置仅发送每个用户工作电话号码的映射。

      2. 如果可以安全地从 IdP 中的用户对象移除其他属性,则可以移除其他值,为用户的该属性保留一个或零个值。

      3. 如果 Amazon 中的任何操作都不需要该属性,请从 IdP 中用户对象的 SCIM 预调配映射中移除该属性的映射。

  3. 您的 IdP 正在尝试根据多个属性匹配目标(在本例中为 IAM Identity Center)中的用户。由于保证用户名在给定的 IAM Identity Center 实例中是唯一的,因此您只需指定 username 作为用于匹配的属性即可。

    1. 解决方案:确保您的 IdP 中的 SCIM 配置仅使用单个属性与 IAM Identity Center 中的用户进行匹配。例如,将 IdP 中的 usernameuserPrincipalName 映射到 SCIM 中用于预调配到 IAM Identity Center 的 userName 属性将是正确的,并且足以满足大多数实施的需求。

当用户名采用 UPN 格式时,用户无法登录

根据用户在登录页面上输入用户名的格式,他们可能无法登录 Amazon Web Services 访问门户。大多数情况下,用户可以使用其普通用户名、下级登录名 (DOMAIN\UserName) 或其 UPN 登录名 (UserName@Corp.Example.com) 登录用户门户。例外情况是,当 IAM Identity Center 使用已启用 MFA 且验证模式已设置为上下文感知始终开启的连接目录时。在这种情况下,用户必须使用其下级登录名 (DOMAIN\UserName) 登录。有关更多信息,请参阅 Identity Center 用户的多重身份验证。有关用于登录 Active Directory 的用户名格式的一般信息,请参阅 Microsoft 文档网站上的用户名格式

修改 IAM 角色时出现了“无法对受保护的角色执行操作”错误

在查看账户中的 IAM 角色时,您可能会注意到以“AWSReservedSSO_”开头的角色名称。这些角色是 IAM Identity Center 服务在账户中创建的角色,它们来自向账户分配权限集。尝试从 IAM 控制台中修改这些角色将导致以下错误:

'Cannot perform the operation on the protected role 'AWSReservedSSO_RoleName_Here' - this role is only modifiable by Amazon'

这些角色只能从 IAM Identity Center 管理员控制台中进行修改,该控制台位于 Amazon Organizations 的管理账户中。修改完成后,您可以将更改推送到分配的 Amazon 账户。

目录用户无法重置密码

当目录用户使用忘记密码?选项在登录 Amazon Web Services 访问门户期间重置密码时,他们的新密码必须遵守默认密码策略,如 在 IAM Identity Center 中管理身份时的密码要求 中所述。

如果用户输入了符合策略的密码后收到错误消息 We couldn't update your password,请检查 Amazon CloudTrail 是否记录了故障。这可以通过使用以下过滤器在 CloudTrail 的事件历史记录控制台中搜索来完成:

"UpdatePassword"

如果消息显示以下内容,则可能需要联系支持人员:

"errorCode": "InternalFailure", "errorMessage": "An unknown error occurred“

另一个可能造成此问题的原因是应用于用户名值的命名惯例。命名惯例必须遵循特定的模式,例如“surname.givenName”。但是,有些用户名可能很长,或者包含特殊字符,这可能会导致 API 调用中丢掉字符,从而导致错误。您可能需要尝试以同样的方式通过测试用户重置密码,以验证是否是这种情况。

如果问题依旧存在,请联系 Amazon 支持中心

我的用户在权限集中被引用,但无法访问分配的账户或应用程序

如果您使用跨域身份管理系统 (SCIM) 通过外部身份提供者进行自动预调配,则可能会出现此问题。具体而言,当删除用户或该用户所属的组,然后在身份提供者中使用相同的用户名(对于用户)或名称(对于组)重新创建时,将在 IAM Identity Center 中为新用户或组创建一个新的唯一内部标识符。但是,IAM Identity Center 的权限数据库中仍有对旧标识符的引用,因此用户或组的名称仍显示在用户界面 (UI) 中,但访问失败。这是因为 UI 引用的底层用户或组 ID 已不存在。

在这种情况下,要恢复 Amazon Web Services 账户 访问权限,您可以从最初向旧用户或组分配访问权限的 Amazon Web Services 账户 中移除访问权限,然后将访问权限重新分配给该用户或组。这会使用新用户或组的正确标识符更新权限集。同样,要恢复应用程序访问权限,您可以从该应用程序的已分配用户列表中删除该用户或组的访问权限,然后重新添加该用户或组。

您还可以在 CloudTrail 日志中搜索引用相关用户或组名称的 SCIM 同步事件,以查看是否 Amazon CloudTrail 记录了故障。

我无法从正确配置的应用程序目录中获取我的应用程序

如果您通过 IAM Identity Center 的应用程序目录添加了应用程序,请注意,每一家服务提供商都提供了自己的详细文档。您可以在 IAM Identity Center 控制台中,通过该应用程序的配置选项卡访问这些信息。

如果问题与在服务提供商应用程序与 IAM Identity Center 之间设置信任有关,请务必参阅说明手册中的故障排除步骤。

当用户尝试使用外部身份提供者登录时显示错误信息“出现意外错误”

出现此错误的原因可能有多种,但其中一个常见原因是 SAML 请求中的用户信息与 IAM Identity Center 中的用户信息不匹配。

为了让 IAM Identity Center 用户在使用外部 IdP 作为身份源时成功登录,必须满足以下条件:

  • SAML NameID 格式(在您的身份提供者处配置)必须为“电子邮件”

  • nameID 值必须是格式正确 (RFC2822) 的字符串 (user@domain.com)

  • nameID 值必须与 IAM Identity Center 中现有用户的用户名完全匹配(IAM Identity Center 中的电子邮件地址是否匹配并不重要,因为入站匹配基于用户名)

  • SAML 2.0 联合身份验证的 IAM Identity Center 实施仅支持身份提供者与 IAM Identity Center 之间的 SAML 响应中的 1 个断言。它不支持加密的 SAML 断言。

  • 如果您的 IAM Identity Center 账户中启用了 访问控制属性,则以下陈述适用:

    • SAML 请求中映射的属性数量必须不超过 50。

    • SAML 请求不得包含多值属性。

    • SAML 请求不得包含多个具有相同名称的属性。

    • 该属性不得包含结构化的 XML 作为值。

    • 名称格式必须是 SAML 指定的格式,而不是通用格式。

注意

IAM Identity Center 不会通过 SAML 联合身份验证为新用户或组“及时”创建用户或组。这意味着必须在 IAM Identity Center 中手动或通过自动预调配预先创建用户,才能登录 IAM Identity Center。

当您的身份提供者中配置的断言使用者服务 (ACS) 端点与您的 IAM Identity Center 实例提供的 ACS URL 不匹配时,也可能发生此错误。确保这两个值完全匹配。

此外,您可以访问 Amazon CloudTrail 并筛选事件名称 ExternalIdPDirectoryLogin,从而进一步解决外部身份提供者登录失败的问题。

错误信息“无法启用访问控制的属性”

如果启用 ABAC 的用户没有启用 访问控制属性 所需的 iam:UpdateAssumeRolePolicy 权限,则可能会发生此错误。

当我尝试为 MFA 注册设备时,我收到“不支持浏览器”消息

Google Chrome、Mozilla Firefox、Microsoft Edge 和 Apple Safari 网络浏览器以及 Windows 10 和 Android 平台目前支持 WebAuthn。WebAuthn 支持的某些组件可能有所不同,例如跨 macOS 和 iOS 浏览器的平台身份验证器支持。如果用户尝试在不支持的浏览器或平台上注册 WebAuthn 设备,他们将看到某些不支持的选项显示为灰色,或者他们会收到一条错误消息,提示不支持所有支持的方法。在这些情况下,请参阅 FIDO2:Web 身份验证 (WebAuthn),了解有关浏览器/平台支持的更多信息。有关 IAM Identity Center 中的 WebAuthn 的更多信息,请参阅FIDO2 身份验证器

Active Directory“域用户”组无法正确同步到 IAM Identity Center

Active Directory 域用户组是 AD 用户对象的默认“主组”。IAM Identity Cente 无法读取 Active Directory 主组及其成员资格。分配对 IAM Identity Center 资源或应用程序的访问权限时,使用域用户组以外的组(或分配为主组的其他组),以便组成员资格正确反映在 IAM Identity Center 身份存储中。

MFA 无效凭证错误

在用户使用 SCIM 协议将其账户完全预调配到 IAM Identity Center 之前,如果用户尝试使用外部身份提供者提供的账户(例如 Okta 或 Microsoft Entra ID)登录 IAM Identity Center,就会发生此错误。将用户账户预调配到 IAM Identity Center 后,应解决此问题。确认该账户已预调配到 IAM Identity Center。如果没有,请检查外部身份提供者中的预调配日志。

尝试使用身份验证器应用程序注册或登录时,收到“出现意外错误”消息

基于时间的一次性密码(TOTP)系统(例如,IAM Identity Center 与基于代码的身份验证器应用程序搭配使用的那些系统),依赖客户端和服务器之间的时间同步。确保安装身份验证器应用程序的设备已正确同步到可靠的时间源,或手动设置设备上的时间以匹配可靠来源,例如 NIST (https://www.time.gov/) 或其他本地/区域等效时间。

我的用户没有收到来自 IAM Identity Center 的电子邮件

IAM Identity Center 服务发送的所有电子邮件都将来自地址 no-reply@signin.awsno-reply@login.awsapps.com。必须配置您的电子邮件系统,以便接受来自这些发件人电子邮件地址的电子邮件,而不将其视为垃圾邮件或群发邮件。

错误:您无法删除/修改/移除/分配对管理账户中预调配的权限集的访问权限

此消息表示该 委派管理 功能已启用,并且只有在 Amazon Organizations 中具有管理账户权限的人员才能成功执行您之前尝试的操作。要解决此问题,请以具有这些权限的用户身份登录,并尝试再次执行任务,或者将此任务分配给具有正确权限的人员。有关更多信息,请参阅 注册成员账户