AWS Identity and Access Management
用户指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

在您拥有的另一个 AWS 账户中向 IAM 用户提供访问权限

您可以向 IAM 用户授予权限,以便切换至您 AWS 账户中的角色,或切换至您拥有的其他 AWS 账户中定义的角色。

注意

如果要授予对您未拥有或无法控制的账户的访问权限,请参阅本主题后面的向第三方拥有的 AWS 账户提供访问权限

假设您拥有一个组织关键型 Amazon Elastic Compute Cloud (Amazon EC2) 实例。您可以创建具有这些权限的角色,并允许管理员在需要终止实例时切换为该角色,而不是直接向用户授予终止实例的权限。这样,可向实例添加以下几层保护:

  • 您必须向用户显式授予担任该角色的权限。

  • 用户必须使用 AWS 管理控制台主动切换为该角色。

  • 您可以向该角色添加 Multi-Factor Authentication (MFA) 保护,以便只有登录 MFA 设备的用户才能担任该角色。要了解如何配置角色以使担任角色的用户必须先使用多重身份验证 (MFA) 进行身份验证,请参阅配置受 MFA 保护的 API 访问

我们建议使用此方法强制实施最低访问权限原则,即,仅限特定任务需要时,才能使用提升的权限。借助角色,您可以帮助防止对敏感环境进行意外更改,如果您将它们与审核合并以帮助确保仅在需要时才使用角色,这尤其适用。

在您出于此目的创建角色时,可在该角色的信任策略的 Principal 元素中按 ID 指定其用户需要访问权限的账户。随后可以向这些其他账户中的特定用户授予切换到角色的权限。

一个账户中的用户可以切换为相同或不同账户中的角色。使用角色过程中,用户只能执行角色允许的操作并且只能访问角色允许的资源;其原始用户权限处于暂停状态。用户退出角色时,恢复原始用户权限。

使用不同的开发和生产账户的示例方案

假设贵组织拥有多个 AWS 账户以将开发环境与生产环境隔离。开发账户中的用户有时可能需要访问生产账户中的资源,例如在将更新从开发环境推广到生产环境时。尽管您可以为在两个账户中工作的用户创建单独的身份 (和密码),多个账户的凭证管理还是会为身份管理带来难题。在以下图表中,所有用户都通过开发账户进行管理,但一些开发人员需要对生产账户进行有限访问。开发账户有两个组:测试人员和开发人员,每个组有其自身的策略。

 使用角色向不同账户中的用户委托权限
  1. 生产账户中的一名管理员使用 IAM 在该账户中创建 UpdateAPP 角色。在角色中,管理员定义信任策略,该策略将开发账户指定为 Principal,这意味着开发账户中的授权用户可以使用 UpdateAPP 角色。管理员还为角色定义权限策略,该策略指定代入角色的用户拥有对名为 productionapp 的 Amazon Simple Storage Service (S3) 存储桶的读取和写入权限。

    然后,管理员将与需要代入角色的任何人共享该角色 (对于 AWS 控制台用户) 的账号和名称,或共享角色的 (对于 AWS CLI、Windows PowerShell 工具 或 AWS API 访问) Amazon 资源名称 (ARN)。角色 ARN 类似于 arn:aws-cn:iam::123456789012:role/UpdateAPP,其中角色名为 UpdateAPP,角色采用账号 123456789012 进行创建。

    注意

    管理员可以选择配置角色,以便担任角色的用户必须先使用 Multi-Factor Authentication (MFA) 进行身份验证。有关更多信息,请参阅 配置受 MFA 保护的 API 访问

  2. 在开发账户中,管理员向开发人员组的成员授予切换为角色的权限。执行此操作的方法是向开发人员组授予针对 UpdateAPP 角色调用 AWS Security Token Service (AWS STS) AssumeRole API 的权限。开发账户中开发人员组的所有 IAM 用户现在都可以切换为生产账户中的 UpdateAPP 角色。不在开发人员组中的其他用户无权切换为该角色,因此无法访问生产账户中的 S3 存储桶。

  3. 用户请求切换为角色:

    • AWS 控制台:用户选择导航栏上的账户名并选择 Switch Role。用户指定账户 ID (或别名) 和角色名称。或者,用户可以单击管理员在电子邮件中发送的链接。通过该链接,用户可以转到已填写详细信息的 Switch Role 页面。

    • AWS API/Windows PowerShell 工具/AWS CLI:开发账户中开发人员组的用户调用 AssumeRole 函数以获取 UpdateAPP 角色的凭证。用户将 UpdateAPP 角色的 ARN 指定为调用的一部分。如果测试人员组中的用户发出相同请求,请求将失败,因为测试人员没有针对 UpdateAPP 角色 ARN 调用 AssumeRole 的权限。

  4. AWS STS 返回临时凭证:

    • AWS 控制台:AWS STS 使用角色的信任策略来验证请求,以确保请求来自可信实体 (即开发账户)。验证完成后,AWS STS 向 AWS 控制台返回临时安全凭证

    • API/CLI:AWS STS 根据角色的信任策略来验证请求,以确保请求来自可信实体 (即 Development 账户)。验证完成后,AWS STS 向应用程序返回临时安全凭证

  5. 临时凭证允许访问 AWS 资源:

    • AWS 控制台:AWS 控制台在所有后续控制台操作中代表用户使用临时凭证,在此示例中用于读取和写入 productionapp 存储桶。该控制台无法访问生产账户中的任何其他资源。用户退出角色时,用户的权限恢复为切换为角色之前所拥有的原始权限。

    • API/CLI:应用程序使用临时安全凭证更新 productionapp 存储桶。应用程序只能使用临时安全凭证读取和写入 productionapp 存储桶,无法访问生产账户的任何其他资源。应用程序不必退出角色,只需在后续 API 调用中停止使用临时凭证并使用原始凭证。