使用 AWS Organizations 管理组织的访问权限
所有AWS资源(包括组织中的根、OU、账户和策略)都归AWS 账户所有,创建和访问资源的权限由权限策略进行管理。对于一个组织,其管理账户拥有所有资源。账户管理员可通过将权限策略附加到 IAM 身份(用户、组和角色)来控制对 AWS 资源的访问。
注意
账户管理员 (或管理员用户) 是具有管理员权限的用户。有关更多信息,请参阅《IAM 用户指南》中的 IAM 安全最佳实践。
在授予权限时,您要决定谁获得权限,获得对哪些资源的权限,以及您允许对这些资源执行的具体操作。
默认情况下,IAM 用户、组和角色没有权限。作为组织管理账户的管理员,您可以执行管理任务或将管理员权限委派给管理账户中的其他 IAM 用户或角色。为此,您可以将 IAM 权限策略附加到 IAM 用户、组或角色。默认情况下,用户没有权限;这有时称为隐式拒绝。该策略将使用显式允许 覆盖隐式拒绝,这将指定用户可以执行哪些操作以及可对哪些资源执行这些操作。如果将权限授予了角色,则组织中其他账户的用户可以代入该角色。
AWS Organizations 资源和操作
此部分讨论如何将 AWS Organizations 概念映射到其 IAM 等效概念。
资源
在 AWS Organizations 中,您可以控制对以下资源的访问:
-
构成组织层次结构的根和 OU
-
组织的成员账户
-
您附加到组织中实体的账户
-
用于更改组织状态的握手
其中,每种资源均有一个与之关联的唯一 Amazon 资源名称 (ARN)。您可以通过在 IAM 权限策略的 Resource
元素中指定资源的 ARN 来控制对资源的访问。有关 AWS Organizations 中所用资源的 ARN 格式的完整列表,请参阅《服务授权指南》中的 Resources types defined by AWS Organizations。
操作
AWS 提供了一组操作来处理组织中的资源。利用这些操作,您可以对资源进行创建、列出、修改、访问其内容以及删除。可在 IAM policy 的 Action
元素中引用大多数操作来控制可使用操作的人员。有关可在 IAM 策略中用作权限的 AWS Organizations 操作列表,请参阅《服务授权参考》中的 Actions defined by organizations。
在将 Action
和 Resource
组合到一个权限策略 Statement
中后,可以准确控制可对哪些资源执行该组特定操作。
条件键
AWS 提供可供您进行查询以便对某些操作进行更精细控制的条件键。您可以在 IAM policy 的 Condition
元素中参考这些条件密钥,以指定将语句视为匹配必须满足的其他条件。
以下条件键专门用 AWS Organizations:
-
aws:PrincipalOrgID
– 简化在基于资源的策略中指定Principal
元素的过程。此全局键提供了列出组织中的所有AWS 账户的所有账户 ID 的替代方法。您可以在 元素中指定组织 IDCondition
,而不是列出作为组织成员的所有账户。注意
此全局条件也适用于组织的管理账户。
有关更多信息,请参阅《IAM 用户指南》中的AWS全局条件上下文键中对
PrincipalOrgID
的说明。 -
aws:PrincipalOrgPaths
– 使用此条件键可以匹配特定组织根、OU 或其子项的成员。当发出请求的委托人(根用户、IAM 用户或角色)位于指定的组织路径中时,aws:PrincipalOrgPaths
条件键返回 true。路径是 AWS Organizations 实体结构的文本表示形式。有关路径的更多信息,请参阅《IAM 用户指南》中的了解 AWS Organizations 实体路径。有关使用此条件键的更多信息,请参阅《IAM 用户指南》中的 aws:PrincipalOrgPaths。例如,以下条件元素匹配同一组织中两个 OU 之一的成员。
"Condition": { "ForAnyValue:StringLike": { "aws:PrincipalOrgPaths": [ "o-a1b2c3d4e5/r-f6g7h8i9j0example/ou-def0-awsbbbbb/", "o-a1b2c3d4e5/r-f6g7h8i9j0example/ou-jkl0-awsddddd/" ] } }
-
organizations:PolicyType
– 您可以使用此条件键限制与 Organizations 策略相关的 API 操作以仅处理指定类型的 Organizations 策略。您可以将此条件键应用于任何包含与 Organizations 策略交互的操作的策略语句。可以将以下值与此条件键结合使用:
-
SERVICE_CONTROL_POLICY
-
BACKUP_POLICY
-
TAG_POLICY
-
CHATBOT_POLICY
-
AISERVICES_OPT_OUT_POLICY
例如,以下示例策略允许用户执行任何 Organizations 操作。但是,如果用户执行采用策略参数的操作,则仅当指定的策略是标记策略时才允许该操作。如果用户指定任何其他类型的策略,则该操作将失败。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "IfTaggingAPIThenAllowOnOnlyTaggingPolicies", "Effect": "Allow", "Action": "organizations:*", "Resource": "*", "Condition": { "StringLikeIfExists": { "organizations:PolicyType": [ "TAG_POLICY" ] } } } ] }
-
-
organizations:ServicePrincipal
– 如果您使用 EnableAWSServiceAccess 或 DisableAWSServiceAccess 操作来对其他AWS服务启用或禁用信任访问,则可用作条件。您可以使用organizations:ServicePrincipal
来将这些操作发出的请求限制为已批准的服务委托人名称列表。例如,下面的策略允许用户在启用和禁用对 AWS Organizations 的可信访问时仅指定 AWS Firewall Manager。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowOnlyAWSFirewallIntegration", "Effect": "Allow", "Action": [ "organizations:EnableAWSServiceAccess", "organizations:DisableAWSServiceAccess" ], "Resource": "*", "Condition": { "StringLikeIfExists": { "organizations:ServicePrincipal": [ "fms.amazonaws.com" ] } } } ] }
有关所有可以在 IAM 策略中用作权限的 AWS Organizations 特定条件键列表,请参阅《IAM 用户指南》中的 AWS Organizations 的条件上下文键有关所有可以在 IAM 策略中。
了解资源所有权
AWS 账户对在该账户下创建的资源具有所有权,而无论创建资源的人员是谁。具体而言,资源所有者是对资源创建请求进行身份验证的主体实体(即根用户、IAM 用户或 IAM 角色)的 AWS 账户。对于组织,始终为管理账户。您无法从成员账户调用大多数创建或访问组织资源的操作。以下示例说明了它的工作原理:
-
如果您使用管理账户的根账户凭证创建 OU,您的管理账户即为该资源的拥有者。(在 AWS Organizations 中,该资源为 OU。)
-
如果您在管理账户中创建 IAM 用户并向其授予创建 OU 的权限,则该用户可以创建 OU。但是,管理账户(即该用户所属的账户)拥有 OU 资源。
-
如果您在管理账户中创建的 IAM 角色具有创建 OU 的权限,则能够代入该角色的任何人都可以创建 OU。管理账户(即该角色而非代入用户所属的账户)拥有 OU 资源。
管理对 资源的访问
权限策略规定谁可以访问哪些内容。下一节介绍创建权限策略时的可用选项。
注意
本节讨论如何在 AWS Organizations 范围内使用 IAM。这里不提供有关 IAM 服务的详细信息。有关完整的 IAM 文档,请参阅 IAM 用户指南。有关 IAM 策略语法和描述的信息,请参阅《IAM 用户指南》中的 IAM JSON 策略参考。
附加到 IAM 身份的策略称作基于身份的策略 (IAM policy)。附加到资源的策略称作基于资源的策略。AWS Organizations 仅支持基于身份的策略 (IAM policy)。
基于身份的权限策略 (IAM policy)
您可以将策略附加到 IAM 身份以允许这些身份对AWS资源执行操作。例如,您可以执行以下操作:
-
将权限策略附加到您的账户中的用户或组 – 要向用户授予创建 AWS Organizations 资源(例如,服务控制策略 (SCP) 或 OU)的权限,您可以将权限策略附加到用户或用户所属的组。用户或组必须位于组织的管理账户中。
-
向角色附加权限策略(授予跨账户权限) – 您可以向 IAM 角色附加基于身份的权限策略以向组织授予跨账户访问权。例如,管理账户中的管理员可以创建一个角色来向成员账户中的用户授予跨账户权限,如下所示:
-
管理账户管理员创建一个 IAM 角色,并向该角色附加一个权限策略以授予对组织资源的权限。
-
管理账户管理员向将成员账户 ID 标识为能够担任该角色的
Principal
的角色附加信任策略。 -
随后,成员账户管理员可以委派权限以将角色代入成员账户中的任何用户。通过执行此操作,成员账户中的用户将能够在管理账户和组织中创建和访问资源。如果您需要向 AWS 服务授予代入该角色的权限,则信任策略中的委托人也可以是 AWS 服务委托人。
有关使用 IAM 委派权限的更多信息,请参阅《IAM 用户指南》中的访问权限管理。
-
以下是允许用户在您的组织中执行 CreateAccount
操作的策略示例。
{ "Version":"2012-10-17", "Statement":[ { "Sid":"Stmt1OrgPermissions", "Effect":"Allow", "Action":[ "organizations:CreateAccount" ], "Resource":"*" } ] }
您还可以在策略的 Resource
元素中提供部分 ARN 以指示资源类型。
{ "Version":"2012-10-17", "Statement":[ { "Sid":"AllowCreatingAccountsOnResource", "Effect":"Allow", "Action":"organizations:CreateAccount", "Resource":"arn:aws:organizations::*:account/*" } ] }
您也可以拒绝创建不包含所创建账户的特定标签的账户。
{ "Version":"2012-10-17", "Statement":[ { "Sid":"DenyCreatingAccountsOnResourceBasedOnTag", "Effect":"Deny", "Action":"organizations:CreateAccount", "Resource":"*", "Condition":{ "StringEquals":{ "aws:ResourceTag/key":"value" } } } ] }
有关用户、组、角色和权限的更多信息,请参阅《IAM 用户指南》中的 IAM 身份(用户、用户组和角色)。
基于资源的策略
一些服务(如 Amazon S3)支持基于资源的权限策略。例如,您可以将策略附加到 Amazon S3 存储桶以管理对该存储桶的访问权限。AWS Organizations 目前不支持基于资源的策略。
指定策略元素:操作、条件、效果和资源
对于每项 AWS Organizations 资源,该服务定义一组 API 操作或可通过某种方式与该资源交互或操作该资源的操作。为授予这些操作的权限,AWS Organizations 定义了一组您可以在策略中指定的操作。例如,对于 OU 资源,AWS Organizations 定义了以下操作:
-
AttachPolicy
和DetachPolicy
-
CreateOrganizationalUnit
和DeleteOrganizationalUnit
-
ListOrganizationalUnits
和DescribeOrganizationalUnit
在有些情况下,执行 API 操作可能需要多个操作的权限,并且可能需要多个资源的权限。
以下是可在 IAM 权限策略中使用的最基本元素:
-
Action – 使用此关键字标识要允许或拒绝的操作。例如,根据指定的
Effect
,organizations:CreateAccount
允许或拒绝执行 AWS OrganizationsCreateAccount
操作的用户权限。有关更多信息,请参阅《IAM 用户指南》中的 IAM JSON 策略元素:操作。 -
Resource – 使用此关键字指定策略语句适用于的资源的 ARN。有关更多信息,请参阅《IAM 用户指南》中的 IAM JSON 策略元素:资源。
-
Condition – 使用此关键字指定要应用策略语句必须满足的条件。
Condition
通常指定为使策略匹配必须存在的额外情况。有关更多信息,请参阅《IAM 用户指南》中的 IAM JSON 策略元素:条件。 -
Effect – 使用此关键字指定策略语句是允许还是拒绝对资源进行的操作。如果没有明确授予 (或允许) 对资源的访问权,则隐式拒绝访问。您也可以明确拒绝对资源的访问权,这样做可确保用户无法对指定资源执行指定操作,即使其他策略授予了访问权也是如此。有关更多信息,请参阅《IAM 用户指南》https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_effect.html中的 IAM JSON 策略元素:影响。
-
Principal – 在基于身份的策略 (IAM policy) 中,附加了策略的用户会自动成为隐式委托人。对于基于资源的策略,您可以指定要接收权限的用户、账户、服务或其他实体(仅适用于基于资源的策略)。AWS Organizations 目前仅支持基于身份的策略,而不是基于资源的策略。
有关 IAM 策略语法和描述的信息,请参阅《IAM 用户指南》中的 IAM JSON 策略参考。