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

IAM を使用するAmazon Elastic Container Service

IAM を使用して Amazon ECS へのアクセスを管理する前に、Amazon ECS で使用できる IAM 機能について理解しておく必要があります。

Amazon Elastic コンテナサービスで使用できる IAM の機能
IAM の機能 Amazon ECS サポート

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

はい

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

いいえ

ポリシーアクション

はい

ポリシーリソース

部分的

ポリシー条件キー

はい

ACL

いいえ

ABAC (ポリシー内のタグ)

あり

一時的な認証情報

はい

プリンシパル許可

はい

サービスロール

はい

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

あり

大部分の IAM 機能が Amazon ECS および、その他のサービスでどのように機能するかに関するおおまかな説明については、AWS IAM ユーザーガイドの「IAM と連携する AWS のサービス」を参照してください。

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

アイデンティティベースのポリシーのサポート

はい

アイデンティティベースポリシーは、IAM ユーザー、ユーザーグループ、ロールなど、アイデンティティに添付できる JSON アクセス許可ポリシードキュメントです。これらのポリシーは、ユーザーとロールが実行できるアクション、リソース、および条件を制御します。アイデンティティベースのポリシーを作成する方法については、「IAM ユーザーガイド」の「IAM ポリシーの作成」を参照してください。

IAM アイデンティティベースのポリシーでは、許可または拒否するアクションとリソース、アクションを許可または拒否する条件を指定できます。プリンシパルは、それが添付されているユーザーまたはロールに適用されるため、アイデンティティベースのポリシーでは指定できません。JSON ポリシーで使用できるすべての要素について学ぶには、「IAM ユーザーガイド」の「IAM JSON ポリシーの要素のリファレンス」を参照してください。

Amazon ECS の ID ベースのポリシー例

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

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

リソースベースのポリシーのサポート

いいえ

リソースベースのポリシーは、リソースにアタッチする JSON ポリシードキュメントです。リソースベースのポリシーには例として、IAM ロールの信頼ポリシーや Amazon S3 バケットポリシーがあげられます。リソースベースのポリシーをサポートするサービスでは、サービス管理者はポリシーを使用して特定のリソースへのアクセスを制御できます。ポリシーが添付されているリソースの場合、指定されたプリンシパルがそのリソースに対して実行できるアクションと条件は、ポリシーによって定義されます。リソースベースのポリシーで、プリンシパルを指定する必要があります。プリンシパルには、アカウント、ユーザー、ロール、フェデレーティッドユーザー、または AWS のサービス を含めることができます。

クロスアカウントアクセスを有効にするには、全体のアカウント、または別のアカウントの IAM エンティティを、リソースベースのポリシーのプリンシパルとして指定します。リソースベースのポリシーにクロスアカウントのプリンシパルを追加しても、信頼関係は半分しか確立されない点に注意してください。プリンシパルとリソースが異なる AWS アカウント にある場合、信頼できるアカウントの IAM 管理者は、リソースにアクセスするための許可をプリンシパルエンティティ (ユーザーまたはロール) に付与する必要もあります。IAM 管理者は、アイデンティティベースのポリシーをエンティティにアタッチすることで許可を付与します。ただし、リソースベースのポリシーで、同じアカウントのプリンシパルへのアクセス権が付与されている場合は、ID ベースのポリシーをさらに付与する必要はありません。詳細については、「IAM ユーザーガイド」の「IAM ロールとリソースベースのポリシーとの相違点」を参照してください。

Amazon ECS のポリシーアクション

ポリシーアクションに対するサポート

はい

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

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

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

Amazon ECS アクションの一覧については、「サービス認証リファレンス」の「Actions Defined by Amazon Elastic Container Service」を参照してください。

Amazon ECS のポリシーアクションは、アクションの前に以下のプレフィックスを使用します。

ecs

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

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

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

"Action": "ecs:Describe*"

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

Amazon ECS のポリシーリソース

ポリシーリソースに対するサポート

部分的

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

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

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

"Resource": "*"

Amazon ECS リソースタイプとその ARN の一覧については、「サービス認証リファレンス」の「Amazon Elastic Container Service で定義されるリソースタイプ」を参照してください。各リソースの ARN を指定できるアクションについては、「Amazon Elastic Container Service で定義されるアクション」を参照してください。

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

"Resource": [ "EXAMPLE-RESOURCE-1", "EXAMPLE-RESOURCE-2"

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

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

次の ARN を使用して、ステートメントで my-cluster-1 および my-cluster-2 クラスタを指定します。

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

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

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

タスク定義では、最新のリビジョンまたは特定のリビジョンを指定できます。

最新のタスク定義を指定する場合は、以下を使用します。

"Resource:arn:${Partition}:ecs:${Region}:${Account}:task-definition/${TaskDefinitionFamilyName}"

特定のタスク定義リビジョンを指定する場合は、${TaskDefinitionRevisionNumber} を使用します。

"Resource:arn:${Partition}:ecs:${Region}:${Account}:task-definition/${TaskDefinitionFamilyName}:${TaskDefinitionRevisionNumber}"

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

Amazon ECS のポリシー条件キー

サービス固有のポリシー条件キーのサポート

あり

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

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

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

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

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

Amazon ECS は、以下のサービス固有の条件キーをサポートしており、IAM ポリシーのきめ細かいフィルタリングの提供に使用することができます。

条件キー

説明

評価の種類

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:container-name

コンテキストキーは "ecs:container-name":"container-name" 形式で、container-instan- は、ECS タスク定義で定義されている Amazon ECS コンテナの名前です。

文字列
ecs:enable-execute-command コンテキストキーは"ecs:enable-execute-command":"value" 形式であり、value- は「true」または「false」です。 文字列

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 での条件キーの一覧については、「サービス認証リファレンス」の「Condition Keys for Amazon Elastic Container Service」を参照してください。条件キーを使用できるアクションとリソースについては、「Amazon Elastic Container Service で定義するアクション」を参照してください。

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

Amazon ECS アクセスコントロールリスト (ACL)

ACL のサポート

いいえ

アクセスコントロールリスト (ACL) は、どのプリンシパル (アカウントメンバー、ユーザー、またはロール) がリソースにアクセスするための許可を持つかを制御します。ACL はリソースベースのポリシーに似ていますが、JSON ポリシードキュメント形式は使用しません。

Amazon ECS での属性ベースのアクセスコントロール (ABAC)

ABAC (ポリシー内のタグ) のサポート

あり

属性ベースのアクセスコントロール (ABAC) は、属性に基づいて許可を定義する認可戦略です。AWS では、これらの属性は タグ と呼ばれます。タグは、IAM エンティティ (ユーザーまたはロール)、および多数の AWS リソースに添付できます。エンティティとリソースのタグ付けは、ABAC の最初のステップです。その後、プリンシパルのタグがアクセスしようとしているリソースのタグと一致した場合に操作を許可するように ABAC ポリシーをします。

ABAC は、急速に成長している環境でポリシー管理が面倒な状況に役立ちます。

タグに基づいてアクセスを管理するには、aws:ResourceTag/key-nameaws:RequestTag/key-name、または aws:TagKeys の条件キーを使用して、ポリシーの 条件要素 でタグ情報を提供します。

ABAC の詳細については、「IAM ユーザーガイド」の「ABAC とは?」を参照してください。ABAC をセットアップするステップを説明するチュートリアルについては、「IAM ユーザーガイド」の「属性に基づくアクセスコントロール (ABAC) を使用する」を参照してください。

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

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

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

テンポラリ認証情報のサポート

はい

AWS のサービス には、テンポラリ認証情報を使用してサインインしても機能しないものがあります。テンポラリ認証情報を利用できる AWS のサービス を含めた詳細情報については、「IAM ユーザーガイド」の「IAM と連携する AWS のサービス」を参照してください。

ユーザー名とパスワード以外の方法で AWS Management Console にサインインする場合は、テンポラリ認証情報を使用していることになります。例えば、会社の Single Sign-On (SSO) リンクを使用して AWS にアクセスすると、そのプロセスは自動的にテンポラリ認証情報を作成します。また、ユーザーとしてコンソールにサインインしてからロールを切り替える場合も、テンポラリ認証情報が自動的に作成されます。ロールの切り替えに関する詳細については、「IAM ユーザーガイド」の「ロールへの切り替え (コンソール)」を参照してください。

テンポラリ認証情報は、AWS CLI または AWS API を使用して手動で作成できます。作成後、これらの一時認証情報を使用して AWS にアクセスできるようになります。AWS は、長期的なアクセスキーを使用する代わりに、テンポラリ認証情報を動的に生成することをお勧めします。詳細については、「IAM のテンポラリセキュリティ認証情報」を参照してください。

Amazon ECS のクロスサービスプリンシパル許可

プリンシパル許可のサポート

はい

IAM ユーザーまたはロールを使用して AWS でアクションを実行するユーザーは、プリンシパルとみなされます。ポリシーは、プリンシパルにアクセス許可を付与します。一部のサービスを使用する際に、アクションを実行することで、別のサービスの別のアクションがトリガーされることがあります。この場合、両方のアクションを実行するための許可が必要です。アクションがポリシーで追加の依存アクションを必要とするかどうかを確認するには、サービス認証リファレンスの「Amazon Elastic Container Service のアクション、リソース、および条件キー」をご参照ください。

Amazon ECS のサービスロール

サービスロールに対するサポート

はい

サービスロールとは、サービスがユーザーに代わってアクションを実行するために引き受ける IAM ロールです。IAM 管理者は、IAM 内からサービスロールを作成、変更、削除できます。詳細については、「IAM ユーザーガイド」の「AWS のサービス に許可を委任するロールの作成」を参照してください。

警告

サービスロールの許可を変更すると、Amazon ECS の機能が破損する可能性があります。Amazon ECS が指示する場合以外は、サービスロールを編集しないでください。

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

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

はい

サービスリンクロールは、AWS のサービス にリンクされているサービスロールの一種です。サービスは、ユーザーに代わってアクションを実行するロールを引き受けることができます。サービスにリンクされたロールは IAM アカウント内に表示され、サービスによって所有されます。IAM 管理者は、サービスにリンクされたロールの許可を表示できますが、編集することはできません。

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