适用于 Amazon Organizations 的基于身份的策略示例 - Amazon Organizations
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

适用于 Amazon Organizations 的基于身份的策略示例

默认情况下,用户和角色没有创建或修改 Organizations 资源的权限。他们也无法使用 Amazon Web Services Management Console、Amazon Command Line Interface(Amazon CLI)或 Amazon API 执行任务。要授予用户对所需资源执行操作的权限,IAM 管理员可以创建 IAM 策略。管理员随后可以向角色添加 IAM 策略,用户可以代入角色。

要了解如何使用这些示例 JSON 策略文档创建基于 IAM 身份的策略,请参阅《IAM 用户指南》中的创建 IAM 策略(控制台)

有关 Organizations 定义的操作和资源类型的详细信息,包括每种资源类型的 ARN 格式,请参阅《服务参考指南》中的 Actions, resources, and condition keys for Amazon Organizations

策略最佳实践

基于身份的策略用于确定某个人是否可以创建、访问或删除您账户中的 Organizations 资源。这些操作可能会使 Amazon Web Services 账户产生成本。创建或编辑基于身份的策略时,请遵循以下指南和建议:

  • Amazon 托管策略及转向最低权限许可入门 – 要开始向用户和工作负载授予权限,请使用 Amazon 托管策略来为许多常见使用场景授予权限。您可以在 Amazon Web Services 账户 中找到这些策略。我们建议通过定义特定于您的使用场景的 Amazon 客户管理型策略来进一步减少权限。有关更多信息,请参阅《IAM 用户指南》中的 Amazon 托管策略工作职能的 Amazon 托管策略

  • 应用最低权限 – 在使用 IAM 策略设置权限时,请仅授予执行任务所需的权限。为此,您可以定义在特定条件下可以对特定资源执行的操作,也称为最低权限许可。有关使用 IAM 应用权限的更多信息,请参阅《IAM 用户指南》中的 IAM 中的策略和权限

  • 使用 IAM 策略中的条件进一步限制访问权限 – 您可以向策略添加条件来限制对操作和资源的访问。例如,您可以编写策略条件来指定必须使用 SSL 发送所有请求。如果通过特定(Amazon Web Services 服务例如 Amazon CloudFormation)使用服务操作,您还可以使用条件来授予对服务操作的访问权限。有关更多信息,请参阅《IAM 用户指南》中的 IAM JSON 策略元素:条件

  • 使用 IAM Access Analyzer 验证您的 IAM 策略,以确保权限的安全性和功能性 – IAM Access Analyzer 会验证新策略和现有策略,以确保策略符合 IAM 策略语言 (JSON) 和 IAM 最佳实践。IAM Access Analyzer 提供 100 多项策略检查和可操作的建议,以帮助您制定安全且功能性强的策略。有关更多信息,请参阅《IAM 用户指南》中的使用 IAM Access Analyzer 验证策略

  • 需要多重身份验证(MFA) – 如果您所处的场景要求您的 Amazon Web Services 账户 中有 IAM 用户或根用户,请启用 MFA 来提高安全性。若要在调用 API 操作时需要 MFA,请将 MFA 条件添加到您的策略中。有关更多信息,请参阅《IAM 用户指南》中的使用 MFA 保护 API 访问

有关 IAM 中的最佳实操的更多信息,请参阅《IAM 用户指南》中的 IAM 中的安全最佳实操

使用 Organizations 控制台

要访问 Amazon Organizations控制台,您必须拥有一组最低的权限。这些权限必须允许您列出和查看有关您的 Amazon Web Services 账户中 Organizations 资源的详细信息。如果创建比必需的最低权限更为严格的基于身份的策略,对于附加了该策略的实体(用户或角色),控制台将无法按预期正常运行。

对于只需要调用 Amazon CLI 或 Amazon API 的用户,无需为其提供最低控制台权限。相反,只允许访问与其尝试执行的 API 操作相匹配的操作。

为确保用户和角色仍可使用 Organizations 控制台,请同时将 Organizations AWSOrganizationsFullAccessAWSOrganizationsReadOnlyAccess Amazon 托管式策略附加到实体。有关更多信息,请参阅《IAM 用户指南》中的为用户添加权限

允许用户查看他们自己的权限

该示例说明了您如何创建策略,以允许 IAM 用户查看附加到其用户身份的内联和托管策略。此策略包括在控制台上完成此操作或者以编程方式使用 Amazon CLI 或 Amazon API 所需的权限。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ViewOwnUserInfo", "Effect": "Allow", "Action": [ "iam:GetUserPolicy", "iam:ListGroupsForUser", "iam:ListAttachedUserPolicies", "iam:ListUserPolicies", "iam:GetUser" ], "Resource": ["arn:aws:iam::*:user/${aws:username}"] }, { "Sid": "NavigateInConsole", "Effect": "Allow", "Action": [ "iam:GetGroupPolicy", "iam:GetPolicyVersion", "iam:GetPolicy", "iam:ListAttachedGroupPolicies", "iam:ListGroupPolicies", "iam:ListPolicyVersions", "iam:ListPolicies", "iam:ListUsers" ], "Resource": "*" } ] }

将全部管理员权限授予用户

您可以创建一个 IAM 策略,向组织中的 IAM 用户授予完全 Amazon Organizations 管理员权限。您可以使用 IAM 控制台中的 JSON 策略编辑器来执行此操作。

使用 JSON 策略编辑器创建策略
  1. 登录Amazon Web Services Management Console,然后通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/

  2. 在左侧的导航窗格中,选择策略

    如果这是您首次选择策略,则会显示欢迎访问托管式策略页面。选择开始使用

  3. 在页面的顶部,选择创建策略

  4. 策略编辑器部分,选择 JSON 选项。

  5. 输入以下 JSON 策略文档:

    { "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "organizations:*", "Resource": "*" } }
  6. 选择下一步

    注意

    您可以随时在可视化JSON 编辑器选项卡之间切换。不过,如果您进行更改或在可视化编辑器中选择下一步,IAM 可能会调整策略结构以针对可视化编辑器进行优化。有关更多信息,请参阅《IAM 用户指南》中的调整策略结构

  7. 查看并创建页面上,为您要创建的策略输入策略名称描述(可选)。查看此策略中定义的权限以查看策略授予的权限。

  8. 选择创建策略可保存新策略。

要了解有关创建 IAM 策略的更多信息,请参阅《IAM 用户指南》中的创建 IAM 策略

按操作授予有限访问权

如果只是授予有限权限而非完全权限,则可以创建一个策略,列出您打算在 IAM 权限策略的 Action 元素中允许的各个权限。如以下示例中所示,您可以使用通配符 (*) 字符来仅授予 Describe*List* 权限,这实际上提供对组织的只读访问权限。

注意

在服务控制策略 (SCP) 中,Action 元素中的通配符 (*) 字符只能由自身使用或用在字符串结尾处。它不能出现在字符串的开头或中间部分。因此,"servicename:action*" 是有效的,但 "servicename:*action""servicename:some*action" 在 SCP 中都是无效的。

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "organizations:Describe*", "organizations:List*" ], "Resource": "*" } }

有关 IAM 策略中可供分配的所有权限的列表,请参阅《服务授权参考》中的 Actions defined by Amazon Organizations

授予对特定资源的访问权限

除了限制对特定操作的访问权之外,您还可以限制对组织中特定实体的访问权。前面部分示例中的 Resource 元素均指定通配符(“*”),这意味着“操作可以访问的任意资源”。不过,您可以使用希望允许访问的特定实体的 Amazon 资源名称 (ARN) 替换 "*"。

示例:将权限授予单个 OU

以下策略中的第一条语句允许 IAM 用户对整个组织的读取访问权限,但第二条语句允许用户仅在单个指定的组织部门(OU)中执行 Amazon Organizations 管理操作。这不会扩展到任何子 OU。未授予账单访问权。请注意,这不会授予您对 OU 中的Amazon Web Services 账户的管理访问权。它仅授予对指定 OU 中的账户执行 Amazon Organizations 操作的权限:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "organizations:Describe*", "organizations:List*" ], "Resource": "*" }, { "Effect": "Allow", "Action": "organizations:*", "Resource": "arn:aws:organizations::<masterAccountId>:ou/o-<organizationId>/ou-<organizationalUnitId>" } ] }

您可以从 Amazon Organizations 控制台或调用 List* API 来获取 OU 和组织的 ID。您应用到此策略的用户或组可以在指定 OU 中直接包含的任何实体上执行任何操作("organizations:*")。OU 由 Amazon 资源名称 (ARN) 来标识。

有关各种资源的 ARN 的更多信息,请参阅《服务授权参考》中的 Resources types defined by Amazon Organizations

向有限服务委托人授予允许可信访问的功能

您可以使用策略语句的 Condition 元素对策略语句匹配的情况做进一步限制。

示例:授予对一个指定服务允许可信访问的权限

以下语句显示如何将允许可信访问的功能局限于您指定的哪些服务。如果用户尝试调用的 API 与用于 Amazon IAM Identity Center 的 API 拥有不同的服务委托人,则此策略不匹配并拒绝请求:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "organizations:EnableAWSServiceAccess", "Resource": "*", "Condition": { "StringEquals" : { "organizations:ServicePrincipal" : "sso.amazonaws.com" } } } ] }

有关各种资源的 ARN 的更多信息,请参阅《服务授权参考》中的 Resources types defined by Amazon Organizations