教程:Azure AD 与 AWS Single-Account Access 集成

本教程介绍如何将 AWS Single-Account Access 与 Microsoft Entra ID 相集成。 将 AWS Single-Account Access 与 Microsoft Entra ID 集成后,可以:

  • 在 Microsoft Entra ID 中控制谁有权访问 AWS Single-Account Access。
  • 让用户使用其 Microsoft Entra 帐户自动登录到 AWS Single-Account Access。
  • 在中心位置管理帐户。

根据以下信息来决定是使用 Microsoft Entra 应用程序库中的 AWS 单一登录应用程序还是使用其中的 AWS 单一帐户访问应用程序。

AWS 单一登录

AWS 单一登录于 2021 年 2 月添加到 Microsoft Entra 应用程序库中。 使用它,通过 Microsoft Entra ID 进行登录时可轻松地集中管理对多个 AWS 帐户和 AWS 应用程序的访问。 将 Microsoft Entra ID 与 AWS SSO 联合一次,然后便可使用 AWS SSO 从一个位置管理所有 AWS 帐户的权限。 AWS SSO 会自动预配权限,并在你更新策略和访问权限分配时使权限保持最新状态。 最终用户可使用其 Microsoft Entra 凭据进行身份验证,以访问 AWS 控制台、命令行界面和 AWS SSO 集成应用程序。

AWS 单一帐户访问

AWS Single-Account Access 在过去几年中一直被客户使用,通过它可将 Microsoft Entra ID 联合到单个 AWS 帐户,并使用 Azure AD 管理对 AWS IAM 角色的访问。 AWS IAM 管理员在每个 AWS 帐户中定义角色和策略。 对于每个 AWS 帐户,Microsoft Entra 管理员会联合到 AWS IAM,将用户或组分配给该帐户,并配置 Microsoft Entra ID 来发送对角色访问进行授权的断言。

功能 AWS 单一登录 AWS 单一帐户访问
条件性访问 支持对所有 AWS 帐户使用单个条件访问策略。 支持对所有帐户使用单个条件访问策略,或对每个帐户使用自定义策略
CLI 访问 支持 支持
Privileged Identity Management 支持 不支持
集中化帐户管理 在 AWS 中进行集中化帐户管理。 在 Microsoft Entra ID 中集中管理帐户(对于每个帐户,将可能需要 Microsoft Entra 企业应用程序)。
SAML 证书 单个证书 每个应用/帐户使用单独的证书

AWS 单一帐户访问体系结构

Screenshot showing Microsoft Entra ID and AWS relationship.

可以为多个实例配置多个标识符。 例如:

  • https://signin.aws.amazon.com/saml#1

  • https://signin.aws.amazon.com/saml#2

有了这些值,Microsoft Entra ID 将移除 #,并发送正确的值 https://signin.aws.amazon.com/saml 作为 SAML 令牌中的受众 URL。

我们建议使用这种方法,原因如下:

  • 每个应用程序将为你提供一个唯一的 X509 证书。 AWS 应用实例的每个实例都会有不同的证书到期日期,该日期可基于单个 AWS 帐户进行管理。 在这种情况下,整个证书滚动更新会更容易。

  • 可以在 Microsoft Entra ID 中使用 AWS 应用启用“用户预配”,我们的服务随后会从该 AWS 帐户提取所有角色。 无需在应用中手动添加或更新 AWS 角色。

  • 可单独为应用分配应用所有者。 应用所有者可以直接在 Microsoft Entra ID 中管理应用。

注意

请确保仅使用库应用程序。

先决条件

若要开始操作,需备齐以下项目:

  • 一个 Microsoft Entra 订阅。 如果你没有订阅,可以获取一个免费帐户
  • 已启用 AWS IAM IdP 的订阅。
  • 除了云应用程序管理员之外,应用程序管理员也可以在 Microsoft Entra ID 中添加或管理应用程序。 有关详细信息,请参阅 Azure 内置角色

注意

导入角色时,不应在 Microsoft Entra ID 中手动编辑角色。

方案描述

在本教程中,你将在测试环境中配置并测试 Microsoft Entra SSO。

  • AWS Single-Account Access 支持 SP 和 IDP 发起的 SSO。

注意

此应用程序的标识符是一个固定字符串值,因此只能在一个租户中配置一个实例。

若要配置 AWS Single-Account Access 与 Microsoft Entra ID 的集成,需要从库中将 AWS Single-Account Access 添加到托管 SaaS 应用列表中。

  1. 至少以云应用程序管理员身份登录到 Microsoft Entra 管理中心
  2. 浏览至“标识”>“应用程序”>“企业应用程序”>“新建应用程序”。
  3. 在“从库中添加”部分的搜索框中,键入 AWS Single-Account Access
  4. 在结果面板中选择“AWS Single-Account Access”,然后添加该应用。 在该应用添加到租户时等待几秒钟。

或者,也可以使用企业应用配置向导。 在此向导中,可以将应用程序添加到租户、将用户/组添加到应用、分配角色,以及逐步完成 SSO 配置。 详细了解 Microsoft 365 向导。

或者,也可以使用企业应用配置向导。 在此向导中,可以将应用程序添加到租户、将用户/组添加到应用、分配角色,以及逐步完成 SSO 配置。 可在此处详细了解 O365 向导。

配置并测试 AWS Single-Account Access 的 Microsoft Entra SSO

使用名为 B.Simon 的测试用户配置并测试 AWS Single-Account Access 的 Microsoft Entra SSO。 若要使 SSO 正常工作,需要在 Microsoft Entra 用户与 AWS Single-Account Access 中的相关用户之间建立关联。

若要配置并测试 AWS Single-Account Access 的 Microsoft Entra SSO,请执行以下步骤:

  1. 配置 Microsoft Entra SSO - 使用户能够使用此功能。
    1. 创建 Microsoft Entra 测试用户 - 使用 B.Simon 测试 Microsoft Entra 单一登录。
    2. 分配 Microsoft Entra 测试用户 - 使 B.Simon 能够使用 Microsoft Entra 单一登录。
  2. 配置 AWS Single-Account Access SSO - 在应用程序端配置单一登录设置。
    1. 创建 AWS Single-Account Access 测试用户 - 在 AWS Single-Account Access 中创建 B.Simon 的对应用户,并将其链接到其在 Microsoft Entra 中的表示形式。
    2. 如何在 AWS Single-Account Access 中配置角色预配
  3. 测试 SSO - 验证配置是否正常工作。

配置 Microsoft Entra SSO

按照以下步骤启用 Microsoft Entra SSO。

  1. 至少以云应用程序管理员身份登录到 Microsoft Entra 管理中心

  2. 浏览到“标识”>“应用程序”>“企业应用程序”>“AWS 单一帐户访问”>“单一登录”。

  3. 在“选择单一登录方法”页上选择“SAML” 。

  4. 在“设置 SAML 单一登录”页面上,单击“基本 SAML 配置”旁边的铅笔图标以编辑设置 。

    Screenshot showing Edit Basic SAML Configuration.

  5. 在“基本 SAML 配置”部分中,使用相同默认值更新“标识符(实体 ID)”和“回复 URL”:。 必须选择“保存”以保存配置更改。

  6. 在配置多个实例时,请提供标识符值。 从第二个实例开始,请使用以下格式,并包含一个 # 符号来指定唯一的 SPN 值。

    https://signin.aws.amazon.com/saml#2

  7. AWS 应用程序需要特定格式的 SAML 断言,这需要向 SAML 令牌属性配置添加自定义属性映射。 以下屏幕截图显示了默认属性的列表。

    Screenshot showing default attributes.

  8. 除了上述属性,AWS 应用程序还要求在 SAML 响应中传递回更多的属性,如下所示。 这些属性也是预先填充的,但可以根据要求查看它们。

    名称 源属性 命名空间
    RoleSessionName user.userprincipalname https://aws.amazon.com/SAML/Attributes
    角色 user.assignedroles https://aws.amazon.com/SAML/Attributes
    SessionDuration user.sessionduration https://aws.amazon.com/SAML/Attributes

    注意

    AWS 需要分配给应用程序的用户的角色。 请在 Microsoft Entra ID 中设置这些角色,以便可为用户分配相应的角色。 若要了解如何在Microsoft Entra ID 中配置角色,请参阅此处

  9. 在“设置 SAML 单一登录”页的“SAML 签名证书”(步骤 3)对话框中,选择“添加证书” 。

    Screenshot showing Create new SAML Certificate.

  10. 生成新的 SAML 签名证书,然后选择“新建证书”。 输入证书通知的电子邮件地址。

    Screenshot showing New SAML Certificate.

  11. 在“SAML 签名证书”部分中找到“联合元数据 XML”,选择“下载”以下载该证书并将其保存在计算机上。

    Screenshot showing the Certificate download link.

  12. 在“设置 AWS Single-Account Access”部分,根据要求复制相应的 URL。

    Screenshot showing Copy configuration URLs.

创建 Microsoft Entra 测试用户

在本部分,你将创建名为 B.Simon 的测试用户。

  1. 至少以用户管理员身份登录到 Microsoft Entra 管理中心
  2. 浏览到“标识”>“用户”>“所有用户”
  3. 选择屏幕顶部的“新建用户”>“创建新用户”。
  4. “用户”属性中执行以下步骤:
    1. 在“显示名称”字段中输入 B.Simon
    2. 在“用户主体名称”字段中,输入 username@companydomain.extension。 例如 B.Simon@contoso.com
    3. 选中“显示密码”复选框,然后记下“密码”框中显示的值。
    4. 选择“查看 + 创建”。
  5. 选择“创建”。

分配 Microsoft Entra 测试用户

在本部分,你将通过授予 B.Simon 访问 AWS 单一帐户访问的权限,使其能够使用单一登录。

  1. 至少以云应用程序管理员身份登录到 Microsoft Entra 管理中心
  2. 浏览到“标识”>“应用程序”>“企业应用程序”>“AWS 单一帐户访问”。
  3. 在应用的概述页面中,选择“用户和组”。
  4. 选择“添加用户/组”,然后在“添加分配”对话框中选择“用户和组” 。
    1. 在“用户和组”对话框中,从“用户”列表中选择“B.Simon”,然后单击屏幕底部的“选择”按钮。
    2. 如果你希望将某角色分配给用户,可以从“选择角色”下拉列表中选择该角色。 如果尚未为此应用设置任何角色,你将看到选择了“默认访问权限”角色。
    3. 在“添加分配”对话框中,单击“分配”按钮。

配置 AWS Single-Account Access SSO

  1. 在另一个 Web 浏览器窗口中,以管理员身份登录到 AWS 公司站点。

  2. 在 AWS 主页中,搜索“IAM”并单击它。

    Screenshot of AWS services page, with IAM highlighted.

  3. 转到“访问管理”->“标识提供者”,然后单击“添加提供者”按钮。

    Screenshot of IAM page, with Identity Providers and Create Provider highlighted.

  4. 在“添加标识提供者”页中,执行以下步骤:

    Screenshot of Configure Provider.

    a. 对于“提供者类型”,选择“SAML”。

    b. 在“提供者名称”中,键入提供者名称(例如:WAAD)。

    c. 若要上传下载的元数据文件,请选择“选择文件”。

    d. 单击“添加提供者”。

  5. 选择“角色”“创建角色”。

    Screenshot of Roles page.

  6. 在“创建角色”页中,执行以下步骤:

    Screenshot of Create role page.

    a. 选择“受信任的实体类型”,然后选择“SAML 2.0 联合身份验证”。

    b. 在“基于 SAML 2.0 的提供者”下,选择前面创建的“SAML 提供者”(例如:WAAD)。

    c. 选择“允许以编程方式和通过 AWS 管理控制台进行访问”。

    d. 选择“下一步” 。

  7. 在“权限策略”对话框中,根据组织的要求附加相应的策略。 然后,选择“下一步”。

    Screenshot of Attach permissions policy dialog box.

  8. 在“复查”对话框中执行以下步骤:

    Screenshot of Review dialog box.

    a. 在“角色名称”中输入角色名称。

    b. 在“说明”中输入角色说明。

    c. 选择“创建角色”。

    d. 创建所需数量的角色,并将其映射到标识提供者。

  9. 在 Microsoft Entra 用户预配中,使用 AWS 服务帐户凭据从 AWS 帐户提取角色。 为此,请打开 AWS 控制台主页。

  10. 在“IAM”部分中,选择“策略”,然后单击“创建策略”。

    Screenshot of IAM section, with Policies highlighted.

  11. 创建自己的策略,以从 AWS 帐户提取所有角色。

    Screenshot of Create policy page, with JSON highlighted.

    a. 在“创建策略”中,选择“JSON”选项卡。

    b. 在策略文档中,添加以下 JSON:

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                "iam:ListRoles"
                ],
                "Resource": "*"
            }
        ]
    }
    

    c. 单击“下一步: 标记”。

  12. 还可以在以下页面中添加所需的标记,然后单击“下一步:审阅”。

    Screenshot of Create policy tag page.

  13. 定义新策略。

    Screenshot of Create policy page, with Name and Description fields highlighted.

    a. 对于“名称”,请输入 AzureAD_SSOUserRole_Policy

    b. 对于“说明”,请输入“此策略允许从 AWS 帐户提取角色”。

    c. 选择“创建策略”。

  14. 在 AWS IAM 服务中创建新的用户帐户。

    a. 在 AWS IAM 控制台中,选择“用户”,然后单击“添加用户”。

    Screenshot of AWS IAM console, with Users highlighted.

    b. 在“指定用户详细信息”部分中,输入作为“AzureADRoleManager”的用户名,然后选择“下一步”。

    Screenshot of Add user page, with User name and Access type highlighted.

    c. 为此用户创建新策略。

    Screenshot shows the Add user page where you can create a policy for the user.

    d. 选择“直接附加现有策略”。

    e. 在筛选器部分中搜索新创建的策略 AzureAD_SSOUserRole_Policy

    f. 选择策略,然后选择“下一步”。

  15. 检查选择,然后选择“创建用户”。

  16. 要下载用户的用户凭据,请在“安全凭据”选项卡中启用控制台访问权限。

    Screenshot shows the Security credentials.

  17. 在 Microsoft Entra 用户预配部分输入这些凭据,以便从 AWS 控制台提取角色。

    Screenshot shows the download the user credentials.

注意

AWS 具有一组在配置 AWS SSO 时所必需的权限/限制。 要了解有关 AWS 限制的更多信息,请参阅页面。

如何在 AWS Single-Account Access 中配置角色预配

  1. 在 Microsoft Entra 管理门户上的 AWS 应用中,转到“预配”。

    Screenshot of AWS app, with Provisioning highlighted.

  2. 分别在“客户端机密”和“机密令牌”字段中输入访问密钥和机密。

    Screenshot of Admin Credentials dialog box.

    a. 在“客户端密码”字段中输入 AWS 用户访问密钥。

    b. 在“密码令牌”字段中输入 AWS 用户密码。

    c. 选择“测试连接”。

    d. 选择“保存”以保存设置。

  3. 在“设置”部分,为“预配状态”选择“打开”。 再选择“保存”。

    Screenshot of Settings section, with On highlighted.

注意

预配服务只会将 AWS 中的角色导入到 Microsoft Entra ID。 该服务不会将 Microsoft Entra ID 中的用户和组预配到 AWS。

注意

保存预配凭据之后,必须等待初始同步周期完成运行。 同步通常需要约 40 分钟才能完成。 你可以在“预配”页底部的“当前状态”下查看状态。

创建 AWS Single-Account Access 测试用户

本部分的目的是在 AWS Single-Account Access 中创建名为 B.Simon 的用户。 AWS Single-Account Access 不需要在其系统中创建用户就能实现 SSO,因此你无需在此处执行任何操作。

测试 SSO

在本部分,你将使用以下选项测试 Microsoft Entra 单一登录配置。

SP 启动的:

  • 单击“测试此应用程序”,这会重定向到 AWS 单一帐户访问登录 URL,可以从那里启动登录流。

  • 直接转到 AWS Single-Account Access 登录 URL,并从中启动登录流。

IDP 启动的:

  • 击“测试此应用程序”,然后你应会自动登录到为其设置了 SSO 的 AWS 单一帐户访问。

还可以使用 Microsoft“我的应用”在任何模式下测试此应用程序。 在“我的应用”中单击“AWS Single-Account Access”磁贴时,如果该应用程序是在 SP 模式下配置的,则你会重定向到应用程序登录页来启动登录流;如果它是在 IDP 模式下配置的,则你应会自动登录到为其设置了 SSO 的 AWS Single-Account Access。 有关“我的应用”的详细信息,请参阅“我的应用”简介

已知问题

  • AWS 单一帐户访问预配集成不能在 AWS 中国区域中使用。

  • 在“预配”部分,“映射”子部分会显示“正在加载...”消息,但从不显示属性映射。 目前支持的唯一预配工作流是将角色从 AWS 导入到 Microsoft Entra ID 中,以便在用户或组分配过程中对其进行选择。 上述属性映射是预先确定的,不可配置。

  • “预配”部分只支持一次为一个 AWS 租户输入一组凭据。 所有导入的角色都写入到 AWS 租户的 Microsoft Entra ID servicePrincipal 对象appRoles 属性。

    可将多个 AWS 租户(由 servicePrincipals 表示)从库添加到 Microsoft Entra ID 来进行预配。 但存在一个已知的问题:无法自动将所有导入的角色从用于预配的多个 AWS servicePrincipals 写入到用于 SSO 的单个 servicePrincipal 中。

    若要解决此问题,可以使用 Microsoft Graph API 来提取所有已导入每个 AWS servicePrincipal(已在其中配置预配)中的 appRoles。 然后,可将这些角色字符串添加到 AWS servicePrincipal(已在其中配置 SSO)。

  • 角色必须满足以下要求才有资格从 AWS 导入到 Microsoft Entra ID 中:

    • 角色必须仅有一个在 AWS 中定义的 saml-provider
    • 角色的 ARN(Amazon 资源名称)和关联的 saml-provider 的 ARN 的组合长度必须小于 240 个字符。

更改日志

  • 2020/01/12 - 角色长度限制从 119 个字符增加到 239 个字符。

后续步骤

配置 AWS Single-Account Access 后,可以强制实施会话控制,实时防止组织的敏感数据遭到外泄和渗透。 会话控制扩展自条件访问。 了解如何通过 Microsoft Defender for Cloud Apps 强制实施会话控制