IAM を使用するAmazon Elastic Container Service
IAM を使用して Amazon ECS へのアクセスを管理する前に、Amazon ECS で使用できる IAM 機能について理解しておく必要があります。
| IAM の特徴量 | Amazon ECS サポート |
|---|---|
|
あり |
|
|
なし |
|
|
あり |
|
|
部分的 |
|
|
あり |
|
|
なし |
|
|
あり |
|
|
あり |
|
|
あり |
|
|
あり |
|
|
あり |
大部分の IAM 機能が Amazon ECS および、その他のサービスでどのように機能するかに関するおおまかな説明については、AWS IAM ユーザーガイドの「IAM と連携する AWS のサービス」を参照してください。
Amazon ECS のアイデンティティベースの ポリシー
ID ベースのポリシーのサポート: あり
アイデンティティベースポリシーは、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 エンティティを、リソースベースのポリシーのプリンシパルとして指定します。詳細については、IAM ユーザーガイドのIAM でのクロスアカウントリソースアクセスを参照してください。
Amazon ECS のポリシーアクション
ポリシーアクションのサポート: あり
管理者は AWS JSON ポリシーを使用して、だれが何にアクセスできるかを指定できます。つまり、どのプリンシパルがどのようなリソースにどのような条件でアクションを実行できるかということです。
JSON ポリシーの Action 要素にはポリシー内のアクセスを許可または拒否するために使用できるアクションが記述されます。このアクションは関連付けられたオペレーションを実行するためのアクセス許可を付与するポリシーで使用されます。
Amazon ECS アクションのリストを確認するには、「Service Authorization Reference」の「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 ポリシー要素はアクションが適用されるオブジェクトを指定します。ベストプラクティスとして、Amazon リソースネーム (ARN) を使用してリソースを指定します。リソースレベルのアクセス許可をサポートしないアクションの場合は、ステートメントがすべてのリソースに適用されることを示すために、ワイルドカード (*) を使用します。
"Resource": "*"
Amazon ECS リソースタイプとその ARN のリストを確認するには、「Service Authorization Reference」の「Resources defined by 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 要素は、定義された基準に基づいてステートメントが実行される時期を指定します。イコールや未満などの条件演算子を使用して条件式を作成して、ポリシーの条件とリクエスト内の値を一致させることができます。すべての AWS グローバル条件キーを確認するには、IAM ユーザーガイドのAWS グローバル条件コンテキストキーを参照してください。
Amazon ECS は、以下のサービス固有の条件キーをサポートしており、IAM ポリシーのきめ細かいフィルタリングの提供に使用することができます。
| 条件キー | 説明 | 評価の種類 |
|---|---|---|
|
aws:RequestTag/${TagKey} |
コンテキストキーは タグキーと値のペアが AWS リクエストに含まれていることを確認します。例えば、リクエストに「 |
String |
|
aws:ResourceTag/${TagKey} |
コンテキストキーは リソース (ユーザーまたはロール) を識別するためにアタッチされたタグが、指定されたキーの名前および値と一致するかどうかをチェックします。 |
String |
|
aws:TagKeys |
このコンテキストキーは AWS リクエストに存在するタグキーをチェックします。 |
String |
|
ecs:ResourceTag/${TagKey} |
コンテキストキーは リソース (ユーザーまたはロール) を識別するためにアタッチされたタグが、指定されたキーの名前および値と一致するかどうかをチェックします。 |
String |
| ecs:account-setting |
コンテキストキーは |
String |
| ecs:auto-assign-public-ip | コンテキストキーは"ecs:auto-assign-public-ip":" 形式であり、value- は「true」または「false」です。 |
String |
|
ecs:capacity-provider |
コンテキストキーは |
ARN、Null |
|
ecs:cluster |
コンテキストキーは |
ARN、Null |
|
ecs:compute-compatability |
コンテキストキーは "ecs:compute-compatability":" という形式で、 は「FARGATE」、「EC2」、または「EXTERNAL」です。 |
String |
|
ecs:container-instances |
コンテキストキーは |
ARN、Null |
| ecs:container-name |
コンテキストキーは |
String |
| ecs:enable-execute-command | コンテキストキーは"ecs:enable-execute-command":" 形式であり、value- は「true」または「false」です。 |
String |
|
ecs:enable-service-connect |
コンテキストキーは |
String |
|
ecs:enable-ebs-volumes |
コンテキストキーは |
String |
| ecs:enable-managed-tags |
コンテキストキーは |
String |
| ecs:enable-vpc-lattice |
コンテキストキーは |
String |
| ecs:fargate-ephemeral-storage-kms-key |
コンテキストキーは |
String |
|
ecs:namespace |
コンテキストキーは |
ARN、Null |
| ecs:propagate-tags |
コンテキストキーは |
String |
|
ecs:service |
コンテキストキーは |
ARN、Null |
|
ecs:task-definition |
コンテキストキーは |
ARN、Null |
| ecs:subnet |
コンテキストキーは |
String |
|
ecs:task |
コンテキストキーは |
ARN、Null |
| ecs:task-cpu | コンテキストキーは "ecs:task-cpu":" という形式で、task-cpu はタスク CPU で、1024 = 1 vCPU の整数です。 |
整数 |
| ecs:task-memory | コンテキストキーは "ecs:task-memory":" という形式で、task-memory は MiB のタスクメモリです。 |
整数 |
Amazon ECS 条件キーのリストを確認するには、「Service Authorization Reference」の「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)
重要
Amazon ECS は、すべての Amazon ECS リソースに対して属性ベースのアクセスコントロールをサポートしています。属性を使用してアクションの範囲を設定できるかどうかを判断するには、「サービス許可リファレンス」の「Amazon Elastic Container Service で定義されるアクション」の表を参照してください。まず、リソース列にリソースがあることを確認します。次に、[条件キー]列を使用して、アクションとリソースの組み合わせのキーを確認します。
ABAC (ポリシー内のタグ) のサポート: あり
属性ベースのアクセス制御 (ABAC) は、タグと呼ばれる属性に基づいてアクセス許可を定義する認可戦略です。IAM エンティティと AWS リソースにタグを付けることで、プリンシパルのタグがリソースタグと一致するときに操作を許可する ABAC ポリシーを設計できます。
タグに基づいてアクセスを管理するには、aws:ResourceTag/、key-nameaws:RequestTag/、または key-nameaws:TagKeys の条件キーを使用して、ポリシーの条件要素でタグ情報を提供します。
サービスがすべてのリソースタイプに対して 3 つの条件キーすべてをサポートする場合、そのサービスの値はありです。サービスが一部のリソースタイプに対してのみ 3 つの条件キーのすべてをサポートする場合、値は「部分的」になります。
ABAC の詳細については、「IAM ユーザーガイド」の「ABAC 認可でアクセス許可を定義する」を参照してください。ABAC をセットアップする手順を説明するチュートリアルについては、「IAM ユーザーガイド」の「属性ベースのアクセスコントロール (ABAC) を使用する」を参照してください。
Amazon ECS リソースのタグ付けの詳細については、「Amazon ECS リソースにタグ付けする」を参照してください。
リソースのタグに基づいてリソースへのアクセスを制限するためのアイデンティティベースポリシーの例を表示するには、「タグに基づき、Amazon ECS サービスを記述する」を参照してください。
Amazon ECS での一時的な認証情報の使用
一時的な認証情報のサポート: あり
一時的な認証情報は、AWSリソースへの短期的なアクセスを提供し、フェデレーションの使用時またはロールの切り替え時に自動的に作成されます。AWS では、長期的なアクセスキーを使用する代わりに、一時的な認証情報を動的に生成することをお勧めします。詳細については、「IAM ユーザーガイド」の「IAM の一時的な認証情報」および「AWS のサービス と IAM との連携」を参照してください。
Amazon ECS のフォワードアクセスセッション
転送アクセスセッション (FAS) のサポート: あり
転送アクセスセッション (FAS) は、AWS のサービス を呼び出すプリンシパルのアクセス許可を AWS のサービス のリクエストと合わせて使用し、ダウンストリームのサービスに対してリクエストを行います。FAS リクエストを行う際のポリシーの詳細については、「転送アクセスセッション」を参照してください。
Amazon ECS のサービスロール
サービスロールのサポート: あり
サービスロールとは、サービスがユーザーに代わってアクションを実行するために引き受ける IAM ロールです。IAM 管理者は、IAM 内からサービスロールを作成、変更、削除できます。詳細については、IAM ユーザーガイドの AWS のサービス に許可を委任するロールを作成するを参照してください。
警告
サービスロールの許可を変更すると、Amazon ECS の機能が破損する可能性があります。Amazon ECS が指示する場合以外は、サービスロールを編集しないでください。
Amazon ECS のサービスにリンクされたロール
サービスリンクロールのサポート: あり
サービスにリンクされたロールは、AWS のサービス にリンクされているサービスロールの一種です。サービスがロールを引き受け、ユーザーに代わってアクションを実行できるようになります。サービスにリンクされたロールは、AWS アカウント に表示され、サービスによって所有されます。IAM 管理者は、サービスリンクロールのアクセス許可を表示できますが、編集することはできません。
Amazon ECS でのサービスにリンクされたロールの作成または管理の詳細については、「Amazon ECS のサービスリンクロールの使用」を参照してください。