本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
的术语和概念Amazon RAM
以下概念有助于解释如何使用Amazon Resource Access Manager (Amazon RAM) 共享资源。
资源共享
您可以Amazon RAM通过创建资源共享来共享资源。资源共享包含以下三个要素:
在您使用创建资源共享后,可以Amazon RAM向资源共享中指定的委托人授予对该共享资源的访问权限。
-
如果您开启了Amazon RAM共享功能,并且与Amazon Organizations您共享的委托人与共享账户位于同一个组织中,则只要他们的账户管理员使用Amazon Identity and Access Management (IAM) 权限策略授予他们使用资源的权限,这些委托人就可以获得访问权限。
-
如果您未开启与OrAmazon RAM ganizations 共享Amazon Web Services 账户,您仍然可以与组织中的个人共享资源。使用者账户中的管理员收到加入资源共享的邀请,他们必须接受邀请,然后资源共享中指定的主人才能访问共享资源。
-
如果资源类型支持,您也可以与组织外部的帐户共享。使用者账户中的管理员收到加入资源共享的邀请,他们必须接受邀请,然后资源共享中指定的主人才能访问共享资源。有关哪些资源类型支持此类共享的信息,请参阅可共享Amazon资源和查看 “可以与其组织之外的帐户共享” 列。
共享账户
共享帐户包含共享的资源,Amazon RAM管理员使用在其中创建Amazon资源共享Amazon RAM。
Amazon RAM管理员是有权在中创建和配置资源共享的 IAM 委托人Amazon Web Services 账户。由于Amazon RAM工作原理是将基于资源的策略附加到资源共享中的资源,因此Amazon RAM管理员还必须具有Amazon Web Service针对资源共享中包含的每种资源类型调用PutResourcePolicy
操作的权限。
消费账户
消费账户是共享资源Amazon Web Services 账户的账户。资源共享可以将整个账户指定为委托人,或者对于某些资源类型,指定账户中的单个角色或用户。有关哪些资源类型支持此类共享的信息,请参阅可共享Amazon资源和查看 “可以与 IAM 角色和用户共享” 列。
消费账户中的委托人只能执行以下两个权限都允许的操作:
-
附加到资源共享的Amazon RAM托管权限。它们指定了可以在消费账户中授予委托人的最大权限。
-
IAM 管理员在消费账户中附加到单个角色或用户的 IAM 基于身份的策略。这些策略必须授予对指定操作和共享账户中资源的亚马逊资源名称 (ARN) 的
Allow
访问权限。
Amazon RAM支持以下 IAM 主体类型作为资源共享的使用者:
-
另一个Amazon Web Services 账户。 资源共享使共享账户中包含的资源可供使用者账户使用。
-
其他账户中的个人 IAM 角色或用户。某些资源类型支持直接与单个 IAM 角色或用户共享。通过 ARN 指定此委托人类型。
-
IAM 角色:
arn:aws:iam::123456789012:role/rolename
-
IAM 用户:
arn:aws:iam::123456789012:user/username
-
-
组织中的帐户。如果共享帐户由管理Amazon Organizations,则资源共享可以指定组织的 ID 以与组织中的所有帐户共享。资源共享也可以指定一个组织单位 (OU) ID,与该 OU 中的所有账户共享。共享账户只能与自己的组织或自己组织内的 OU ID 共享。通过组织或 OU 的 ARN 指定组织中的账户。
-
组织中的所有账户。AR 的企业的 ARN 示例Amazon Organizations:
arn:aws:organizations::123456789012:organization/o-<orgid>
-
组织单位中的所有账户。OU ID 的示例 ARN:
arn:aws:organizations::123456789012:organization/o-<orgid>/ou-<rootid>-<ouid>
重要 当您与组织或 OU 共享(该范围包括拥有资源共享的账户)时,共享账户中的所有委托人都会自动访问共享中的资源。授予的访问权限由与共享相关的托管权限定义。这是因为Amazon RAM附加到共享中每种资源的基于资源的策略会使用
"Principal": "*"
。有关更多信息,请参阅在基于资源的策略中使用 “Prinity”:“*” 的含义:其他消费账户的委托人无法立即访问该共享的资源。其他账户的管理员必须首先将基于身份的权限策略附加到相应的主人。这些策略必须授予对资源共享中单个资源的 ARN 的
Allow
访问权限。这些策略中的权限不能超过与资源共享相关的Amazon RAM托管权限中指定的权限。 -
基于资源的策略
基于资源的策略是实现 IAM 策略语言的 JSON 文本文档。与附加到 IAM 角色或用户(如 IAM 角色或用户)的基于身份的策略不同,附加基于资源的策略。您必须指定决定谁可以访问资源的Principal
策略元素。有关更多信息,请参阅 IAM 用户指南中的基于身份的策略和基于资源的策略。
Amazon RAM通过提供基于 easy-to-use 抽象资源的策略,提供简单安全的资源共享体验。
对于支持基于资源的策略的资源类型,Amazon RAM自动为您构建和管理基于资源的策略。对于给定资源,通过合并包含该资源的所有资源共享中的信息来Amazon RAM构建基于资源的策略。例如,假设您使用一个共享的 Amazon SageMaker 管道,Amazon RAM并将其包含在两个不同的资源共享中。您可以使用一个资源共享来为整个组织提供只读访问权限。然后,您可以使用其他资源共享仅向单个账户授予 SageMaker 执行权限。 Amazon RAM自动将这两组不同的权限组合成具有多个语句的单个资源策略。然后,它将基于资源的组合策略附加到管道资源。您可以通过调用该GetResourcePolicy操作来查看此基础资源策略。 Amazon然后,服务使用该基于资源的策略来授权任何尝试对共享资源执行操作的委托人。
尽管您可以手动创建基于资源的策略并通过调用将其附加到您的资源上PutResourcePolicy
,但我们建议您使用,Amazon RAM因为它具有以下优点
-
共享使用者的可发现性:如果您通过使用Amazon RAM共享资源,则用户可以在资源所有者服务的控制台和 API 操作中直接看到与他们共享的所有资源,就好像这些资源直接存在于用户的账户中一样。例如,如果您与其他账户共享一个Amazon CodeBuild项目,则消费账户中的用户可以在 CodeBuild 控制台和执行的 CodeBuild API 操作的结果中看到该项目。通过这种方式无法看到通过直接附加基于资源的策略共享的资源。相反,您必须通过资源的 ARN 发现并明确引用该资源。
-
共享所有者的可管理性:如果您通过使用共享资源Amazon RAM,则共享账户中的资源所有者可以集中查看哪些其他账户有权访问他们的资源。如果您使用基于资源的策略共享资源,则只能通过在相关服务控制台或 API 中检查单个资源的策略来查看使用者账户。
-
效率:如果您通过使用共享资源Amazon RAM,则可以共享多个资源并将它们作为一个整体进行管理。仅使用基于资源的策略共享的资源需要将单独的策略附加到您共享的每个资源上。
-
简单:Amazon RAM使您无需了解基于 JSON 的 IAM 策略语言。 Amazon RAM提供 ready-to-use托管权限,您可以选择将这些权限附加到您的资源共享。
通过使用Amazon RAM,您甚至可以共享一些尚不支持基于资源的策略的资源类型。对于此类资源类型,Amazon RAM自动生成基于资源的策略以表示实际权限。用户可以通过致电查看此表示法GetResourcePolicy。这包括以下资源类型:
-
Amazon Aurora — 数据库集
-
Amazon EC2 — 容量预留和专用主机
-
Amazon License Manager— 许可证配置
-
Amazon Outposts— 本地网关路由表、前哨和站点
-
Amazon Route 53 — 转发
-
Amazon Virtual Private Cloud — 客户拥有的 IPv4 地址、前缀列表、子网、流量镜像目标、传输网关、传输网关多播域
Amazon RAM生成的基于资源的策略的示例
如果您与个人账户共享 EC2 Image Builder 映像资源,则Amazon RAM会生成一个类似于以下示例的策略并将其附加到资源共享中包含的任何图像资源。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::123456789012:root"}, "Action": [ "imagebuilder:GetImage", "imagebuilder:ListImages", ], "Resource": "arn:aws:imagebuilder:cn-north-1:123456789012:image/testimage/1.0.0/44" } ] }
如果您与其他 Amazon Web Services 账户IAM 角色或用户共享 EC2 Image Builder 映像资源,则Amazon RAM生成类似于以下示例的策略并将其附加到资源共享中包含的任何图像资源。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/MySampleRole" }, "Action": [ "imagebuilder:GetImage", "imagebuilder:ListImages", ], "Resource": "arn:aws:imagebuilder:cn-north-1:123456789012:image/testimage/1.0.0/44" } ] }
如果您与组织中的所有账户或 OU 账户共享 EC2 Image Builder 映像资源,则Amazon RAM会生成一个类似于以下示例的策略并将其附加到资源共享中包含的任何图像资源。
此策略使用"Principal": "*"
然后使用"Condition"
元素将权限限制为与指定身份相匹配的身份PrincipalOrgID
。有关更多信息,请参阅在基于资源的策略中使用 “Prinity”:“*” 的含义:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": [ "imagebuilder:GetImage", "imagebuilder:ListImages", ], "Resource": "arn:aws:imagebuilder:cn-north-1:123456789012:image/testimage/1.0.0/44" "Condition": { "StringEquals": { "aws:PrincipalOrgID": "o-123456789" } } } ] }
在基于资源的策略中使用 “Prinity”:“*” 的含义
当您在基于资源的策略"Principal": "*"
中包含资源时,该策略会向包含该资源的账户中的所有 IAM 委托人授予访问权限,但须遵守Condition
元素施加的任何限制(如果存在)。任何政策中适用于呼叫委托人的明确Deny
声明都会优先于本政策授予的权限。但是,任何适用的身份策略、权限边界策略或会话策略中的隐含内容Deny
(即缺少明确的内容Allow
)Deny
并不会导致此类基于资源的策略授予操作访问权限的委托人身份。
如果这种行为不适合您的场景,则可以通过向影响相关角色和用户的身份策略、权限边界或会话策略添加明确Deny
声明来限制这种行为。
托管权限
托管权限定义了使用者如何使用资源共享对资源进行操作。创建资源共享时,必须为资源共享中包含的每种资源类型指定要使用的管理权限。托管权限列出了共享资源的用户可以在哪些条件下actions
对资源执行指定操作。
Amazon RAM为每种支持的资源类型定义至少一个Amazon托管权限。某些资源类型支持多个Amazon托管权限,其中一个被指定为默认权限。除非另行指定,否则将使用默认的托管权限。您只能为资源共享中的每种资源类型附加一个托管权限。您无法创建资源共享,其中某些类型的资源使用一个托管权限,而其他相同类型的资源使用不同的托管权限。为此,你需要创建两个不同的资源共享并在它们之间拆分资源,为每个共享的集合提供不同的管理权限。
Amazon RAM使用基于资源的策略来提供托管权限的大部分核心功能。对托管权限以及适用于访问场景的所有其他 IAM 策略类型进行评估。这包括附加到尝试访问资源的委托人的任何基于身份的 IAM 权限策略,以及可能适用于该资源的服务控制策略 (SCP)Amazon Web Services 账户。Amazon OrganizationsRAM 生成的基于资源的策略与所有其他 IAM 策略参与相同的策略评估逻辑。有关策略评估以及如何确定最终权限的完整详细信息,请参阅 IAM 用户指南中的策略评估逻辑。
权限版本
托管权限可以随着时间的推移而更新,以解决新功能或解决发现的缺点。对托管权限的任何更改都表示为该托管权限的新版本。始终将其中一个版本指定为默认版本。
创建或更新资源共享时,只能附加指定托管权限的默认版本。有关更多信息,请参阅 将Amazon RAM托管权限更新到较新版本。