Amazon Elastic Container Service と IAM の連携 - Amazon ECS

Amazon Elastic Container Service と IAM の連携

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

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

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

アクション

Administrators can use AWS JSON policies to specify who has access to what. That is, which principal can perform actions on what resources, and under what conditions.

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 Service のアクション、リソース、および条件キー」を参照してください。

リソース

Administrators can use AWS JSON policies to specify who has access to what. That is, which principal can perform actions on what resources, and under what conditions.

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/container-id

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

条件キー

Administrators can use AWS JSON policies to specify who has access to what. That is, which principal can perform actions on what resources, and under what conditions.

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 アクションでサポートされるリソースレベルのアクセス許可 を参照してください。

Amazon ECS アイデンティティベースのポリシーの例を表示するには、「Amazon Elastic Container Service アイデンティティベースのポリシーの例」を参照してください。

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

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

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 ロールを引き受ける、またはクロスアカウントロールを引き受けることができます。一時的なセキュリティ認証情報を取得するには、AssumeRole または GetFederationToken などの AWS STS API オペレーションを呼び出します。

Amazon ECSでは、一時認証情報の使用をサポートしています。

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

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

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

サービスロール

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

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