通过 Okta 和 IAM Identity Center 配置 SAML 和 SCIM - AWS IAM Identity Center

通过 Okta 和 IAM Identity Center 配置 SAML 和 SCIM

您可以使用跨域身份管理系统(SCIM)2.0 协议将用户和组信息从 Okta 自动预置或同步到 IAM Identity Center。有关更多信息,请参阅 对外部身份提供者使用 SAML 和 SCIM 身份联合验证

要在 Okta 中配置此连接,您可以使用 IAM Identity Center 的 SCIM 端点和 IAM Identity Center 自动创建的持有者令牌。配置 SCIM 同步时,您将在 Okta 中创建用户属性到 IAM Identity Center 中的命名属性的映射。此映射在 IAM Identity Center 和 Okta 账户之间匹配预期的用户属性。

Okta 通过 SCIM 连接到 IAM Identity Center 时支持以下预置功能:

  • 创建用户——在 Okta 中分配给 IAM Identity Center 应用程序的用户是在 IAM Identity Center 中预置的。

  • 更新用户属性——在 Okta 中分配给 IAM Identity Center 应用程序的用户的属性更改将在 IAM Identity Center 中更新。

  • 停用用户——在 Okta 中从 IAM Identity Center 应用程序取消分配的用户将在 IAM Identity Center 被禁用。

  • 组推送——Okta 中的组(及其成员)同步到 IAM Identity Center。

    注意

    为了最大限度地减少 Okta 和 IAM Identity Center 的管理开销,我们建议您分配和推送组而不是单个用户。

目标

在本教程中,您将逐步设置与 Okta IAM Identity Center 的 SAML 连接。稍后,您将使用 SCIM 从 Okta 同步用户。在该方案中,您可以管理 Okta 中的所有用户和组。用户通过 Okta 门户登录。为了验证一切配置正确,在完成配置步骤后,您将以 Okta 用户身份登录,并验证对 AWS 资源的访问权限。

注意

您可以注册安装了 Okta's IAM Identity Center 应用程序的 Okta 账户(免费试用)。对于付费 Okta 产品,您可能需要确认您的 Okta 许可证支持生命周期管理或类似的功能,以实现出站预置。将 SCIM 从 Okta 配置到 IAM Identity Center 可能需要这些功能。

如果您尚未启用 IAM Identity Center,请参阅 启用 AWS IAM Identity Center

注意事项

  • 在 Okta 和 IAM Identity Center 之间配置 SCIM 预置之前,建议先查看 使用自动预置的注意事项

  • 必须已为每位 Okta 用户指定名字姓氏用户名显示名称值。

  • 每位 Okta 用户的每个数据属性(如电子邮件地址或电话号码)只有一个值。若用户有多个值,则无法同步。如果用户的属性中有多个值,请先删除重复的属性,然后再尝试在 IAM Identity Center 中预置用户。例如,只能同步一个电话号码属性,因为默认的电话号码属性是“工作电话”,所以即使用户的电话号码是家庭电话号码或移动电话号码,也将使用“工作电话”属性存储其电话号码。

  • Okta 与 IAM Identity Center 共用时,IAM Identity Center 通常在 Okta 中配置为应用程序。这样即可将 IAM Identity Center 的多个实例配置为多个应用程序,以此支持在单个 Okta 实例中访问多个 AWS 组织。

  • 不支持权限和角色属性,也无法将其同步到 IAM Identity Center。

  • 目前不支持使用相同的 Okta 组进行分配和组推送。要在 Okta 和 IAM Identity Center 之间保持一致的组成员资格,请创建一个单独的组并将其配置为将组推送到 IAM Identity Center。

步骤 1:Okta:从 Okta 账户获取 SAML 元数据

  1. 登录 Okta admin dashboard,展开应用程序,然后选择应用程序

  2. 应用程序页面,选择浏览应用程序目录

  3. 在搜索框中键入 AWS IAM Identity Center,选择应用程序以添加 IAM Identity Center 应用程序。

  4. 选择登录选项卡。

  5. SAML 签名证书下,选择操作,然后选择查看 IdP 元数据。将打开一个新的浏览器选项卡,显示 XML 文件的文档树。选择从 <md:EntityDescriptor></md:EntityDescriptor> 的所有 XML,将其复制到文本文件。

  6. 将文本文件保存为 metadata.xml

让 Okta admin dashboard 保持打开状态,因为后续步骤会继续使用此控制台。

步骤 2:IAM Identity Center:将 Okta 配置为 IAM Identity Center 的身份源

  1. 以具有管理权限的用户身份打开 IAM Identity Center 控制台

  2. 在左侧导航窗格中,选择设置

  3. 设置页面,选择操作,然后选择更改身份源

  4. 选择身份源下选择外部身份提供者,然后选择下一步

  5. 配置外部身份提供商下,执行以下操作:

    1. 服务提供商元数据下,选择下载元数据文件,以下载 IAM Identity Center 元数据文件,并将其保存在您的系统中。在本教程中,您稍后将向 Okta 提供 IAM Identity Center SAML 元数据文件。

      将以下项目复制到文本文件,以便于访问:

      • IAM Identity Center 断言使用者服务 (ACS) URL

      • IAM Identity Center 发布者 URL

      本教程稍后会用到这些值。

    2. 身份提供者元数据下的 IdP SAML 元数据下,选择选择文件,然后选择您在上一步创建的 metadata.xml 文件。

    3. 选择下一步

  6. 阅读免责声明并准备继续操作后,输入接受

  7. 选择更改身份源

    让 AWS 控制台保持打开状态,因为下一步会继续使用此控制台。

  8. 返回 Okta admin dashboard,选择 AWS IAM Identity Center 应用程序的登录选项卡,然后选择编辑

  9. 高级登录设置下,输入以下内容:

    • ACS URL 中,输入您复制的 IAM Identity Center 断言使用者服务(ACS)URL

    • 发布者 URL 中,输入您复制的 IAM Identity Center 发布者 URL

    • 应用程序用户名格式中,选择菜单中的一个选项。

      确保您选择的值对每个用户来说都是唯一的。在本教程中,选择 Okta 用户名

  10. 选择保存

现在,您可以将用户从 Okta 预置到 IAM Identity Center。让 Okta admin dashboard 保持打开状态,返回 IAM Identity Center 控制台,执行下一步。

步骤 3:IAM Identity Center 和 Okta:预置 Okta 用户

  1. 在 IAM Identity Center 控制台的设置页面,找到自动预置信息框,然后选择启用。这会在 IAM Identity Center 中启用自动预置,并显示必要的 SCIM 端点和访问令牌信息。

  2. 入站自动预置对话框中,复制以下选项的各个值:

    1. SCIM 端点:例如,https://scim.us-east-2.amazonaws.com/11111111111-2222-3333-4444-555555555555/scim/v2

    2. 访问令牌 - 选择显示令牌以复制该值。

    警告

    这是唯一可以获取 SCIM 端点与访问令牌的机会。在继续操作之前,务必复制这些值。本教程的后续步骤需要输入这些值,以便在 Okta 中配置自动预置。

  3. 选择关闭

  4. 返回 Okta admin dashboard,移到 IAM Identity Center 应用程序。

  5. IAM Identity Center 应用程序页面,选择预置选项卡,然后在左侧导航栏的设置下选择集成

  6. 选择编辑,然后选中启用 API 集成旁边的复选框,以启用自动预置。

  7. 使用您先前在本步骤从 AWS IAM Identity Center 复制的 SCIM 预置值配置 Okta:

    1. 基本 URL 字段,输入 SCIM 端点值。

    2. API 令牌字段,输入访问令牌值。

  8. 选择测试 API 凭证以验证输入的凭证是否有效。

    将显示 AWS IAM Identity Center 验证成功!消息。

  9. 选择保存。您将移至设置部分,集成为选中状态。

  10. 设置下,选择至应用程序,然后为每个要启用的预置至应用程序功能选择启用复选框。在本教程中,请选择所有选项。

  11. 选择保存

现在,您可以将来自 Okta 的用户与 IAM Identity Center 同步了。

步骤 4:Okta:将来自 Okta 的用户与 IAM Identity Center 同步

默认情况下,未将任何组或用户分配给您的 Okta IAM Identity Center 应用程序。通过预置组,该组的成员用户也会被预置。完成以下步骤,与 AWS IAM Identity Center 同步组和用户。

  1. Okta IAM Identity Center 应用程序页面中,选择分配选项卡。您可以将人员和组分配至 IAM Identity Center 应用程序。

    1. 要分配人员:

      • 分配页面,选择分配,然后选择分配给人员

      • 选择您想要为其分配 IAM Identity Center 应用程序访问权限的 Okta 用户。选择分配,选择保存并返回,然后选择完成

      这将启动将用户预置到 IAM Identity Center 的过程。

    2. 要分配组:

      • 分配页面,选择分配,然后选择分配给组

      • 选择您想要为其分配 IAM Identity Center 应用程序访问权限的 Okta 组。选择分配,选择保存并返回,然后选择完成

      这将启动将组中的用户预置到 IAM Identity Center 的过程。

      注意

      如果所有用户记录中都没有该组的属性,您可能需要为该组指定其他属性。为组指定的属性将覆盖任何单独属性的值。

  2. 选择推送组选项卡。选择要与 IAM Identity Center 同步的 Okta 组。选择保存

    将组及其成员推送到 IAM Identity Center 后,组状态将更改为活动

  3. 返回分配选项卡。

  4. 要向 IAM Identity Center 添加个人 Okta 用户,请执行以下步骤:

    1. 分配页面,选择分配,然后选择分配给人员

    2. 选择您想要为其分配 IAM Identity Center 应用程序访问权限的 Okta 用户。选择分配,选择保存并返回,然后选择完成

      这将启动将单个用户预置到 IAM Identity Center 的过程。

      注意

      您也可以从 Okta admin dashboard 的应用程序页面将用户和组分配到 AWS IAM Identity Center 应用程序。要这样做,请选择设置图标,然后选择分配给用户分配给组,然后指定用户或组。

  5. 返回 IAM Identity Center 控制台。在左侧导航栏中,选择用户,您应该会看到用户列表填入了您的 Okta 用户。

恭喜您!

您已成功在 Okta 和 AWS 之间建立 SAML 连接,并验证了自动预置将正常工作。您现在可以在 IAM Identity Center 中将这些用户分配给账户和应用程序。在本教程的下一步,我们将指定一名用户,通过赋予其对管理账户的管理权限,使其成为 IAM Identity Center 管理员。

传递访问控制属性 – 可选

您可以选择使用 IAM Identity Center 中的 访问控制属性 功能来传递 Name 属性设置为 https://aws.amazon.com/SAML/Attributes/AccessControl:{TagKey}Attribute 元素。此元素允许您将属性作为 SAML 断言中的会话标签传递。有关会话标签的更多信息,请参阅 IAM 用户指南在 AWS STS 中的传递会话标签

要将属性作为会话标签传递,请包含指定标签值的 AttributeValue 元素。例如,要传递标签键值对CostCenter = blue,请使用以下属性。

<saml:AttributeStatement> <saml:Attribute Name="https://aws.amazon.com/SAML/Attributes/AccessControl:CostCenter"> <saml:AttributeValue>blue </saml:AttributeValue> </saml:Attribute> </saml:AttributeStatement>

如果您需要添加多个属性,请为每个标签包含一个单独的 Attribute 元素。

分配 AWS 账户 访问权限

仅授予 AWS 账户 访问权限时才需执行以下步骤。授予 AWS 应用程序访问权限无需执行这些步骤。

步骤 1:IAM Identity Center:向 Okta 用户授予账户访问权限

  1. 在 IAM Identity Center 导航窗格的多账户权限下,选择 AWS 账户

  2. AWS 账户 页面,组织结构将显示您的组织根目录,您的账户将以分层结构列于其下方。选中管理账户对应的复选框,然后选择分配用户或组

  3. 此时将显示分配用户和组工作流程。它包括三个步骤:

    1. 对于步骤 1:选择用户和组,选择将要执行管理员工作职能的用户。然后选择下一步

    2. 对于步骤 2:选择权限集,选择创建权限集打开新的标签页,该标签页将引导您完成创建权限集所涉及的三个子步骤。

      1. 对于步骤 1:选择权限集类型,请完成以下操作:

        • 权限集类型中,选择预定义权限集

        • 预定义权限集策略中,选择 AdministratorAccess

        选择下一步

      2. 对于步骤 2:指定权限集详细信息,保留默认设置,并选择下一步

        默认设置会创建一个名为 AdministratorAccess 的权限集,其会话持续时间设置为一小时。

      3. 对于步骤 3:查看和创建,请验证权限集类型是否使用 AWS 托管策略 AdministratorAccess。选择创建权限集页面会显示通知,告知您权限集已创建。您可以在网络浏览器中关闭此标签页。

      分配用户和组浏览器标签页,您仍处于步骤 2:选择权限集,您将在这里启动创建权限集工作流程。

      权限集区域,选择刷新按钮。您创建的 AdministratorAccess 权限集将出现在列表中。选择该权限集的复选框,然后选择下一步

    3. 对于步骤 3:查看并提交,请查看选定的用户和权限集,然后选择提交

      页面会更新,显示一条消息,告知您正在配置 AWS 账户。等待该过程完成。

      您将返回到 AWS 账户 页面。一条通知消息会告知您,已重新预置了您的 AWS 账户,并应用了更新的权限集。当用户登录时,他们可以选择 AdministratorAccess 角色。

步骤 2:Okta:确认 Okta 用户对 AWS 资源的访问权限

  1. 使用测试用户账户登录 Okta dashboard。

  2. 我的应用程序下,选择 AWS IAM Identity Center 图标。

  3. 此时应能看到 AWS 账户 图标。展开该图标,查看用户可以访问的 AWS 账户 列表。在本教程中,您只使用了一个账户,因此展开图标只显示一个账户。

  4. 选择账户,以显示用户可用的权限集。在本教程中,您创建了 AdministratorAccess 权限集。

  5. 权限集旁边是该权限集可用访问权限类型的链接。创建权限集时,您已指定 AWS Management Console 和编程访问权限。选择管理控制台,打开 AWS Management Console。

  6. 用户已登录到 AWS Management Console。

后续步骤

现在,您已在 IAM Identity Center 将 Okta 配置为身份提供商,并预置了用户,您可以:

故障排除

有关使用 Okta 对 SCIM 和 SAML 进行一般性问题排查,请参阅以下各部分:

重新配置从 IAM Identity Center 删除的用户和组

  • 如果尝试更改 Okta 中已同步后又从 IAM Identity Center 中删除的用户或组,则可能会在 Okta 控制台中收到以下错误消息:

    • Automatic profile push of user Jane Doe to app AWS IAM Identity Center failed: Error while trying to push profile update for jane_doe@example.com: No user returned for user xxxxx-xxxxxx-xxxxx-xxxxxxx

    • Linked group is missing in AWS IAM Identity Center. Change the linked group to resume pushing group memberships.

  • 对于已同步和删除的 IAM Identity Center 用户或组,还可能在 Okta 的系统日志中收到以下错误消息:

    • Okta Error: Eventfailed application.provision.user.push_profile : No user returned for user xxxxx-xxxxxx-xxxxx-xxxxxxx

    • Okta Error: application.provision.group_push.mapping.update.or.delete.failed.with.error : Linked group is missing in AWS IAM Identity Center. Change the linked group to resume pushing group memberships.

警告

如已使用 SCIM 同步 Okta 和 IAM Identity Center,则应从 Okta 而非 IAM Identity Center 中删除用户和组。

排查已删除的 IAM Identity Center 用户问题

要解决已删除的 IAM Identity Center 用户的这一问题,必须从 Okta 中删除这些用户。如有必要,还需在 Okta 中重新创建这些用户。在 Okta 中重新创建用户时,还会通过 SCIM 将其重新预置到 IAM Identity Center。有关删除用户的更多信息,请参阅 Okta 文档

注意

如需移除 Okta 用户对 IAM Identity Center 的访问权限,则应先将其从“组推送”中移除,再将其从 Okta 的分配组中移除。这可确保在 IAM Identity Center 中将用户从关联组成员资格中移除。有关“组推送”问题排查的更多信息,请参阅 Okta 文档

排查已删除的 IAM Identity Center 组问题

要解决已删除的 IAM Identity Center 组的这一问题,必须从 Okta 中删除组。如有必要,还需要使用“组推送”在 Okta 中重新创建这些组。在 Okta 中重新创建用户时,还会通过 SCIM 将其重新预置到 IAM Identity Center。有关删除组的更多信息,请参阅 Okta 文档

Okta 中的自动预置错误

如果在 Okta 中收到以下错误消息,请执行以下操作:

Automatic provisioning of user Jane Doe to app AWS IAM Identity Center failed: Matching user not found

有关更多信息,请参阅 Okta 文档

其他资源

下列相关资源有助于您在使用 AWS 期间排查问题:

  • AWS re:Post – 查找常见问题解答和其他资源的链接,帮助您排查问题。

  • AWS Support – 获得技术支持