AWS Identity and Access Management
用户指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

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

假设贵组织拥有多个 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 调用中停止使用临时凭证并使用原始凭证。