在您拥有的其他 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 账户 以将开发环境与生产环境隔离。开发账户中的用户有时可能需要访问生产账户中的资源。例如,在促进从开发环境到生产环境的更新时,您可能需要进行跨账户访问。尽管您可以为在两个账户中工作的用户创建单独的身份 (和密码),多个账户的凭证管理还是会为身份管理带来难题。在以下图表中,所有用户都通过开发账户进行管理,但一些开发人员需要对生产账户进行有限访问。开发账户有两个组:测试人员和开发人员,每个组有其自身的策略。
-
在生产账户中,管理员使用 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 访问。
-
在开发账户中,管理员向开发人员组的成员授予切换为角色的权限。执行此操作的方法是向开发人员组授予针对
UpdateApp
角色调用 Amazon Security Token Service (Amazon STS)AssumeRole
API 的权限。开发账户中开发人员组的所有 IAM 用户现在都可以切换为生产账户中的UpdateApp
角色。不在开发人员组中的其他用户无权切换为该角色,因此无法访问生产账户中的 S3 存储桶。 -
用户请求切换为角色:
-
Amazon 控制台:用户选择导航栏上的账户名并选择 Switch Role (切换角色)。用户指定账户 ID (或别名) 和角色名称。或者,用户可以单击管理员在电子邮件中发送的链接。通过该链接,用户可以转到已填写详细信息的 Switch Role 页面。
-
Amazon API/Amazon CLI:开发账户中开发人员组的用户调用
AssumeRole
函数以获取UpdateApp
角色的凭证。用户将UpdateApp
角色的 ARN 指定为调用的一部分。如果测试人员组中的用户发出相同请求,请求将失败,因为测试人员没有针对UpdateApp
角色 ARN 调用AssumeRole
的权限。
-
-
Amazon STS 返回临时凭证:
-
临时凭证允许访问 Amazon 资源:
-
Amazon 控制台:Amazon 控制台在所有后续控制台操作中代表用户使用临时凭证,在本例中是用于读取和写入
productionapp
存储桶。该控制台无法访问生产账户中的任何其他资源。用户退出角色时,用户的权限恢复为切换为角色之前所拥有的原始权限。 -
API/CLI:应用程序使用临时安全凭证更新
productionapp
存储桶。应用程序只能使用临时安全凭证读取和写入productionapp
存储桶,无法访问生产账户的任何其他资源。应用程序不必退出角色,只需在后续 API 调用中停止使用临时凭证并使用原始凭证。
-
其他资源
有关更多信息,请参阅下列内容: