在您拥有的其他 Amazon Web Services 账户 中 IAM 用户的访问权限 - Amazon Identity and Access Management
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

在您拥有的其他 Amazon Web Services 账户 中 IAM 用户的访问权限

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

注意

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

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

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

  • 用户必须使用 Amazon Web Services Management Console主动切换为该角色,或使用 Amazon CLI 或 Amazon API 担任角色。

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

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

在您出于此目的创建角色时,可在该角色的信任策略的 Principal 元素中按 ID 指定其用户需要访问权限的账户。随后可以向这些其他账户中的特定用户授予切换到角色的权限。要了解您信任区域之外的账户(受信任的企业或账户)中的主体是否有权承担您的角色,请参阅什么是 IAM Access Analyzer?

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

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

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

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

    然后,管理员相应信息与需要担任角色的所有人共享。该信息是角色的账号和名称(对于 Amazon 控制台用户)或 Amazon Resource Name (ARN)(用于 Amazon CLI 或 Amazon API 访问)。角色 ARN 类似于 arn:aws:iam::123456789012:role/UpdateApp,其中角色名为 UpdateApp,角色采用账号 123456789012 进行创建。

    注意

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

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

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

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

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

  4. Amazon STS 返回临时凭证:

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

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

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

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

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

其他资源

有关更多信息,请参阅下列内容: