本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
为 Amazon Directory Service 使用基于身份的策略(IAM policy)
本主题提供了基于身份的策略的示例,在这些策略中,账户管理员可以向 IAM 身份(即:用户、组和角色)附加权限策略。
重要
我们建议您首先阅读以下介绍性主题,这些主题讲解了管理 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": "*", "Condition": { "StringEquals": { "iam:PassedToService": "cloudwatch.amazonaws.com" } } } ] }
策略包括以下内容:
-
第一条语句授予创建 Amazon Directory Service 目录的权限。Amazon Directory Service 在资源级别不支持此特定操作的权限。因此,该策略指定通配符 (*) 作为
Resource
值。 -
第二条语句授予针对特定 IAM 操作的权限。需要 IAM 操作的访问权限,这样Amazon Directory Service才能代表您读取和创建 IAM 角色。
Resource
值末尾的通配符 (*) 表示该语句允许任何 IAM 角色执行 IAM 操作的权限。要将此权限限制到特定角色,请使用特定角色名称替换资源 ARN 中的通配符 (*)。有关更多信息,请参阅 IAM 操作。 -
第三条语句向一组特定 Amazon EC2 资源授予权限,这些资源是创建、配置和销毁其目录所必需的。Amazon Directory Service
Resource
值末尾的通配符 (*) 表示该语句允许对任何 EC2 资源或子资源执行 EC2 操作的权限。要将此权限限制到特定角色,请使用特定资源或子资源替换资源 ARN 中的通配符 (*)。有关更多信息,请参阅 Amazon EC2 操作
该策略不指定 Principal
元素,因为在基于身份的策略中,您未指定获取权限的委托人。附加了策略的用户是隐式委托人。向 IAM 角色附加权限策略后,该角色的信任策略中标识的委托人将获取权限。
有关显示所有 Amazon Directory Service API 操作及其适用的资源的表,请参阅 Amazon Directory Service API 权限:操作、资源和条件参考。
使用 Amazon Directory Service 控制台所需的权限
要使用户可以使用 Amazon Directory Service 控制台,该用户必须拥有上面策略中列出的权限或是 Directory Service 完全访问角色或 Directory Service 只读角色所授予的权限,如适用于 Amazon Directory Service 的 Amazon 托管(预定义)策略中所述。
如果创建比必需的最低权限更为严格的 IAM policy,对于附加了该 IAM 策略的用户, 控制台将无法按预期正常运行。
适用于 Amazon Directory Service 的 Amazon 托管(预定义)策略
Amazon通过提供由创建和管理的独立 IAM policy来满足许多常用案例的要求。Amazon托管式策略可授予常用案例的必要权限,因此,您可以免去调查都需要哪些权限的工作。有关更多信息,请参阅《IAM 用户指南》中的 Amazon 托管式策略。
以下 Amazon 托管策略(可附加到您账户中的用户)特定于 Amazon Directory Service:
-
AWSDirectoryServiceReadOnlyAccess— 授予用户或群组对根Amazon账户的所有Amazon Directory Service资源、EC2 子网、EC2 网络接口和亚马逊Simple Notification Service (Amazon SNS) 主题和订阅的只读访问权限。有关更多信息,请参阅使用Amazon具有托管策略Amazon Directory Service:
-
AWSDirectoryServiceFullAccess— 向用户或群组授予以下权限:
-
对 Amazon Directory Service 的完全访问权限
-
访问需要使用的关键 Amazon EC2 服务Amazon Directory Service
-
能够列出Amazon SNS 主题
-
能够创建、管理和删除名称以 “DirectoryMonitoring” 开头的 Amazon SNS 主题
有关更多信息,请参阅使用Amazon具有托管策略Amazon Directory Service:
-
此外,还有其他适用于其他 IAM 角色的Amazon托管策略。这些策略分配给与您的 Amazon Directory Service 目录中的用户相关联的角色。这些用户需要这些策略才能访问其他Amazon资源,例如 Amazon EC2。有关更多信息,请参阅向用户和组授予访问权限Amazon资源:
还可创建自定义 IAM 策略来允许用户访问必需的 操作和资源。您可以将这些自定义策略附加到需要这些权限的 IAM 用户或组。
客户管理的策略示例
本节的用户策略示例介绍如何授予各 Amazon Directory Service 操作的权限。
注意
所有示例都使用美国西部 (俄勒冈) 区域 (us-west-2
) 并且包含虚构的账户 ID。
示例 1:允许用户对任何 DescribeAmazon Directory Service 操作
以下权限策略对用户授予权限以运行以 Describe
开头的所有操作。这些操作显示有关 Amazon Directory Service 资源(如目录或快照)的信息。请注意,Resource
元素中的通配符 (*) 表示可对该账户拥有的所有 Amazon 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 策略中使用标签
可以在用于大多数 Amazon 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 策略中的条件上下文键和值仅适用于能够标记的资源的标识符是必需参数的那些 Amazon Directory Service 操作。
在 IAM 用户指南中,使用标签控制访问权限提供了有关使用标签的更多信息。该指南的 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) 和 Amazon 服务命名空间。
以下 Amazon Directory Service API 操作支持基于标记的资源级权限: