的术语和概念Amazon RAM - Amazon Resource Access Manager
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

的术语和概念Amazon RAM

以下概念有助于解释如何使用Amazon Resource Access Manager(Amazon RAM) 共享资源。

资源共享

您可以Amazon RAM通过创建资源共享来使用共享资源。资源共享包含以下三个要素:

  • 要共享的一个或多个Amazon资源的列表。

  • 要向其授予资源访问权限的一个或多个主体的列表。

  • 共享中包含的每种资源的托管权限。每项托管权限适用于该资源共享中该类型的所有资源。

在您使用创建资源共享之后,可以Amazon RAM向资源共享中指定的委托人授予访问该共享资源的权限。

  • 如果您开启与Amazon RAM共享Amazon Organizations,并且您与之共享的委托人与共享账户属于同一个组织,则只要他们的账户管理员使用Amazon Identity and Access Management(IAM) 权限策略向他们授予使用资源的权限,这些委托人就可以获得访问权限。

  • 如果您未开启与 Or Amazon RAM ganizations 共享,您仍然可以与组织中的个人Amazon Web Services 账户共享资源。使用账户中的管理员会收到加入资源共享的邀请,且他们必须接受邀请,然后资源共享中指定的主体才能访问共享的资源。

  • 如果资源类型支持,您也可以与组织外部的账户共享。使用账户中的管理员会收到加入资源共享的邀请,且他们必须接受邀请,然后资源共享中指定的主体才能访问共享的资源。有关哪些资源类型支持此类共享的信息,请参阅可共享的资源Amazon,并查看可以与其组织之外的账户共享列。

共享账户

共享帐户包含共享的资源,Amazon RAM管理员使用在其中创建Amazon资源共享Amazon RAM。

Amazon RAM管理员是 IAM 委托人,有权在中创建和配置资源共享Amazon Web Services 账户。由于通过将基于资源的策略附加到资源共享中的资源来起Amazon RAM作用,因此Amazon RAM管理员还必须有权对资源共享中包含Amazon Web Services 服务的每种资源类型调用PutResourcePolicy操作。

使用主体

消费账户是Amazon Web Services 账户共享资源的账户。资源共享可以将整个账户指定为主体,或者对于某些资源类型,可以指定账户中的单个角色或用户。有关哪些资源类型支持此类共享的信息,请参阅可共享的资源Amazon,并查看可以与 IAM 角色和用户共享列。

Amazon RAM还支持服务主体作为资源共享的使用者。有关哪些资源类型支持此类共享的信息,请参阅可共享的资源Amazon,并查看可以与服务主体共享列。

使用账户中的主体只能执行以下两个 权限所允许的操作:

  • 附加到资源共享的托管权限。它们指定了可以向使用账户中的主体授予的最大 权限。

  • 使用账户中的 IAM 管理员附加到个人角色或用户的 IAM 基于身份的策略。这些策略必须授予对共享账户中资源的指定操作和 Amazon 资源名称(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服务共享资源以授予该服务对资源共享的访问权限。服务主体共享允许Amazon服务代表您采取行动,以减轻运营负担。

    要与服务主体共享,请选择允许与任何人共享,然后,在选择主体类型下,从下拉列表中选择服务主体。采用以下格式指定服务主体的名称:

    • service-id.amazonaws.com

    为了降低混淆代理人带来的风险,资源策略在 aws:SourceAccount 条件键中显示资源所有者的账户 ID。

  • 组织中的帐户-如果共享帐户由管理Amazon Organizations,则资源共享可以指定要与组织中的所有帐户共享的组织 ID。资源共享也可以指定组织单位(OU)ID,以便与该 OU 中的所有账户共享。共享账户只能与自己的组织或其组织 IDs 内部的 OU 共享。按组织或 OU 的 ARN 指定组织中的账户。

    • 组织中的所有账户 - 以下是Amazon Organizations中组织的 ARN 示例:

      arn:aws:organizations::123456789012:organization/o-<orgid>

    • 组织单位中的所有账户 - 以下是 OU ID 的 ARN 示例:

      arn:aws:organizations::123456789012:organization/o-<orgid>/ou-<rootid>-<ouid>

    重要

    当您与组织或 OU 共享,并且该范围包括拥有资源共享的账户时,共享账户中的所有主体都会自动获得对共享中资源的访问权限。授予的访问权限由与共享关联的托管权限定义。这是因为Amazon RAM附加到共享中每个资源的基于资源的策略使用"Principal": "*"。有关更多信息,请参阅 在基于资源的策略中使用 "Principal": "*" 的影响

    其他所使用账户中的主体无法立即访问共享的资源。其他账户的管理员必须首先将基于身份的权限策略附加到相应的主体。这些策略必须授予 ARNs 对资源共享中各个资源的Allow访问权限。这些策略中的权限不能超过与资源共享关联的托管权限中指定的权限。

基于资源的政策

基于资源的策略是实施 IAM 策略语言的 JSON 文本文档。与您附加到委托人的基于身份的策略(例如 IAM 角色或用户)不同,您可以将基于资源的策略附加到资源。Amazon RAM根据您为资源共享提供的信息,代表您制定基于资源的策略。您必须指定一个 Principal 策略元素来确定谁可以访问该资源。有关更多信息,请参见《IAM 用户指南》中的基于身份的策略和基于资源的策略

将对生成的Amazon RAM基于资源的策略以及所有其他 IAM 策略类型进行评估。这包括附加到尝试访问资源的委托人的任何基于 IAM 身份的策略,以及可能适用于该资源的服务控制策略 (SCPs)。Amazon OrganizationsAmazon Web Services 账户由生成的基于资源的策略Amazon RAM参与与所有其他 IAM 策略相同的策略评估逻辑。有关策略评估以及如何确定生成的权限的完整详细信息,请参阅《IAM 用户指南》中的策略评估逻辑

Amazon RAM通过提供基于 easy-to-use抽象资源的策略,提供简单安全的资源共享体验。

对于支持基于资源的策略的资源类型,Amazon RAM会自动为您构建和管理基于资源的策略。对于给定资源,Amazon RAM通过组合包含资源的所有资源共享中的信息,构建基于该资源的策略。例如,假设您通过使用Amazon RAM并包含在两个不同的资源共享中共享的 SageMaker Amazon AI 管道。您可以使用一个资源共享为整个组织提供只读访问权限。然后,您可以使用其他资源共享仅向单个账户授予 SageMaker AI 执行权限。Amazon RAM自动将这两组不同的权限组合成一个包含多个语句的资源策略。然后,它将组合的基于资源的策略附加到管道资源。您可以通过调用GetResourcePolicy操作来查看此底层资源策略。Amazon Web Services 服务然后使用该基于资源的策略来授权任何试图对共享资源执行操作的委托人。

尽管您可以手动创建基于资源的策略并通过调用 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托管权限,您可以选择将其附加到资源共享。

通过使用Amazon RAM,您甚至可以共享一些尚不支持基于资源的策略的资源类型。对于此类资源类型,会Amazon RAM自动生成一个基于资源的策略来表示实际权限。用户可以通过调用 GetResourcePolicy 来查看此表示形式。这包含以下资源类型:

  • Amazon Aurora - DB 集群

  • Amazon EC2 — 容量预留和专用主机

  • Amazon License Manager— 许可证配置

  • Amazon Outposts— 本地网关路由表、前哨基地和站点

  • Amazon Route 53 - 转发规则

  • Amazon Virtual Private Cloud — 客户拥有 IPv4 的地址、前缀列表、子网、流量镜像目标、传输网关和传输网关组播域

Amazon RAM生成的基于资源的策略示例

如果您与个人账户共享 Image Builder EC2 图像资源,则Amazon RAM会生成如下例所示的策略,并将其附加到资源共享中包含的所有图像资源。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:root" }, "Action": [ "imagebuilder:GetImage", "imagebuilder:ListImages" ], "Resource": "arn:aws:imagebuilder:us-east-1:123456789012:image/testimage/1.0.0/44" } ] }

如果您与其他 IAM 角色或用户共享 Image Builder EC2 图像资源,则Amazon RAM会生成如下例所示的策略,并将其附加到资源共享中包含的所有图像资源。Amazon Web Services 账户

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/MySampleRole" }, "Action": [ "imagebuilder:GetImage", "imagebuilder:ListImages" ], "Resource": "arn:aws:imagebuilder:us-east-1:123456789012:image/testimage/1.0.0/44" } ] }

如果您与组织中的所有账户或组织中的账户共享 Image Builder EC2 图像资源,则Amazon RAM会生成如下例所示的策略,并将其附加到资源共享中包含的所有图像资源。

注意

此策略使用 "Principal": "*",然后使用 "Condition" 元素将权限限制为与指定 PrincipalOrgID 相匹配的身份。有关更多信息,请参阅 在基于资源的策略中使用 "Principal": "*" 的影响

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": [ "imagebuilder:GetImage", "imagebuilder:ListImages" ], "Resource": "arn:aws:imagebuilder:us-east-1:123456789012:image/testimage/1.0.0/44", "Condition": { "StringEquals": { "aws:PrincipalOrgID": "o-123456789" } } } ] }

在基于资源的策略中使用 "Principal": "*" 的影响

当您在基于资源的策略中包含 "Principal": "*" 时,该策略会向账户中包含该资源的所有 IAM 主体授予访问权限,但须遵守 Condition 元素施加的任何限制(如果存在)。适用于调用主体的任何策略中的明确 Deny 语句将覆盖此策略授予的权限。但是,在任何适用的身份策略、权限边界策略或会话策略中,隐式 Deny(意味着缺少显式 Allow不会导致对通过此类基于资源的策略获得某操作的访问权限的主体执行 Deny

如果您的场景不希望出现这种行为,则您可以通过向影响相关角色和用户的身份策略、权限边界或会话策略添加显式 Deny 语句,限制这种行为。

托管权限

托管权限定义了主体可以在哪些条件下对资源共享中支持的资源类型执行哪些操作。创建资源共享时,您必须指定要对资源共享中包含的每种资源类型使用哪种托管权限。托管权限列出了委托人可以使用Amazon RAM共享的资源执行的一组actions条件

您只能为资源共享中的每种资源类型附加一个托管权限。如果某个类型的某些资源使用一种托管权限,而相同类型的其他资源使用不同的托管权限,则无法创建资源共享。为此,您需要创建两个不同的资源共享并在它们之间分配资源,以便为每个资源集提供不同的托管权限。有两种不同类型的托管权限:

Amazon托管权限

Amazon托管权限由常见客户场景创建、维护Amazon和授予权限。Amazon RAM为每种支持的资源类型定义至少一个Amazon托管权限。某些资源类型支持多个Amazon托管权限,其中一个托管权限被指定为Amazon默认权限。除非您另行指定,否则将关联默认Amazon托管权限

客户托管权限

客户托管权限是您通过精确指定可以在哪些条件下使用Amazon RAM共享的资源执行哪些操作来创建和维护的托管权限。例如,您想限制 Amazon VPC IP 地址管理器(IPAM)池的读取权限,这有助于您大规模管理 IP 地址。您可以为开发人员创建客户托管权限来分配 IP 地址,但不能查看其他开发人员账户分配的 IP 地址范围。您可以遵循最低权限相关的最佳实践,仅授予在共享资源上执行任务所需的权限。

您可以为资源共享中的资源类型定义自己的权限,并可以选择添加诸如全局上下文键服务特定键之类的条件,以指定主体访问资源的条件。这些权限可以在一个或多个Amazon RAM共享中使用。客户托管权限为区域特定权限。

Amazon RAM将托管权限作为输入,为您共享的资源制定基于资源的策略

托管权限版本

对托管权限的任何更改都表示为该托管权限的新版本。新版本是所有新资源共享的默认版本。每个托管权限始终有一个指定为默认版本的版本。当您或Amazon创建新的托管权限版本时,必须明确更新每个现有资源共享的托管权限。在此步骤中,您可以先评估更改,然后再将其应用于您的资源共享。所有新的资源共享将自动使用相应资源类型的新版托管权限。

Amazon托管权限版本

Amazon处理对Amazon托管权限的所有更改。此类更改可解决新功能或消除已发现的缺点。您只能将默认托管权限版本应用于您的资源共享。

客户托管权限版本

您负责处理对客户托管权限的所有更改。您可以创建新的默认版本,将旧版本设置为默认版本,或者删除不再与任何资源共享关联的版本。一个客户托管权限最多可以有五个版本。

创建或更新资源共享时,只能附加指定托管权限的默认版本。有关更多信息,请参阅 将 Amazon 托管权限更新到较新版本