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

IAM 角色与基于资源的策略有何不同

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

使用基于资源的策略进行的跨账户访问胜过角色。利用通过基于资源的策略访问的资源,用户仍在可信账户中工作,并且无需放弃用于代替角色权限的用户权限。换言之,用户既能够继续访问可信账户中的资源,又能继续访问信任账户中的资源。这对于向另一个账户中的共享资源复制信息或从中复制信息之类的任务非常有用。

缺点是,并非所有服务都支持基于资源的策略。下面列出了几种支持基于资源的策略的 AWS 服务:

  • Amazon S3 存储桶 – 策略将附加到存储桶,但该策略可控制对存储桶和存储桶中的对象的访问。有关更多信息,请转到 Amazon Simple Storage Service 开发人员指南 中的 Access Control

  • Amazon Simple Notification Service (Amazon SNS) 主题 – 有关更多信息,请转至 Amazon Simple Notification Service 开发人员指南 中的管理对您的 Amazon SNS 主题的访问

  • Amazon Simple Queue Service (Amazon SQS) 队列 – 有关更多信息,请转至 Amazon Simple Queue Service 开发人员指南 中的附录:访问策略语言

有关支持将权限策略附加到资源 (而非委托人) 的完整 AWS 服务列表 (这个列表在不断扩大),请参阅使用 IAM 的 AWS 服务并查找其基于资源的列中的值为的服务。

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

某个资源在其基于资源的策略中将您的 AWS 账户作为委托人向该账户授予权限后,您可以向您的 AWS 账户下的特定用户或组委派权限。将策略附加到您要对其委派权限的用户或组。请注意,您只能委派等于或少于拥有资源的用户向您的账户所授予的权限。例如,如果您的账户获得了对另一 AWS 账户的资源的完全访问权限,则可对您的 AWS 账户下的用户委派完全访问权限、列表访问权限或任何其他部分访问权限。如果您的账户仅获得列表访问权限,则您只能委派列表访问权限。如果您尝试委派的权限超出您的账户所拥有的权限,您的用户也只有列表访问权限。下图对此进行说明。有关将策略附加到用户或组的信息,请参阅管理 IAM 策略

 委托对 AWS账户的访问权限
  1. 账户 A 在策略中将账户 B 指定为委托人,从而向账户 B 授予对账户 A 的 S3 存储桶的完全访问权限。这样,账户 B 可以对账户 A 的存储桶执行任何操作,账户 B 管理员可向其在账户 B 中的用户委派访问权限。

  2. 账户 B 管理员向用户 1 授予对账户 A 的 S3 存储桶的只读访问权限。用户 1 可查看账户 A 存储桶中的对象。账户 B 可委派的访问权限级别等于或低于自身拥有的访问权限级别。在此示例中,授予账户 B 的完全访问权限筛选为授予用户 1 的只读权限。

  3. 账户 B 管理员未向用户 2 授予访问权限。由于默认情况下,除非明确授予,否则用户没有任何权限,因此用户 2 没有对账户 A 的 Amazon S3 存储桶的访问权限。

重要

在前面的示例中,如果账户 B 使用通配符 (*) 为用户 1 授予对其所有资源的完全访问权限,则用户 1 自动获得对账户 B 有权访问的任何资源的访问权限,包括其他账户授予的对其资源的访问权限。在此示例中,除了明确授予用户 1 的权限外,用户 1 还将获得向账户 B 授予的对任何账户 A 资源的访问权限。

IAM 将在用户发出请求时对用户的许可进行评估。因此,如果您使用通配符 (*) 授予用户全面访问资源的许可,则用户将能够访问您的 AWS 账户可访问的任何资源,甚至包括您创建用户策略后添加或获取的资源。

有关权限、策略以及用于编写策略的权限策略语言的信息,请参阅访问控制

重要

仅授予信任实体访问权限,且尽量减少授予的许可数量。只要可信实体是其他 AWS 账户,该账户就能够将访问权限委派给其任何 IAM 用户。可信 AWS 账户可委派的访问权限范围仅限于它所获得的访问权限;它委派的权限不能超出账户本身所获得的访问权限。