AWS Directory Service
管理指南 (版本 1.0)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

为 AWS Directory Service 使用基于身份的策略(IAM 策略)

本主题提供了基于身份的策略的示例,在这些策略中,账户管理员可以向 IAM 身份(即:用户、组和角色)附加权限策略。

重要

我们建议您首先阅读以下介绍性主题,这些主题讲解了管理 AWS Directory Service 资源访问的基本概念和选项。有关更多信息,请参阅管理您的 AWS Directory Service 资源的访问权限概述

本主题的各个部分涵盖以下内容:

下面介绍权限策略示例。

{ "Version" : "2012-10-17", "Statement" : [ { "Action" : [ "ds:CreateDirectory" ], "Effect" : "Allow", "Resource" : "*" }, { "Action" : [ "iam:PassRole", "iam:GetRole", "iam:CreateRole", "iam:PutRolePolicy" ], "Effect" : "Allow", "Resource" : "*" }, { "Action" : [ "ec2:DescribeSubnets", "ec2:DescribeVpcs", "ec2:CreateSecurityGroup", "ec2:DeleteSecurityGroup", "ec2:CreateNetworkInterface", "ec2:DescribeNetworkInterfaces", "ec2:DeleteNetworkInterface", "ec2:AuthorizeSecurityGroupIngress", "ec2:AuthorizeSecurityGroupEgress", "ec2:RevokeSecurityGroupIngress", "ec2:RevokeSecurityGroupEgress" ], "Effect" : "Allow", "Resource" : "*" } ] }

策略包括以下内容:

  • 第一条语句授予创建 AWS Directory Service 目录的权限。AWS Directory Service 在资源级别不支持此特定操作的权限。因此,该策略指定通配符 (*) 作为 Resource 值。

  • 第二条语句授予针对特定 IAM 操作的权限。需要 IAM 操作的访问权限,以便 AWS Directory Service 可以代表您读取和创建 IAM 角色。Resource 值末尾的通配符 (*) 表示该语句允许任何 IAM 角色执行 IAM 操作的权限。要将此权限限制到特定角色,请使用特定角色名称替换资源 ARN 中的通配符 (*)。有关更多信息,请参阅 IAM 操作

  • 第三条语句授予针对一组特定 Amazon EC2 资源的权限,AWS Directory Service 创建、配置和销毁其目录需要这些权限。Resource 值末尾的通配符 (*) 表示该语句允许对任何 EC2 资源或子资源执行 EC2 操作的权限。要将此权限限制到特定角色,请使用特定资源或子资源替换资源 ARN 中的通配符 (*)。有关更多信息,请参阅 EC2 操作

该策略不指定 Principal 元素,因为在基于身份的策略中,您未指定获取权限的委托人。附加了策略的用户是隐式委托人。向 IAM 角色挂载权限策略后,该角色的信任策略中标识的委托人将获取权限。

有关显示所有 AWS Directory Service API 操作及其适用的资源的表,请参阅 AWS Directory Service API 权限:操作、资源和条件参考

使用 AWS Directory Service 控制台所需要的权限

要使用户可以使用 AWS Directory Service 控制台,该用户必须拥有上面策略中列出的权限或是 Directory Service 完全访问角色或 Directory Service 只读角色所授予的权限,如适用于 AWS Directory Service 的 AWS 托管(预定义)策略中所述。

如果创建比必需的最低权限更为严格的 IAM 策略,对于附加了该 IAM 策略的用户,控制台将无法按预期正常运行。

适用于 AWS Directory Service 的 AWS 托管(预定义)策略

AWS 通过提供由 AWS 创建和管理的独立 IAM 策略来解决很多常用案例。托管策略可授予常用案例的必要权限,因此,您可以免去调查都需要哪些权限的工作。有关更多信息,请参阅 IAM 用户指南 中的 AWS 托管策略

以下 AWS 托管策略(您可以将它们挂载到自己账户中的用户)是特定于 AWS Directory Service 的:

  • AWSDirectoryServiceReadOnlyAccess – 向用户或组授予对所有 AWS Directory Service 资源、EC2 子网、EC2 网络接口以及 AWS 根账户的 AWS SNS 主题和订阅的只读访问权限。有关更多信息,请参阅将 AWS 托管策略与 AWS Directory Service 结合使用

  • AWSDirectoryServiceFullAccess – 向用户或组授予以下权限:

    • 对 AWS Directory Service 的完全访问权限

    • 对使用 AWS Directory Service 所需的关键 Amazon EC2 服务的访问权限

    • 能够列出 Amazon Simple Notification Service 主题

    • 能够创建、管理和删除名称以“DirectoryMonitoring”开头的 Amazon Simple Notification Service 主题

    有关更多信息,请参阅将 AWS 托管策略与 AWS Directory Service 结合使用

此外,还有其他 AWS 托管策略适用于其他 IAM 角色。这些策略会分配给与 AWS Directory Service 目录中的用户关联的角色;而这些用户想要有权访问其他 AWS 资源(如 Amazon EC2),就需要这些策略。有关更多信息,请参阅授予用户和组对 AWS 资源的访问权限

您还可创建自定义 IAM 策略来允许用户访问必需的 API 操作和资源。您可以将这些自定义策略附加到需要这些权限的 IAM 用户或组。

客户托管策略示例

本节的用户策略示例介绍如何授予各 AWS Directory Service 操作的权限。

注意

所有示例都使用美国西部 (俄勒冈) 区域 (us-west-2) 并且包含虚构的账户 ID。

示例 1:允许用户对任何 AWS Directory Service 资源执行任何 Describe 操作

以下权限策略对用户授予权限以运行以 Describe 开头的所有操作。这些操作显示有关 AWS Directory Service 资源(如目录或快照)的信息。请注意,Resource 元素中的通配符 (*) 表示可对该账户拥有的所有 AWS Directory Service 资源执行操作。

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

示例 2:允许用户创建目录

以下权限策略授予权限以允许用户创建目录和所有其他相关资源 (如快照和信任)。要执行此操作,还需要针对特定 Amazon EC2 服务的权限。

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action": [ "ds:Create*", "ec2:AuthorizeSecurityGroupEgress", "ec2:AuthorizeSecurityGroupIngress", "ec2:CreateNetworkInterface", "ec2:CreateSecurityGroup", "ec2:DeleteNetworkInterface", "ec2:DeleteSecurityGroup", "ec2:DescribeNetworkInterfaces", "ec2:DescribeSubnets", "ec2:DescribeVpcs", "ec2:RevokeSecurityGroupEgress", "ec2:RevokeSecurityGroupIngress" ], "Resource":"*" ] } ] }

在 IAM 策略中使用标签

可以在用于大多数 AWS Directory Service API 操作的 IAM 策略中应用基于标签的资源级权限。这可让您更好地控制用户可创建、修改或使用哪些资源。在 IAM 策略中将 Condition 元素(也称作 Condition 块)与以下条件上下文键和值结合使用来基于资源标签控制用户访问(权限):

  • 使用 aws:ResourceTag/tag-key: tag-value 可允许或拒绝对带特定标签的资源的用户操作。

  • 使用 aws:ResourceTag/tag-key: tag-value 可要求在发出创建或修改允许标签的资源的 API 请求时使用(或不使用)特定标签。

  • 使用 aws:TagKeys: [tag-key, ...] 可要求在发出创建或修改允许标签的资源的 API 请求时使用(或不使用)一组特定标签键。

注意

IAM 策略中的条件上下文键和值仅适用于能够标记的资源的标识符是必需参数的那些 AWS Directory Service 操作。

AWS Identity and Access Management 用户指南 中的使用标签控制访问具有有关使用标签的其他信息。该指南的 IAM JSON 策略参考一节包含 IAM 中的 JSON 策略的元素、变量和评估逻辑的详细语法、描述和示例。

以下标签策略示例允许所有 ds 调用,前提是它包含标签键/对“fooKey”或“fooValue”。

{ "Version":"2012-10-17", "Statement":[ { "Sid":"VisualEditor0", "Effect":"Allow", "Action":[ "ds:*" ], "Resource":"*", "Condition":{ "StringEquals":{ "aws:ResourceTag/fooKey":"fooValue" } } }, { "Effect":"Allow", "Action":[ "ec2:*" ], "Resource":"*" } ] }

以下标签策略示例允许所有 ds 调用,前提是资源包含目录 ID“d-1234567890”。

{ "Version":"2012-10-17", "Statement":[ { "Sid":"VisualEditor0", "Effect":"Allow", "Action":[ "ds:*" ], "Resource":"arn:aws:ds:us-east-1:123456789012:directory/d-1234567890" }, { "Effect":"Allow", "Action":[ "ec2:*" ], "Resource":"*" } ] }

有关 ARN 的详细信息,请参阅 Amazon 资源名称 (ARN) 和 AWS 服务命名空间

以下 AWS Directory Service API 列表支持基于选项卡的资源级权限: