

# IAM を使用するAmazon Elastic Container Service
<a name="security_iam_service-with-iam"></a>

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

 

 


| IAM 機能 | Amazon ECS サポート | 
| --- | --- | 
|  [アイデンティティベースのポリシー](#security_iam_service-with-iam-id-based-policies)  |  あり | 
|  [リソースベースのポリシー](#security_iam_service-with-iam-resource-based-policies)  |  なし  | 
|  [ポリシーアクション](#security_iam_service-with-iam-id-based-policies-actions)  |  あり | 
|  [ポリシーリソース](#security_iam_service-with-iam-id-based-policies-resources)  |  部分的 | 
|  [ポリシー条件キー](#security_iam_service-with-iam-id-based-policies-conditionkeys)  |  あり | 
|  [ACL](#security_iam_service-with-iam-acls)  |  なし  | 
|  [ABAC (ポリシー内のタグ)](#security_iam_service-with-iam-tags)  |  あり | 
|  [一時的な認証情報](#security_iam_service-with-iam-roles-tempcreds)  |  あり | 
|  [転送アクセスセッション (FAS)](#security_iam_service-with-iam-principal-permissions)  |  あり | 
|  [サービスロール](#security_iam_service-with-iam-roles-service)  |  あり | 
|  [サービスリンクロール](#security_iam_service-with-iam-roles-service-linked)  |  はい | 

大部分の IAM 機能が Amazon ECS および、その他のサービスでどのように機能するかに関するおおまかな説明については、[AWS IAM ユーザーガイド](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)の「*IAM と連携する AWS のサービス*」を参照してください。

## Amazon ECS のアイデンティティベースの ポリシー
<a name="security_iam_service-with-iam-id-based-policies"></a>

**ID ベースのポリシーのサポート:** あり

アイデンティティベースポリシーは、IAM ユーザー、ユーザーグループ、ロールなど、アイデンティティにアタッチできる JSON 許可ポリシードキュメントです。これらのポリシーは、ユーザーとロールが実行できるアクション、リソース、および条件をコントロールします。アイデンティティベースポリシーの作成方法については、「*IAM ユーザーガイド*」の「[カスタマー管理ポリシーでカスタム IAM アクセス許可を定義する](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)」を参照してください。

IAM アイデンティティベースのポリシーでは、許可または拒否するアクションとリソース、およびアクションを許可または拒否する条件を指定できます。JSON ポリシーで使用できるすべての要素について学ぶには、「*IAM ユーザーガイド*」の「[IAM JSON ポリシーの要素のリファレンス](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html)」を参照してください。

### Amazon ECS の ID ベースのポリシー例
<a name="security_iam_service-with-iam-id-based-policies-examples"></a>

 

Amazon ECS でのアイデンティティベースのポリシーの例は、「[Amazon Elastic Container Service のアイデンティティベースのポリシーの例](security_iam_id-based-policy-examples.md)」でご確認ください。

## Amazon ECS 内のリソースベースのポリシー
<a name="security_iam_service-with-iam-resource-based-policies"></a>

**リソースベースのポリシーのサポート:** なし 

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

クロスアカウントアクセスを有効にするには、全体のアカウント、または別のアカウントの IAM エンティティを、リソースベースのポリシーのプリンシパルとして指定します。詳細については、IAM ユーザーガイド**の[IAM でのクロスアカウントリソースアクセス](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html)を参照してください。

## Amazon ECS のポリシーアクション
<a name="security_iam_service-with-iam-id-based-policies-actions"></a>

**ポリシーアクションのサポート:** あり

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

JSON ポリシーの `Action` 要素にはポリシー内のアクセスを許可または拒否するために使用できるアクションが記述されます。このアクションは関連付けられたオペレーションを実行するためのアクセス許可を付与するポリシーで使用されます。

 

Amazon ECS アクションのリストを確認するには、「*Service Authorization Reference*」の「[Actions defined by Amazon Elastic Container Service](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticcontainerservice.html#amazonelasticcontainerservice-actions-as-permissions)」を参照してください。

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

```
ecs
```

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

```
"Action": [
      "ecs:{{action1}}",
      "ecs:{{action2}}"
         ]
```

 

 

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

```
"Action": "ecs:Describe*"
```

Amazon ECS でのアイデンティティベースのポリシーの例は、「[Amazon Elastic Container Service のアイデンティティベースのポリシーの例](security_iam_id-based-policy-examples.md)」でご確認ください。

## Amazon ECS のポリシーリソース
<a name="security_iam_service-with-iam-id-based-policies-resources"></a>

**ポリシーリソースのサポート:** 一部

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

`Resource` JSON ポリシー要素はアクションが適用されるオブジェクトを指定します。ベストプラクティスとして、[Amazon リソースネーム (ARN)](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html) を使用してリソースを指定します。リソースレベルのアクセス許可をサポートしないアクションの場合は、ステートメントがすべてのリソースに適用されることを示すために、ワイルドカード (\*) を使用します。

```
"Resource": "*"
```

Amazon ECS リソースタイプとその ARN のリストを確認するには、「*Service Authorization Reference*」の「[Resources defined by Amazon Elastic Container Service](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticcontainerservice.html#amazonelasticcontainerservice-resources-for-iam-policies)」を参照してください。各リソースの ARN を指定できるアクションについては、「[Amazon Elastic Container Service で定義されるアクション](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticcontainerservice.html#amazonelasticcontainerservice-actions-as-permissions)」を参照してください。

 

 

複数のリソースをサポートする 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 のアイデンティティベースのポリシーの例](security_iam_id-based-policy-examples.md)」でご確認ください。

## Amazon ECS のポリシー条件キー
<a name="security_iam_service-with-iam-id-based-policies-conditionkeys"></a>

**サービス固有のポリシー条件キーのサポート:** あり

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

`Condition` 要素は、定義された基準に基づいてステートメントが実行される時期を指定します。イコールや未満などの[条件演算子](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html)を使用して条件式を作成して、ポリシーの条件とリクエスト内の値を一致させることができます。すべての AWS グローバル条件キーを確認するには、*IAM ユーザーガイド*の[AWS グローバル条件コンテキストキー](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html)を参照してください。

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


|  条件キー  |  説明  |  評価の種類  | 
| --- | --- | --- | 
| aws:RequestTag/${TagKey} | コンテキストキーは `"aws:RequestTag/{{tag-key}}":"{{tag-value}}"` という形式です。ここで {{tag-key}} および {{tag-value}} はタグキーと値のペアです。<br />タグキーと値のペアが AWS リクエストに含まれていることを確認します。例えば、リクエストに「`"Dept"`」タグキーが含まれ、「`"Accounting"`」という値が含まれているかどうかを確認できます。 | String | 
| aws:ResourceTag/${TagKey} | コンテキストキーは `"aws:ResourceTag/{{tag-key}}":"{{tag-value}}"` という形式です。ここで {{tag-key}} および {{tag-value}} はタグキーと値のペアです。<br />リソース (ユーザーまたはロール) を識別するためにアタッチされたタグが、指定されたキーの名前および値と一致するかどうかをチェックします。 | String | 
| aws:TagKeys | このコンテキストキーは `"aws:TagKeys":"{{tag-key}}"` という形式であり、ここで {{tag-key}} は値 (`["Dept","Cost-Center"]` など) のないタグキーのリストです。<br />AWS リクエストに存在するタグキーをチェックします。 | String | 
| ecs:ResourceTag/${TagKey} | コンテキストキーは `"ecs:ResourceTag/{{tag-key}}":"{{tag-value}}"` という形式です。ここで {{tag-key}} および {{tag-value}} はタグキーと値のペアです。<br />リソース (ユーザーまたはロール) を識別するためにアタッチされたタグが、指定されたキーの名前および値と一致するかどうかをチェックします。 | String | 
| ecs:account-setting | コンテキストキーは `"ecs:account-setting":"{{account-setting}}"` という形式で、{{account-setting}} はアカウント設定の名前です。 | String | 
| ecs:auto-assign-public-ip | コンテキストキーは"ecs:auto-assign-public-ip":"{{value}}" 形式であり、{{value-}} は「true」または「false」です。 | String | 
| ecs:capacity-provider | コンテキストキーは `"ecs:capacity-provider":"{{capacity-provider-arn}}"` という形式で、{{capacity-provider-arn}} はキャパシティープロバイダーの ARN です。 | ARN、Null | 
| ecs:cluster | コンテキストキーは `"ecs:cluster":"{{cluster-arn}}"` という形式です。ここで {{cluster-arn}} は、Amazon ECS クラスターの ARN です。 | ARN、Null | 
| ecs:compute-compatability | コンテキストキーは "ecs:compute-compatability":"{{compatability-type}}" という形式で、{{ {{compatability-type}} }} は「FARGATE」、「EC2」、または「EXTERNAL」です。 | String | 
| 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-}} は、タスク定義で定義されている Amazon ECS コンテナの名前です。 | String | 
| ecs:enable-execute-command | コンテキストキーは"ecs:enable-execute-command":"{{value}}" 形式であり、{{value-}} は「true」または「false」です。 | String | 
| ecs:enable-service-connect | コンテキストキーは `"ecs:enable-service-connect":"{{value}}"` 形式であり、{{value}} は `"true"` または `"false"` です。 | String | 
| ecs:enable-ebs-volumes | コンテキストキーは `"ecs:enable-ebs-volumes":"{{value}}"` 形式であり、{{value}} は `"true"` または `"false"` です。 | String | 
| ecs:enable-managed-tags | コンテキストキーは `"ecs:enable-managed-tags":"{{value}}"` 形式であり、{{value}} は `"true"` または `"false"` です。 | String | 
| ecs:enable-vpc-lattice | コンテキストキーは `"ecs:vpc-lattice":"{{value}}"` 形式であり、{{value}} は `"true"` または `"false"` です。 | String | 
| ecs:fargate-ephemeral-storage-kms-key | コンテキストキーは `"ecs:fargate-ephemeral-storage-kms-key":"{{key}}"` という形式で、{{キー}}は AWS KMS キーの ID です。 | String | 
| ecs:namespace | コンテキストキーは `"ecs:namespace":"{{namespace-arn}}"` 形式であり、{{namespace-arn}} は AWS Cloud Map 名前空間の ARN です。 | ARN、Null | 
| ecs:propagate-tags | コンテキストキーは `"ecs:propagate-tags":"{{value}}"` という形式で、{{値}}は `"TASK_DEFINITION"`、`"SERVICE"`、または `"NONE"` です。 | String | 
| ecs:service | コンテキストキーは `"ecs:service":"{{service-arn}}"` という形式です。ここで {{service-arn}} は、Amazon ECS サービスの ARN です。 | ARN、Null | 
| ecs:task-definition | コンテキストキーは `"ecs:task-definition":"{{task-definition-arn}}"` という形式です。ここで {{task-definition-arn}} は、Amazon ECS タスク定義の ARN です。 | ARN、Null | 
| ecs:subnet | コンテキストキーは `"ecs:subnet":"{{subnets}}"` という形式で、{{サブネット}}は `awsvpc` モードを使用するタスクまたはサービスのサブネットです。 | String | 
| ecs:task | コンテキストキーは `"ecs:task":"{{task-arn}}"` という形式で、{{task-arn}} は、Amazon ECS サービスの ARN です。 | ARN、Null | 
| ecs:task-cpu | コンテキストキーは "ecs:task-cpu":"{{task-cpu}}" という形式で、{{task-cpu}} はタスク CPU で、1024 = 1 vCPU の整数です。 | 整数 | 
| ecs:task-memory | コンテキストキーは "ecs:task-memory":"{{task-memory}}" という形式で、{{task-memory}} は MiB のタスクメモリです。 | 整数 | 

Amazon ECS 条件キーのリストを確認するには、「*Service Authorization Reference*」の「[Condition keys for Amazon Elastic Container Service](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticcontainerservice.html#amazonelasticcontainerservice-policy-keys)」を参照してください。条件キーを使用できるアクションとリソースについては、「[Amazon Elastic Container Service で定義するアクション](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticcontainerservice.html#amazonelasticcontainerservice-actions-as-permissions)」を参照してください。

Amazon ECS でのアイデンティティベースのポリシーの例は、「[Amazon Elastic Container Service のアイデンティティベースのポリシーの例](security_iam_id-based-policy-examples.md)」でご確認ください。

## Amazon ECS アクセスコントロールリスト (ACL)
<a name="security_iam_service-with-iam-acls"></a>

**ACL のサポート:** なし 

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

## Amazon ECS での属性ベースのアクセスコントロール (ABAC)
<a name="security_iam_service-with-iam-tags"></a>

**重要**  
Amazon ECS は、すべての Amazon ECS リソースに対して属性ベースのアクセスコントロールをサポートしています。属性を使用してアクションの範囲を設定できるかどうかを判断するには、「*サービス許可リファレンス*」の「[Amazon Elastic Container Service で定義されるアクション](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticcontainerservice.html#amazonelasticcontainerservice-actions-as-permissions)」の表を参照してください。まず、**リソース**列にリソースがあることを確認します。次に、**[条件キー]**列を使用して、アクションとリソースの組み合わせのキーを確認します。

**ABAC (ポリシー内のタグ) のサポート:** あり

属性ベースのアクセス制御 (ABAC) は、タグと呼ばれる属性に基づいてアクセス許可を定義する認可戦略です。IAM エンティティと AWS リソースにタグを付けることで、プリンシパルのタグがリソースタグと一致するときに操作を許可する ABAC ポリシーを設計できます。

タグに基づいてアクセスを管理するには、`aws:ResourceTag/{{key-name}}`、`aws:RequestTag/{{key-name}}`、または `aws:TagKeys` の条件キーを使用して、ポリシーの[条件要素](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html)でタグ情報を提供します。

サービスがすべてのリソースタイプに対して 3 つの条件キーすべてをサポートする場合、そのサービスの値は**あり**です。サービスが一部のリソースタイプに対してのみ 3 つの条件キーのすべてをサポートする場合、値は「**部分的**」になります。

ABAC の詳細については、「*IAM ユーザーガイド*」の「[ABAC 認可でアクセス許可を定義する](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html)」を参照してください。ABAC をセットアップする手順を説明するチュートリアルについては、「*IAM ユーザーガイド*」の「[属性ベースのアクセスコントロール (ABAC) を使用する](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_attribute-based-access-control.html)」を参照してください。

Amazon ECS リソースのタグ付けの詳細については、「[Amazon ECS リソースにタグ付けする](ecs-using-tags.md)」を参照してください。

リソースのタグに基づいてリソースへのアクセスを制限するためのアイデンティティベースポリシーの例を表示するには、「[タグに基づき、Amazon ECS サービスを記述する](security_iam_id-based-policy-examples.md#security_iam_id-based-policy-examples-view-cluster-tags)」を参照してください。

## Amazon ECS での一時的な認証情報の使用
<a name="security_iam_service-with-iam-roles-tempcreds"></a>

**一時的な認証情報のサポート:** あり

一時的な認証情報は、AWSリソースへの短期的なアクセスを提供し、フェデレーションの使用時またはロールの切り替え時に自動的に作成されます。AWS では、長期的なアクセスキーを使用する代わりに、一時的な認証情報を動的に生成することをお勧めします。詳細については、「*IAM ユーザーガイド*」の「[IAM の一時的な認証情報](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html)」および「[AWS のサービス と IAM との連携](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)」を参照してください。

## Amazon ECS のフォワードアクセスセッション
<a name="security_iam_service-with-iam-principal-permissions"></a>

**転送アクセスセッション (FAS) のサポート:** あり

 転送アクセスセッション (FAS) は、AWS のサービス を呼び出すプリンシパルのアクセス許可を AWS のサービス のリクエストと合わせて使用し、ダウンストリームのサービスに対してリクエストを行います。FAS リクエストを行う際のポリシーの詳細については、「[転送アクセスセッション](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_forward_access_sessions.html)」を参照してください。

## Amazon ECS のサービスロール
<a name="security_iam_service-with-iam-roles-service"></a>

**サービスロールのサポート:** あり

 サービスロールとは、サービスがユーザーに代わってアクションを実行するために引き受ける [IAM ロール](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)です。IAM 管理者は、IAM 内からサービスロールを作成、変更、削除できます。詳細については、IAM ユーザーガイド**の [AWS のサービス に許可を委任するロールを作成する](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)を参照してください。

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

## Amazon ECS のサービスにリンクされたロール
<a name="security_iam_service-with-iam-roles-service-linked"></a>

**サービスリンクロールのサポート:** あり

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

Amazon ECS でのサービスにリンクされたロールの作成または管理の詳細については、「[Amazon ECS のサービスリンクロールの使用](using-service-linked-roles.md)」を参照してください。