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

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

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

本主题提供基于身份的策略示例,在这些示例中,账户管理员可以向 IAM 身份(用户、组和角色)附加权限策略。这些示例演示了中的 IAM 策略 Amazon Directory Service。您应该修改和创建自己的策略以适应自己的需求和环境。

重要

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

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

下面介绍权限策略示例。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowDsEc2IamGetRole", "Effect": "Allow", "Action": [ "ds:CreateDirectory", "ec2:RevokeSecurityGroupIngress", "ec2:CreateNetworkInterface", "ec2:AuthorizeSecurityGroupEgress", "ec2:AuthorizeSecurityGroupIngress", "ec2:DescribeNetworkInterfaces", "ec2:DescribeVpcs", "ec2:CreateSecurityGroup", "ec2:RevokeSecurityGroupEgress", "ec2:DeleteSecurityGroup", "ec2:DeleteNetworkInterface", "ec2:DescribeSubnets", "iam:GetRole" ], "Resource": "*" }, { "Sid": "WarningAllowsCreatingRolesWithDirSvcPrefix", "Effect": "Allow", "Action": [ "iam:CreateRole", "iam:PutRolePolicy" ], "Resource": "arn:aws:iam::111122223333:role/DirSvc*" }, { "Sid": "AllowPassRole", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::111122223333:role/Your-Role-Name", "Condition": { "StringEquals": { "iam:PassedToService": "cloudwatch.amazonaws.com" } } } ] }

策略中的三条语句授予权限,如下所示:

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

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

  • 第三条语句授予针对一组特 EC2 定 Amazon 资源的权限,创建、配置和销毁其目录需要这些权限。 Amazon Directory Service 将角色 ARN 替换为您的角色。有关更多信息,请参阅 Amazon EC2 操作

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

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

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

要使用 Amazon Directory Service 控制台,该用户必须具有上述策略中列出的权限,或者拥有目录服务完全访问角色或目录服务只读角色所授予的权限,如中所述Amazon 的托管(预定义)策略 Amazon Directory Service

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

Amazon 的托管(预定义)策略 Amazon Directory Service

Amazon 通过提供由创建和管理的预定义或托管 IAM 策略来满足许多常见用例的要求 Amazon。托管策略授予常见用例的必要权限,从而帮助您决定所需的权限。有关更多信息,请参阅 Amazon 的托管策略 Amazon Directory Service

客户管理型策略示例

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

注意

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

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

以下权限策略授予用户运行所有操作的权限,这些操作以 Amazon 托管 Microsoft AD 开头,目录 ID d-1234567890 位于中 Amazon Web Services 账户 111122223333Describe这些操作显示有关 Amazon Directory Service 资源(如目录或快照)的信息。请务必将 Amazon Web Services 区域 和账号更改为您要使用的地区以及您的账号。

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":"ds:Describe*", "Resource": "arn:aws:ds:us-west-2:111122223333:directory/d-1234567890" } ] }

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

以下权限策略授予权限以允许用户创建目录和所有其他相关资源 (如快照和信任)。为此,还需要获得某些Amazon EC2 服务的权限。

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

在 IAM 策略中使用标签

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

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

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

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

注意

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

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

只要使用以下标签,以下标签策略就允许创建 Amazon Directory Service 目录:

  • 环境:生产

  • 所有者:基础设施小组

  • 成本中心:1234

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ds:CreateDirectory" ], "Resource": "*", "Condition": { "StringEquals": { "aws:RequestTag/Environment": "Production", "aws:RequestTag/Owner": "Infrastructure-Team", "aws:RequestTag/CostCenter": "12345" } } } ] }

只要使用以下标签,以下标签策略就允许更新和删除 Amazon Directory Service 目录:

  • 项目:Atlas

  • 所属部门:工程部

  • 环境:暂存

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ds:DeleteDirectory", "ds:UpdateDirectory" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/Project": "Atlas", "aws:ResourceTag/Department": "Engineering", "aws:ResourceTag/Environment": "Staging" } } } ] }

Amazon Directory Service 如果资源具有以下标签之一,则以下标签策略拒绝对资源进行标记:

  • 生产

  • 安全性

  • 机密信息

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "ds:AddTagsToResource" ], "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:TagKeys": ["Production", "Security", "Confidential"] } } } ] }

有关更多信息 ARNs,请参阅 Amazon 资源名称 (ARNs) 和 Amazon 服务命名空间

以下 Amazon Directory Service API 操作列表支持基于标签的资源级权限: