AWS Directory Service で ID ベースのポリシー (IAM ポリシー) を使用する - AWS Directory Service

AWS Directory Service で ID ベースのポリシー (IAM ポリシー) を使用する

このトピックでは、アカウント管理者が IAM ID (ユーザー、グループ、ロール) へのアクセス許可ポリシーをアタッチする、ID ベースのポリシーの例を示します。

重要

初めに、AWS Directory Service リソースへのアクセスを管理するための基本概念と使用可能なオプションについて説明する概要トピックをお読みになることをお勧めします。詳細については、「AWS 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" } } } ] }

ポリシーには次のものが含まれています。

  • 最初のステートメントでは、AWS Directory Service ディレクトリを作成するアクセス許可を付与しています。AWS Directory Service は、この特定のアクションに対するリソースレベルでのアクセス許可をサポートしていません。したがって、ポリシーでは Resource の値としてワイルドカード文字 (*) を指定しています。

  • 2 番目のステートメントは、特定の IAM アクションに対するアクセス許可が付与されます。IAM アクションへのアクセスは、AWS Directory Service がユーザーに代わって IAM ロールの読み取りと作成を行うために必要です。Resource 値の末尾のワイルドカード文字 (*) は、このステートメントで任意の IAM ロールに対して IAM アクションを実行するアクセス許可が付与されることを意味します。このアクセス許可を特定のロールに制限するには、リソース ARN 内のワイルドカード文字 (*) を特定のロール名に置き換えます。詳細については、「IAM のアクション」を参照してください。

  • 3 番目のステートメントは、AWS Directory Service がそのディレクトリを作成、設定、破棄するために必要な Amazon EC2 リソースの特定のセットへのアクセス許可を付与します。Resource 値の末尾のワイルドカード文字 (*) は、このステートメントで任意の EC2 リソースおよびサブリソースに対して EC2 アクションを実行するアクセス許可を付与することを意味します。このアクセス許可を特定のロールに制限するには、リソース ARN 内のワイルドカード文字 (*) を特定のリソースまたはサブリソースに置き換えます。詳細については、「Amazon EC2 のアクション」を参照してください。

ID ベースのポリシーでアクセス許可を得るプリンシパルを指定していないため、ポリシーでは Principal 要素を指定していません。ユーザーにポリシーをアタッチすると、そのユーザーが暗黙のプリンシパルになります。IAM ロールにアクセス許可ポリシーをアタッチすると、ロールの信頼ポリシーで識別されたプリンシパルがアクセス許可を得ることになります。

すべての AWS Directory Service API アクションとそれらが適用されるリソースの表については、「AWS Directory Service API アクセス許可: アクション、リソース、条件リファレンス」を参照してください。

AWS Directory Service コンソールの使用に必要なアクセス許可

AWS Directory Service コンソールを使用して作業するユーザーの場合、そのユーザーは、上記のポリシーに指定されたアクセス許可を持っているか、「AWS Directory Service 用の AWS 管理 (事前定義) ポリシー」で説明されている Directory Service のフルアクセスロールまたは読み取り専用ロールによって付与されるアクセス許可を持っている必要があります。

これらの最小限必要なアクセス許可よりも制限された IAM ポリシーを作成している場合、その IAM ポリシーを使用するユーザーに対してコンソールは意図したとおりには機能しません。

AWS Directory Service 用の AWS 管理 (事前定義) ポリシー

AWS は、AWS によって作成され管理されるスタンドアロンの IAM ポリシーを提供することで、多くの一般的ユースケースに対応します。マネージドポリシーは、一般的ユースケースに必要な許可を付与することで、どの許可が必要なのかをユーザーが調査する必要をなくすることができます。詳細については、「IAM ユーザーガイド」の「AWS 管理ポリシー」を参照してください。

以下の AWS 管理ポリシーはアカウントのユーザーにアタッチできます。これらは AWS Directory Service に固有です。

  • AWSDirectoryServiceReadOnlyAccess – ユーザーまたはグループに対して、ルート AWS アカウントのすべての AWS Directory Service リソース、EC2 サブネット、EC2 ネットワークインターフェイス、および Amazon Simple Notification Service (Amazon SNS) トピックとサブスクリプションへの読み取り専用アクセスを許可します。詳細については、「AWS Directory Service での AWS 管理ポリシーの使用」を参照してください。

  • AWSDirectoryServiceFullAccess – ユーザーまたはグループに以下を付与します。

    • AWS Directory Service へのフルアクセス

    • AWS Directory Service の使用に必要な主要な Amazon EC2 サービスへのアクセス

    • Amazon SNS トピックを一覧表示する機能

    • 「DirectoryMonitoring」で始まる名前の Amazon SNS トピックを作成、管理、削除する機能

    詳細については、「AWS Directory Service での AWS 管理ポリシーの使用」を参照してください。

また、他の IAM ロールでの使用に適している他の AWS 管理ポリシーもあります。これらのポリシーは、AWS Directory Service ディレクトリ内のユーザーに関連付けられているロールに割り当てられます。これらのポリシーは、それらのユーザーが Amazon EC2 などの他の AWS リソースにアクセスするために必要です。詳細については、「ユーザーおよびグループに AWS リソースへのアクセス権限を付与する」を参照してください。

また、ユーザーが必要な API アクションおよびリソースにアクセスできるようにするカスタム IAM ポリシーも作成できます。これらのカスタムポリシーは、それらのアクセス許可が必要な 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 を使用します。

  • タグが許可されているリソースを作成または変更する API リクエストを作成する場合に、特定のタグを使用する (または使用しない) ことを要求するには、aws:ResourceTag/tag-key: tag-value を使用します。

  • タグが許可されているリソースを作成または変更する API リクエストを作成する場合に、特定の一連のタグキーを使用する (または使用しない) ことを要求するには、aws:TagKeys: [tag-key, ...] を使用します。

注記

IAM ポリシーの条件コンテキストのキーと値は、タグ付け可能なリソースの識別子が必須パラメータである AWS Directory Service アクションにのみ適用されます。

IAM ユーザーガイド」の「タグを使用したアクセスの制御」には、タグの使用に関する追加情報が記載されています。このガイドの「IAM JSON ポリシーリファレンス」 セクションには、IAM での JSON ポリシーの要素、変数、および評価ロジックの構文、説明、および例が詳細に記載されています。

次のタグポリシーの例では、タグとキーのペア "fooKey":"fooValue" が含まれている限り、ds の呼び出しはすべて許可されます。

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

次のリソースポリシーの例では、リソースにディレクトリ ID 「d-1234567890」が含まれている限り、ds の呼び出しはすべて許可されます。

{ "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 オペレーションのリストでは、タグベースのリソースレベルのアクセス許可がサポートされています。