如何 IAM 角色与基于资源的政策不同 - AWS Identity and Access Management
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

如果我们为英文版本指南提供翻译,那么如果存在任何冲突,将以英文版本指南为准。在提供翻译时使用机器翻译。

如何 IAM 角色与基于资源的政策不同

对于一些 AWS 服务,您可以授予对资源的跨账户访问权限。为此,您可将策略直接附加到要共享的资源,而不是将角色用作代理。要共享的资源必须支持基于资源的策略。与基于身份的策略不同,基于资源的策略指定谁(哪个委托人)可以访问该资源。

注意

IAM 角色和基于资源的策略仅在单个分区内跨账户委派访问权限。例如,假定您在标准 aws 分区的美国西部(加利福尼亚北部)中有一个账户。您在 aws-cn 分区的中国(北京)中也有一个账户。您不能使用中国(北京)的账户中 Amazon S3 基于资源的策略,来允许标准 aws 账户中用户的访问权限。

与使用角色进行跨账户访问相比,使用基于资源的策略进行跨账户访问具有一些优势。利用通过基于资源的策略访问的资源,委托人仍在可信账户中工作,并且无需放弃其权限来接收角色权限。换言之,委托人既能够继续访问可信账户中的资源,又能继续访问信任账户中的资源。这对于向另一个账户中的共享资源复制信息或从中复制信息之类的任务非常有用。要了解您信任区域之外的账户(受信任的组织或账户)中的委托人是否有权承担您的角色,请参阅什么是 IAM Access Analyzer?

可在基于资源的策略中指定的委托人包括账户、IAM 用户、联合用户、IAM 角色、代入角色会话或 AWS 服务。有关更多信息,请参阅 指定委托人。)

以下列表包括一些支持基于资源的策略的 AWS 服务。完整列出越来越多的 AWS 支持将权限策略附加至资源而非主体的服务,请参阅 AWS 与 IAM 并寻找 基于资源 列。

关于委派 AWS 基于资源的策略中的权限

如果资源向账户中的委托人授予权限,则您随后可将这些权限委派给特定的 IAM 身份。身份是您账户中的用户、用户组或角色。可以通过将策略附加到身份来委派权限。您可以授予拥有资源的账户所允许的最多权限。

假定基于资源的策略允许您账户中的所有委托人对资源进行完全管理访问。随后,您可以将完全访问权限、只读访问权限或任何其他部分访问权限委派给 AWS 账户中的委托人。或者,如果基于资源的策略仅允许列表权限,则您只能委派列表访问权限。如果您尝试委派的权限超出您的账户所拥有的权限,您的委托人将只有列表访问权限。有关将策略附加到 IAM 身份的信息,请参阅管理 IAM 策略

注意

IAM 角色和基于资源的策略仅在单个分区内跨账户委派访问权限。例如,您不能在标准 aws 分区的账户与 aws-cn 分区中的账户之间添加跨账户访问权限。

例如,假设您管理 AccountAAccountB。在 AccountA,您有 Amazon S3 名为 BucketA。您向以下人员附上基于资源的策略 BucketA 允许所有 AccountB 完全访问存储桶中的对象。这些委托人可以创建、读取或删除该存储桶中的任何对象。在 AccountB,您将政策附加在 IAM 用户名称 User2。该策略允许用户以只读方式访问 BucketA。这意味着 User2 可以查看对象,但不能创建、编辑或删除对象。


        授权访问 AWS 客户
  1. AccountA 通过在基于资源的策略中将 AccountB 指定为委托人来向 AccountB 提供对 BucketA 的完全访问权限。因此,AccountB 有权对 BucketA 执行任何操作,并且 AccountB 管理员可以向其在 AccountB 中的用户委派访问权限。

  2. AccountB 根用户 具有授予给该账户的所有权限。因此,根用户 具有对 BucketA 的完全访问权限。

  3. AccountB 管理员不授予访问权限 User1。默认情况下,除了明确授予的权限之外,用户没有任何权限。因此,User1 无权访问 BucketA

  4. AccountB 管理员向 User2 授予对 BucketA 的只读访问权限。User2 可以查看存储桶中的对象。AccountB 可委派的最大访问级别是授予给账户的访问级别。在此情况下,基于资源的策略授予了对 AccountB 的完全访问权限,但仅向 User2 授予了只读访问权限。

IAM 将在委托人发出请求时对委托人的权限进行评估。因此,如果您使用通配符 (*) 向用户授予对资源的完全访问权限,则委托人可以访问您的 AWS 账户有权访问的任何资源。甚至对于您在创建用户策略后添加或获得其访问权的资源也是如此。

在上述示例中,如果 AccountB 已将允许对所有账户中的所有资源进行完全访问的策略附加到 User2,则 User2 将自动具有 AccountB 有权访问的任何资源的访问权限。这包括 BucketA 访问权限以及由 AccountA 中的基于资源的策略授予的对任何其他资源的访问权限。

重要

仅向信任实体授予访问权限,并提供最低级别的访问权限。只要可信实体是其他 AWS 账户,该账户就能够将访问权限委派给其任何 IAM 用户。可信 AWS 账户可委派的访问权限范围仅限于它所获得的访问权限;它委派的权限不能超出账户本身所获得的访问权限。

有关权限、策略以及用于编写策略的权限策略语言的信息,请参阅访问管理的ASM资源