向用户授予切换角色的权限 - Amazon Identity and Access Management
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

向用户授予切换角色的权限

当您创建用于跨账户访问的角色时,您在拥有角色和资源的账户(信任账户)和包含用户的账户(可信账户)之间建立了信任。为此,信任账户的管理员指定可信账号为角色的信任策略中的 Principal。这可能会允许可信账户中的任何用户代入该角色。要完成配置,可信账户的管理员必须为该账户中的特定组或用户提供切换到该角色的权限。

要向用户授予切换到角色的权限,可信账户的管理员将为该用户创建新策略。或者,管理员将编辑现有策略以添加所需元素。管理员随后可向用户发送链接,以使用户进入已填写所有详细信息的 Switch Role(切换角色)页面。或者,管理员可以为用户提供包含角色的账户 ID 号或账户别名以及角色名称。用户随后转到 Switch Role 页面,然后手动添加详细信息。有关用户如何切换角色的详细信息,请参阅切换到角色(控制台)

请注意,您只能在以 IAM 用户身份登录时切换角色。如果您以 Amazon Web Services 账户 根用户身份登录,则无法切换角色。

重要

您无法将 Amazon Web Services Management Console中的角色切换到需要 ExternalId 值的角色。您只能通过调用支持 ExternalId 参数的 AssumeRole API 来切换到此类角色。

Notes
  • 本主题讨论了用户 的策略,因为我们最终会向用户授予完成任务的权限。但是,最好不要直接向单个用户授予权限。为方便管理,我们建议向 IAM 组分配策略并授予权限,然后使得用户成为相应组的成员。

  • 当您在 Amazon Web Services Management Console中切换角色时,控制台总是使用您的原始凭证对切换操作进行授权。无论您作为 IAM 用户、SAML 联合角色还是 Web 联合身份角色登录,上述情形均适用。例如,如果您切换到 RoleA,它会使用您的原始用户或联合角色凭证确定是否允许您担任 RoleA。如果您在使用 RoleA 时尝试切换到 RoleB,则会使用您的原始用户或联合角色凭证对您的尝试进行授权。RoleA 凭证不用于此操作。

创建或编辑策略

向用户授予担任角色权限的策略必须包括一个语句,该语句对以下项具有 Allow 影响:

  • sts:AssumeRole 操作

  • Resource 元素中该角色的 Amazon 资源名称 (ARN)

如以下示例所示。获得了该策略 (通过组成员资格或直接附加) 的用户可以切换到指定角色。

注意

如果将 Resource 设置为 *,则用户可在信任用户账户的任何账户中担任何角色。(换言之,角色的信任策略将用户的账户指定为 Principal)。作为最佳实践,我们建议您遵循最低权限原则并仅为用户所需的角色指定完整的 ARN。

以下示例所显示的策略允许用户仅在一个账户中担任角色。此外,该策略使用通配符 (*) 来指定用户仅在角色名称以字母 Test 开头时才能切换到该角色。

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::ACCOUNT-ID-WITHOUT-HYPHENS:role/Test*" } }
注意

角色向用户授予的权限不会添加到用户已获得的权限。当用户切换到某个角色时,用户可临时放弃其原始权限以换取由该角色授予的权限。用户退出该角色时,将自动恢复原始用户权限。例如,假如用户的权限允许使用 Amazon EC2 实例,但是角色的权限策略未授予这些权限。在这种情况下,使用角色时,用户无法在控制台中使用 Amazon EC2 实例。此外,通过 AssumeRole 获取的临时凭证无法以编程方式使用 Amazon EC2 实例。

向用户提供信息

创建角色并向用户授予切换为该角色的权限后,您必须为用户提供以下信息:

  • 角色的名称。

  • 包含该角色的 ID 或账户别名

通过向用户发送使用账户 ID 和角色名称预配置的链接,可使用户更轻松地执行操作。在 Create Role 向导的最终页面上,或在启用了跨账户功能的任何角色的 Role Summary 页面上,都可以看到角色链接。

您还可使用以下格式手动构建链接。请用您的账户 ID 或别名及角色名称替换以下示例中的两个参数:

https://signin.aws.amazon.com/switchrole?account=your_account_ID_or_alias&roleName=optional_path/role_name

我们建议您将用户定向到 切换到角色(控制台) 以指导他们完成该过程。

Considerations

  • 如果您以编程方式创建角色,则可使用路径以及名称创建角色。如果执行此操作,则必须向用户提供完整的路径和角色名称,以便他们可以在 Amazon Web Services Management Console 的 Switch Role(切换角色)页面输入该角色。例如:division_abc/subdivision_efg/role_XYZ

  • 如果您以编程方式创建角色,则除 RoleName 外,您还可以添加最长 512 个字符的 Path。角色名称最多可以有 64 个字符。但是,要通过 Amazon Web Services Management Console 中的切换角色功能使用角色,则组合的 PathRoleName 不能超过 64 个字符。

  • 为了安全起见,您可以查看 Amazon CloudTrail 日志以了解已在 Amazon 中执行操作的人员。您可以在角色信任策略中使用 sts:SourceIdentity 条件键,以要求用户在代入角色时指定身份。例如,您可以要求 IAM 用户指定自己的用户名作为其源身份。这可以帮助您确定哪个用户在 Amazon 中执行了具体的操作。有关更多信息,请参阅 sts:SourceIdentity 。您可以使用 sts:RoleSessionName,以要求用户在代入角色时指定会话名称。这可以帮助您在不同委托人使用角色时区分角色会话。