创建用于 SAML 2.0 联合身份验证的角色(控制台) - AWS Identity and Access Management

创建用于 SAML 2.0 联合身份验证的角色(控制台)

您可以使用 SAML 2.0 联合身份验证而不必在 AWS 账户 中创建 IAM 用户。利用身份提供程序 (IdP),您可以管理 AWS 外部的用户身份,并向这些外部用户身份授予访问您账户中的 AWS 资源的权限。有关联合和身份提供程序的更多信息,请参阅身份提供程序和联合身份验证

注意

为了提高联合身份验证弹性,我们建议您将 IdP 和AWS联合身份验证配置为支持多个 SAML 登录端点。有关详细信息,请参阅 AWS 安全博客文章如何使用区域性 SAML 端点进行失效转移

创建用于 SAML 的角色的先决条件

您必须先完成以下先决条件步骤,然后才能创建用于 SAML 2.0 联合身份验证的角色。

准备创建用于 SAML 2.0 联合的角色
  1. 在创建用于 SAML 联合的角色之前,必须在 IAM 中创建 SAML 提供商。有关更多信息,请参阅 在 IAM 中创建 SAML 身份提供者

  2. 为已进行 SAML 2.0 身份验证的用户要担任的角色准备策略。正如任何角色一样,用于 SAML 联合的角色包含两个策略。一个是指定谁可以代入角色的角色信任策略。另一个是指定允许或拒绝联合身份用户访问的 AWS 操作和资源的 IAM 权限策略。

    在为角色创建信任策略时,必须使用三个值来确保只有您的应用程序可以代入此角色:

    • 对于 Action 元素,使用 sts:AssumeRoleWithSAML 操作。

    • 对于 Principal 元素,使用字符串 {"Federated":ARNofIdentityProvider}。将 ARNofIdentityProvider 替换为您在步骤 1 中创建的 SAML 身份提供程序的 ARN。

    • 对于 Condition 元素,使用 StringEquals 条件测试 SAML 响应中的 saml:aud 属性是否匹配 AWS 的 SAML 联合终端节点。

    以下示例信任策略是为 SAML 联合身份用户设计的:

    { "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "sts:AssumeRoleWithSAML", "Principal": {"Federated": "arn:aws:iam::account-id:saml-provider/PROVIDER-NAME"}, "Condition": {"StringEquals": {"SAML:aud": "https://signin.aws.amazon.com/saml"}} } }

    将主体 ARN 替换为您在 IAM 中创建的 SAML 提供商的实际 ARN。它会具备您自己的账户 ID 和提供商名称。

创建用于 SAML 的角色

在完成先决条件步骤后,您可以创建用于基于 SAML 的联合身份验证的角色。

要创建用于基于 SAML 的联合的角色,请执行以下操作
  1. 登录 AWS Management Console,然后通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/

  2. 在 IAM 控制台的导航窗格中,依次选择角色创建角色

  3. 选择 SAML 2.0 federation 角色类型。

  4. 对于 Select a SAML provider(选择 SAML 提供商),请为您的角色选择提供商。

  5. 选择 SAML 2.0 访问级别方法。

    • 选择 Allow programmatic access only (只允许编程访问) 以创建可从 AWS API 或 AWS CLI 以编程方式担任的角色。

    • 选择允许编程访问和 AWS Management Console 访问以创建可以编程方式和从 AWS Management Console 中担任的角色。

    通过这两种方法创建的角色类似,但也可从控制台担任的角色包括包含带特定条件的信任策略。该条件显式确保将 SAML 受众(SAML:aud 属性)设置为 SAML 的 AWS 登录终端节点 (https://signin.aws.amazon.com/saml)。

  6. 如果创建用于编程访问的角色,请从属性列表中选择一个属性。然后在 Value(值)框中,键入一个将包含在角色中的值。这样可仅限来自其 SAML 身份验证响应 (断言) 包括您指定的属性的身份提供程序的用户可访问该角色。必须指定至少一个属性,以确保您的角色限于您所在组织中的一部分用户。

    如果要创建用于编程访问和控制台访问的角色,则将自动添加 SAML:aud 属性,并将其设置为 AWS SAML 终端节点的 URL (https://signin.aws.amazon.com/saml)。

  7. 要将更多与属性相关的条件添加到信任策略,请选择 Condition (optional) [条件(可选)],选择其他条件,然后指定值。

    注意

    列表包括最常用的 SAML 属性。IAM 支持其他可用于创建条件的属性。有关支持的属性的列表,请参阅 SAML 联合身份验证的可用键。如果需要不在列表中的支持的 SAML 属性的条件,可以手动添加此条件。为此,请在创建角色后编辑信任策略。

  8. 检查 SAML 2.0 信任信息,然后选择 Next(下一步)。

  9. IAM 包括您的账户中的 AWS 托管策略和客户托管策略的列表。选择要用于权限策略的策略,或者选择 Create policy(创建策略)以打开新的浏览器选项卡并从头开始创建新策略。有关更多信息,请参阅 创建 IAM 策略。在您创建策略后,关闭该选项卡并返回到您的原始选项卡。选择您希望 OIDC 联合用户具有的权限策略旁边的复选框。如果您愿意,此时可以不选择任何策略,稍后将策略附加到角色。默认情况下,角色没有权限。

  10. (可选)设置权限边界。这是一项高级功能。

    打开 Permissions boundary(权限边界)部分,然后选择 Use a permissions boundary to control the maximum role permissions(使用权限边界控制最大角色权限)。选择要用于权限边界的策略。

  11. 选择下一步

  12. 选择 下一步: 审核

  13. 对于 Role name(角色名称),输入一个角色名称。角色名称在您的 AWS 账户 内必须是唯一的。名称不区分大小写。例如,您无法同时创建名为 PRODROLEprodrole 的角色。由于其他 AWS 资源可能引用该角色,角色创建完毕后无法编辑角色名称。

  14. (可选)对于 Description(描述),输入新角色的描述。

  15. Step 1: Select trusted entities(步骤 1:选择可信实体)或 Step 2: Add permissions(步骤 2:添加权限)部分中的 Edit(编辑),以编辑角色的用户案例和权限。

  16. (可选)通过以键值对的形式附加标签来向角色添加元数据。有关在 IAM 中使用标签的更多信息,请参阅 AWS Identity and Access Management 资源的标签

  17. 检查角色,然后选择创建角色

创建角色后,通过使用有关 AWS 的信息来配置您的身份提供程序软件,以完成 SAML 信任。此类信息包括您希望联合身份用户使用的角色。这称为在 IdP 和 AWS 之间配置信赖方信任。有关更多信息,请参阅 配置具有依赖方信任的 SAML 2.0 IdP 并添加陈述