メニュー
Amazon Elastic Container Service
開発者ガイド (API バージョン 2014-11-13)

ポリシーの構造

次のトピックでは、IAM ポリシーの簡単な構造について説明します。

ポリシー構文

IAM ポリシーは 1 つ以上のステートメントで構成される JSON ドキュメントです。各ステートメントは次のように構成されます。

{ "Statement":[{ "Effect":"effect", "Action":"action", "Resource":"arn", "Condition":{ "condition":{ "key":"value" } } } ] }

ステートメントはさまざまなエレメントで構成されます。

  • [Effect]: effect は、Allow または Deny にすることができます。デフォルトでは、IAM ユーザーはリソースおよび API アクションを使用するアクセス許可がないため、リクエストはすべて拒否されます。明示的な許可はデフォルトに優先します。明示的な拒否はすべての許可に優先します。

  • [Action]: action は、アクセス許可を付与または拒否する対象とする、特定の API アクションです。action の指定については、Amazon ECS のアクション を参照してください。

  • [Resource]: アクションによって影響を及ぼされるリソースです。Amazon ECS API アクションの中には、アクションによって作成/変更できるリソースをポリシー内で特定できるものもあります。ステートメント内でリソースを指定するには、Amazon リソースネーム (ARN) を使用する必要があります。arn 値の指定については、Amazon ECS 用の Amazon リソースネーム を参照してください。どの API がどの ARN をサポートするかについては、Amazon ECS API アクションでサポートされるリソースレベルのアクセス許可 を参照してください。API アクションが ARN をサポートしていない場合は、* ワイルドカードを使用すると、アクションがすべてのリソースに影響するように指定できます。

  • [Condition]: condition はオプションです。ポリシーの発効条件を指定するために使用します。Amazon ECS の条件を指定する方法については、Amazon ECS の条件キー を参照してください。

Amazon ECS の IAM ポリシーステートメント例については、Amazon ECS IAM ポリシーの作成 を参照してください。

Amazon ECS のアクション

IAM ポリシーステートメントで、IAM をサポートするすべてのサービスから任意の API アクションを指定できます。Amazon ECS の場合、API アクションの名前に次のプレフィックスを使用します: ecs:。例: ecs:RunTask および ecs:CreateCluster

単一のステートメントに複数のアクションを指定するには、次のようにコンマで区切ります。

"Action": ["ecs:action1", "ecs:action2"]

ワイルドカードを使用して複数のアクションを指定することもできます。たとえば、以下のように「Describe」という単語で始まる名前のすべてのアクションを指定できます。

"Action": "ecs:Describe*"

Amazon ECS API アクションをすべて指定するには、* ワイルドカードを以下のように使用します。

"Action": "ecs:*"

Amazon ECS アクションのリストについては、Amazon Elastic Container Service API Reference の「アクション」を参照してください。

Amazon ECS 用の Amazon リソースネーム

各 IAM ポリシーステートメントは、ARN を使用して指定したリソースに適用されます。

重要

現時点では、すべての API アクションが個々の ARN をサポートしているわけではありません。今後、Amazon ECS リソースに対する API アクションおよび ARN のサポートを追加していきます。どの Amazon ECS API アクションでどの ARN を使用できるかについて、また各 ARN でサポートされる条件キーについては、Amazon ECS API アクションでサポートされるリソースレベルのアクセス許可 を参照してください。

ARN には以下の一般的な構文があります。

arn:aws:[service]:[region]:[account]:resourceType/resourcePath
service

サービス (例: ecs)。

リージョン

リソースのリージョン (例: us-east-1)。

アカウント

ハイフンなしの AWS アカウント ID (例: 123456789012)。

resourceType

リソースの種類 (例: instance)。

resourcePath

リソースを識別するパス。パスにワイルドカードの * が使用できます。

たとえば、以下の要領で ARN を使用して、ステートメント内で特定のクラスター (default) を指定することができます。

"Resource": "arn:aws:ecs:us-east-1:123456789012:cluster/default"

また、特定のアカウントに属するすべてのクラスターを指定するには、以下の要領で * ワイルドカードを使用します。

"Resource": "arn:aws:ecs:us-east-1:123456789012:cluster/*"

すべてのリソースを指定する場合、または特定の API アクションが ARN をサポートしていない場合は、以下の要領で、Resource エレメント内で * ワイルドカードを使用します。

"Resource": "*"

以下の表では、Amazon ECS API アクションによって使用される各リソースの種類の ARN を説明しています。

リソースタイプ ARN

すべての Amazon ECS リソース

arn:aws:ecs:*

特定リージョンの特定アカウントが所有するすべての Amazon ECS リソース

arn:aws:ecs:region:account:*

クラスター

arn:aws:ecs:region:account:cluster/cluster-name

コンテナインスタンス

arn:aws:ecs:region:account:container-instance/container-instance-id

タスク定義

arn:aws:ecs:region:account:task-definition/task-definition-family-name:task-definition-revision-number

サービス

arn:aws:ecs:region:account:service/service-name

タスク

arn:aws:ecs:region:account:task/task-id

コンテナ

arn:aws:ecs:region:account:container/container-id

多くの Amazon ECS API アクションは、複数のリソースを受け入れいます。単一のステートメントに複数のリソースを指定するには、以下のようにコンマで ARN を区切ります。

"Resource": ["arn1", "arn2"]

ARN の一般的な情報については、アマゾン ウェブ サービス全般のリファレンスAmazon Resource Names (ARN) and AWS Service Namespaces を参照してください。

Amazon ECS の条件キー

ポリシーステートメントでは、オプションで有効になるタイミングを制御する条件を指定できます。各条件には 1 つ以上のキーと値のペアが含まれます。条件キーは大文字小文字を区別しません。私たちは AWS 範囲の条件キーに加え、追加のサービス固有の条件キーを定義しました。

複数の条件、または単一の条件に複数のキーを指定する場合、論理 AND 演算を使用してそれらを評価します。1 つのキーに複数の値を使用して単一の条件を指定する場合、論理 OR 演算を使用して条件を評価します。アクセス許可が付与されるには、すべての条件を満たしている必要があります。

条件を指定する際にプレースホルダーも使用できます。詳細については、IAM ユーザーガイド の「ポリシー変数」を参照してください。

Amazon ECS には AWS 範囲の条件キー (Available Keys を参照) に加え、以下のサービス固有の条件キーが実装されています。 (Amazon ECS 用のサービス固有の条件キーのサポートは今後さらに追加される予定です)

条件キー キー/値のペア 評価の種類

ecs:cluster

"ecs:cluster":"cluster-arn"

cluster-arn は Amazon ECS クラスターの ARN です

ARN、Null

ecs:container-instances

"ecs:container-instances":"container-instance-arns"

container-instance-arns は複数のコンテナインスタンス ARN です。

ARN、Null

アクションごとに、どの Amazon ECS リソースでどの条件キーが使用できるかについては、Amazon ECS API アクションでサポートされるリソースレベルのアクセス許可 を参照してください。Amazon ECS のポリシーステートメントの例については、Amazon ECS IAM ポリシーの作成 を参照してください。

ユーザーが必要なアクセス許可を持っているかどうかを確認する

IAM ポリシーを作成したら、ポリシーを本稼働環境に置く前に、そのポリシーがユーザーに特定の API アクションおよび必要なリソースを使用するアクセス許可を付与しているかどうかを確認することをお勧めします。

まずテスト目的の IAM ユーザーを作成し、作成した IAM ポリシーをテストユーザーにアタッチします。次に、テストユーザーとしてリクエストを作成します。テストリクエストは、コンソールまたは AWS CLI を使用して行うことができます。

注記

IAM Policy Simulator を使用してポリシーをテストすることもできます。ポリシーシミュレーターの詳細については、IAM ユーザーガイド の「IAM Policy Simulator の使用」を参照してください。

テストしているアクションがリソースを作成または変更する場合、DryRun パラメーターを使用してリクエストを作成する (または、--dry-run オプションで AWS CLI コマンドを実行する) 必要があります。この場合、発信者は認証チェックを行いますが、操作は完了しません。たとえば、実際に終了させることなく、ユーザーが特定のインスタンスを終了できるかどうかを確認できます。テストユーザーに必要なアクセス許可がある場合、リクエストで DryRunOperation が返されます。必要なアクセス許可がない場合は UnauthorizedOperation が返されます。

ポリシーが想定したアクセス許可をユーザーに付与していない場合、または過度に許可されている場合、必要に応じてポリシーを調整し、必要な結果を得るまで再テストできます。

重要

ポリシーの変更が反映され、有効になるには数分間かかります。したがって、ポリシーの更新をテストするには 5 分かかると見ておいてください。

認証チェックが失敗した場合、リクエストでは診断情報でエンコードされたメッセージが返されます。DecodeAuthorizationMessage アクションを使用してメッセージをデコードできます。詳細については、「AWS Security Token Service API リファレンス」の「DecodeAuthorizationMessage」、および「AWS CLI Command Reference」の「decode-authorization-message」を参照してください。