IAM を使用するAmazon Elastic Container Service - Amazon Elastic Container Service

IAM を使用するAmazon Elastic Container Service

IAM を使用して Amazon ECS へのアクセスを管理する前に、Amazon ECS で使用できる IAM 機能について理解しておく必要があります。Amazon ECS およびその他の AWS のサービスが IAM と連携する方法の概要を把握するには、IAM ユーザーガイドの「IAM と連携する AWS のサービス」を参照してください。

Amazon ECS のアイデンティティベースのポリシー

IAM ID ベースのポリシーでは、許可または拒否するアクションとリソース、またアクションを許可または拒否する条件を指定できます。Amazon ECS は、特定のアクション、リソース、および条件キーをサポートしています。JSON ポリシーで使用するすべての要素については、IAM ユーザーガイドIAM JSON ポリシーの要素のリファレンスを参照してください。

Actions

管理者は AWS JSON ポリシーを使用して、誰が何にアクセスできるかを指定できます。つまり、どのプリンシパルがどのリソースに対してどのような条件下でアクションを実行できるかということです。

JSON ポリシーの Action 要素は、ポリシー内のアクセスを許可または拒否するために使用できるアクションを記述します。ポリシーアクションの名前は通常、関連する AWS API オペレーションと同じです。一致する API オペレーションを持たないアクセス許可のみのアクションなど、いくつかの例外があります。また、ポリシーに複数のアクションが必要なオペレーションもあります。これらの追加アクションは、依存アクションと呼ばれます。

このアクションは、関連付けられた操作を実行するための許可を付与するポリシーで使用されます。

Amazon ECS のポリシーアクションは、アクションの前にプレフィックス ecs: を使用します。たとえば、Amazon ECS CreateCluster API オペレーションを使用して Amazon ECS クラスターを作成するアクセス許可を付与するには、ポリシーに ecs:CreateCluster アクションを含めます。ポリシーステートメントには、Action または NotAction エレメントを含める必要があります。Amazon ECS は、このサービスで実行できるタスクを記述する独自のアクションのセットを定義します。

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

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

ワイルドカード (*) を使用して複数のアクションを指定することができます。例えば、Describe という単語で始まるすべてのアクションを指定するには、次のアクションを含めます。

"Action": "ecs:Describe*"

Amazon ECS アクションのリストを表示するには、IAM ユーザーガイドの「Amazon Elastic Container Registry Service のアクション、リソース、および条件キー」を参照してください。

Resources

管理者は AWS JSON ポリシーを使用して、誰が何にアクセスできるかを指定できます。つまり、どのプリンシパルがどのリソースに対してどのような条件下でアクションを実行できるかということです。

Resource JSON ポリシーエレメントは、アクションが適用されるオブジェクトを指定します。ステートメントには、Resource または NotResource エレメントを含める必要があります。ベストプラクティスとして、リソースは Amazon リソースネーム (ARN) を使用して指定します。これは、リソースレベルのアクセス許可と呼ばれる特定のリソースタイプをサポートするアクションに対して実行できます。

操作のリスト化など、リソースレベルの許可をサポートしないアクションの場合は、ワイルドカード (*) を使用して、ステートメントがすべてのリソースに適用されることを示します。

"Resource": "*"

Amazon ECS クラスターリソースの ARN は次のようになります。

arn:${Partition}:ecs:${Region}:${Account}:cluster/${clusterName}

ARN の形式の詳細については、「Amazon リソースネーム (ARN) と AWS サービスの名前空間」を参照してください。

例えば、ステートメントで my-cluster クラスターを指定するには、次の ARN を使用します。

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

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

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

リソースの作成を含む、一部の Amazon ECS アクションは、特定のリソースで実行できません。このような場合は、ワイルドカード (*) を使用する必要があります。

"Resource": "*"

一部の Amazon ECS API アクションは複数のリソースで実行できます。たとえば、DescribeClusters API アクションを呼び出すときに複数のクラスターを参照できます。複数のリソースを単一のステートメントで指定するには、ARN をカンマで区切ります。

"Resource": [ "resource1", "resource2"

次の表は、Amazon ECS API アクションで使用される各リソースタイプの ARN について説明しています。

重要

次の表では、Amazon ECS のタスク、サービス、およびコンテナインスタンスに長い形式の新しい ARN を使用しています。長い形式の ARN にオプトインしない場合は、ARN にクラスター名が含まれることはありません。詳細については、「Amazon リソースネーム (ARN) と ID」を参照してください。

リソースタイプ

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/cluster-name/container-instance-id

タスク定義

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

サービス

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

タスク

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

コンテナ

arn:aws:ecs:region:account:container/cluster-name/task-id/container-id

どのアクションで、各リソースの ARN を指定することができるかについては、「Amazon ECS API アクションでサポートされるリソースレベルのアクセス許可」を参照してください。

条件キー

管理者は AWS JSON ポリシーを使用して、誰が何にアクセスできるかを指定できます。つまり、どのプリンシパルがどのリソースに対してどのような条件下でアクションを実行できるかということです。

Condition エレメント (または Condition ブロック) を使用すると、ステートメントが有効な条件を指定できます。Conditionエレメントはオプションです。イコールや以下などの条件演算子を使用する条件式を作成して、リクエスト内に値のあるポリシーの条件に一致させることができます。

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

条件を指定する際にプレースホルダー変数も使用できます。例えば、IAM ユーザー名でタグ付けされている場合のみ、リソースにアクセスする IAM ユーザーアクセス許可を付与できます。詳細については、IAM ユーザーガイドIAM ポリシーエレメント: 変数およびタグを参照してください。

AWS はグローバル条件キーとサービス固有の条件キーをサポートしています。すべての AWS グローバル条件キーを確認するには、IAM ユーザーガイドの「AWS グローバル条件コンテキストキー」を参照してください。

Amazon ECS では独自の条件キーが定義されており、また一部のグローバル条件キーの使用がサポートされています。すべてのAWSグローバル条件キーを確認するには、IAM ユーザーガイドのAWS グローバル条件コンテキストキー」を参照してください。

Amazon ECS には、以下のサービス固有の条件キーが実装されています。

条件キー

説明

評価の種類

aws:RequestTag/${TagKey}

コンテキストキーは "aws:RequestTag/tag-key":"tag-value" という形式です。ここで tag-key および tag-value はタグキーと値のペアです。

タグキーと値のペアが AWS リクエストに含まれていることを確認します。たとえば、リクエストに「"Dept"」タグキーが含まれ、「"Accounting"」という値が含まれているかどうかを確認できます。

文字列

aws:ResourceTag/${TagKey}

コンテキストキーは "aws:ResourceTag/tag-key":"tag-value" という形式です。ここで tag-key および tag-value はタグキーと値のペアです。

リソース (ユーザーまたはロール) を識別するためにアタッチされたタグが、指定されたキーの名前および値と一致するかどうかをチェックします。

文字列

aws:TagKeys

このコンテキストキーは "aws:TagKeys":"tag-key" という形式であり、ここで tag-key は値 (["Dept","Cost-Center"] など) のないタグキーのリストです。

AWS リクエストに存在するタグキーをチェックします。

文字列

ecs:ResourceTag/${TagKey}

コンテキストキーは "ecs:ResourceTag/tag-key":"tag-value" という形式です。ここで tag-key および tag-value はタグキーと値のペアです。

リソース (ユーザーまたはロール) を識別するためにアタッチされたタグが、指定されたキーの名前および値と一致するかどうかをチェックします。

文字列

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 は、1 つ以上のコンテナインスタンス ARN です。

ARN、Null

ecs:task-definition

コンテキストキーは "ecs:task-definition":"task-definition-arn" という形式です。ここで task-definition-arn は、Amazon ECS タスク定義の ARN です。

ARN、Null

ecs:service

コンテキストキーは "ecs:service":"service-arn" という形式です。ここで service-arn は、Amazon ECS サービスの ARN です。

ARN、Null

どのアクションおよびリソースと条件キーを使用できるかについては、「Amazon ECS API アクションでサポートされるリソースレベルのアクセス許可」を参照してください。

Examples

Amazon ECS でのアイデンティティベースのポリシーの例は、「Amazon Elastic Container Service アイデンティティベースのポリシー例」でご確認ください。

Amazon ECS でのリソースベースのポリシー

Amazon ECS では、 リソースベースのポリシーはサポートされていません。

Amazon ECS API アクションでサポートされるリソースレベルのアクセス許可

リソースレベルのアクセス許可とは、ユーザーがアクションを実行できるリソースを指定できる機能を意味します。Amazon ECS は、リソースレベルのアクセス許可を部分的にサポートします。これは、特定の Amazon ECS アクションでは、満たす必要がある条件、またはユーザーが使用できる特定のリソースに基づいて、ユーザーがそれらのアクションをいつ使用できるかを制御できることを意味します。たとえば、特定の AMI のみを使用して、特定のタイプのインスタンスだけを起動するアクセス許可をユーザーに付与できます。

Amazon ECS アクションによって作成または変更されるリソース、および IAM ポリシーステートメントで使用できる ARN および Amazon ECS 条件キーの詳細については、IAM ユーザーガイドの「Amazon Elastic Container Registry Service のアクション、リソース、および条件キー」を参照してください。

Amazon ECS タグに基づいた認可

タグは、Amazon ECS リソースにアタッチすることも、Amazon ECS へのリクエストの際に渡すこともできます。タグに基づいてアクセスを制御するには、aws:RequestTag/key-name または aws:TagKeys の条件キーを使用して、ポリシーの条件要素でタグ情報を提供します。詳細については、IAM ユーザーガイドの「タグを使用したアクセス制御」を参照してください。

Amazon ECS リソースのタグ付けの詳細については、「リソースとタグ」を参照してください。

リソースのタグに基づいてリソースへのアクセスを制限するためのアイデンティティベースのポリシーの例を表示するには、「タグに基づき、Amazon ECS サービスを記述する」を参照してください。

Amazon ECS でのIAM ロール

IAM ロールは AWS アカウント内のエンティティで、特定の許可を持っています。

Amazon ECS での一時的な認証情報の使用

一時的な認証情報を使用して、フェデレーションでサインイン、IAM ロールを引き受ける、またはクロスアカウントロールを引き受けることができます。一時的なセキュリティ認証情報を取得するには、 AWS STS AssumeRole または GetFederationToken などの API オペレーションを呼び出します。

Amazon ECS では、一時認証情報が使用できます。

サービスにリンクされたロール

サービスにリンクされたロールによって、AWS サービスが他のサービスのリソースにアクセスして自動的にアクションを完了できます。サービスにリンクされたロールは、IAM アカウント内に表示され、サービスによって所有されます。IAM 管理者は、サービスにリンクされたロールのアクセス許可を表示できますが、編集することはできません。

Amazon ECS は、サービスにリンクされたロールをサポートしています。Amazon ECS でのサービスにリンクされたロールの作成または管理の詳細については、「Amazon ECS のサービスにリンクされたロール」を参照してください。

サービスロール

この機能では、サービスのロールをユーザーに代わって引き受けることをサービスに許可します。このロールにより、サービスはユーザーに代わって他のサービスのリソースにアクセスし、アクションを実行できます。サービスロールは、IAM アカウントに表示され、サービスによって所有されます。つまり、IAM 管理者は、このロールのアクセス許可を変更できます。ただし、これを行うことにより、サービスの機能が損なわれる場合があります。

Amazon ECS ではサービスロールがサポートされています。