Amazon Elastic Container Service に関する AWS 管理ポリシー
ユーザー、グループ、ロールにアクセス許可を追加するには、自分でポリシーを作成するよりも、AWS 管理ポリシーを使用する方が簡単です。チームに必要な権限のみを提供する IAM カスタマーマネージドポリシーを作成するには、時間と専門知識が必要です。すぐに使用を開始するために、AWS マネージドポリシーを使用できます。これらのポリシーは、一般的なユースケースを対象範囲に含めており、AWS アカウントで利用できます。AWS マネージドポリシーの詳細については、「IAM ユーザーガイド」の「AWS マネージドポリシー」を参照してください。
AWS のサービスは、AWS マネージドポリシーを維持および更新します。AWS マネージドポリシーの許可を変更することはできません。サービスでは、新しい機能を利用できるようにするために、AWS マネージドポリシーに権限が追加されることがあります。この種類の更新は、ポリシーがアタッチされている、すべてのアイデンティティ (ユーザー、グループおよびロール) に影響を与えます。新しい機能が立ち上げられた場合や、新しいオペレーションが使用可能になった場合に、各サービスが AWS マネージドポリシーを更新する可能性が最も高くなります。サービスは、AWS マネージドポリシーから権限を削除しないため、ポリシーの更新によって既存の権限が破棄されることはありません。
さらに、AWS は、複数のサービスにまたがるジョブ機能の特徴に対するマネージドポリシーもサポートしています。例えば、ReadOnlyAccess AWS マネージドポリシーでは、すべての AWS のサービスおよびリソースへの読み取り専用アクセスを許可します。サービスが新しい機能を起動する場合、AWS は、新たなオペレーションとリソース用に、読み取り専用の許可を追加します。ジョブ機能ポリシーのリストと説明については、IAM ユーザーガイドのジョブ機能の AWS 管理ポリシーを参照してください。
Amazon ECS および Amazon ECR では、ユーザー、グループ、ロール、Amazon EC2 インスタンス、および Amazon ECS タスクにアタッチして、リソースや API オペレーションで異なる制御レベルを使用できる複数の管理ポリシーと信頼関係を提供しています。これらのポリシーを直接適用することも、独自のポリシーを作成する開始点として使用することもできます。Amazon ECR 管理ポリシーの詳細については、「Amazon ECR 管理ポリシー」を参照してください。
AmazonECS_FullAccess
AmazonECS_FullAccess
ポリシーは IAM ID にアタッチできます。
このポリシーは、Amazon ECS リソースへの管理アクセスを許可し、IAM ID(ユーザー、グループ、ロールなど)にAWSサービスは、Amazon ECS のすべての機能を使用するために統合されています。このポリシーを使用すると、AWS Management Console で利用可能な Amazon ECS のすべての機能にアクセスできます。これらの機能は、。
許可の詳細
AmazonECS_FullAccess
管理 IAM ポリシーには以下のアクセス許可が含まれています。最小権限の付与のベストプラクティスに従い、AmazonECS_FullAccess
管理ポリシーを、独自のカスタムポリシーを作成するためのテンプレートとして使用できます。これにより、特定の要件に基づいて、管理ポリシーに権限を追加し、管理ポリシーから権限を追加、または権限を取り上げることができます。
-
ecs
— プリンシパルの Amazon ECS API 操作への完全なアクセスを許可します。 -
application-autoscaling
— プリンシパルが Application Auto Scaling リソースを作成、説明、管理できるようにします。これは、Amazon ECS サービスの自動スケーリングサービスを有効にする場合に必要です。 -
appmesh
— プリンシパルが App Mesh サービスメッシュと仮想ノードを表示し、App Mesh 仮想ノードを記述できるようにします。これは、Amazon ECS サービスをApp Mesh と統合する場合に必要です。 -
autoscaling
— プリンシパルが Amazon EC2 Auto Scaling リソースを作成、管理、記述できるようにします。これは、クラスターのオートスケーリング機能を使用する際、Amazon EC2 Auto Scaling グループを管理する場合に必要です。 -
cloudformation
— プリンシパルの作成と管理を許可する AWS CloudFormation スタック。これは、AWS Management Console を使用して Amazon ECS クラスターを作成し、それらのクラスターのその後の管理に必要です。 -
cloudwatch
— Amazon CloudWatch アラームの作成、管理、記述をプリンシパルに許可します。 -
codedeploy
- プリンシパルがアプリケーションのデプロイを作成および管理し、構成、リビジョン、デプロイターゲットを表示できるようにします。 -
sns
— プリンシパルが Amazon SNS トピックのリストを表示できるようにします。 -
lambda
— プリンシパルが AWS Lambda 関数とそのバージョン固有の構成のリストを表示できるようにします。 -
ec2
— プリンシパルが Amazon EC2 インスタンスを実行し、ルート、ルートテーブル、インターネットゲートウェイ、起動グループ、セキュリティグループ、仮想プライベートクラウド、スポットフリート、サブネットを作成および管理できるようにします。 -
elasticloadbalancing
— プリンシパルが Elastic Load Balancing ロードバランサーを作成、説明、削除できるようにします。プリンシパルは、ロードバランサーの新しく作成されたターゲットグループ、リスナー、リスナーのルールにタグを追加することもできます。 -
events
— プリンシパルが Amazon EventBridge ルールとそのターゲットを作成、管理、削除できるようにします。 -
iam
— プリンシパルに IAM ロールとアタッチされたポリシーの一覧表示を許可します。プリンシパルは、ECS タスクにアタッチされた Amazon EBS ボリュームの管理を委任するために Amazon ECS にロールを渡すことができます。プリンシパルは、Amazon EC2 インスタンスで利用できるインスタンスプロファイルを一覧表示することもできます。 -
logs
— プリンシパルが Amazon CloudWatch Logs ロググループを作成および記述できるようにします。プリンシパルは、これらのロググループのログイベントを一覧表示することもできます。 -
route53
— プリンシパルが Amazon Route 53 ホストゾーンの作成、管理、削除できるようにします。プリンシパルは、Amazon Route 53 ヘルスチェックの設定と情報を表示することもできます。ホストゾーンの設定の詳細については、「ホストゾーンの使用」を参照してください。 -
servicediscovery
— プリンシパルが AWS Cloud Map サービスを作成、管理、削除し、プライベート DNS 名前空間を作成できるようにします。
AmazonECS_FullAccess
ポリシーの例を次に示します。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ECSIntegrationsManagementPolicy", "Effect": "Allow", "Action": [ "application-autoscaling:DeleteScalingPolicy", "application-autoscaling:DeregisterScalableTarget", "application-autoscaling:DescribeScalableTargets", "application-autoscaling:DescribeScalingActivities", "application-autoscaling:DescribeScalingPolicies", "application-autoscaling:PutScalingPolicy", "application-autoscaling:RegisterScalableTarget", "appmesh:DescribeVirtualGateway", "appmesh:DescribeVirtualNode", "appmesh:ListMeshes", "appmesh:ListVirtualGateways", "appmesh:ListVirtualNodes", "autoscaling:CreateAutoScalingGroup", "autoscaling:CreateLaunchConfiguration", "autoscaling:DeleteAutoScalingGroup", "autoscaling:DeleteLaunchConfiguration", "autoscaling:Describe*", "autoscaling:UpdateAutoScalingGroup", "cloudformation:CreateStack", "cloudformation:DeleteStack", "cloudformation:DescribeStack*", "cloudformation:UpdateStack", "cloudwatch:DeleteAlarms", "cloudwatch:DescribeAlarms", "cloudwatch:GetMetricStatistics", "cloudwatch:PutMetricAlarm", "codedeploy:BatchGetApplicationRevisions", "codedeploy:BatchGetApplications", "codedeploy:BatchGetDeploymentGroups", "codedeploy:BatchGetDeployments", "codedeploy:ContinueDeployment", "codedeploy:CreateApplication", "codedeploy:CreateDeployment", "codedeploy:CreateDeploymentGroup", "codedeploy:GetApplication", "codedeploy:GetApplicationRevision", "codedeploy:GetDeployment", "codedeploy:GetDeploymentConfig", "codedeploy:GetDeploymentGroup", "codedeploy:GetDeploymentTarget", "codedeploy:ListApplicationRevisions", "codedeploy:ListApplications", "codedeploy:ListDeploymentConfigs", "codedeploy:ListDeploymentGroups", "codedeploy:ListDeployments", "codedeploy:ListDeploymentTargets", "codedeploy:RegisterApplicationRevision", "codedeploy:StopDeployment", "ec2:AssociateRouteTable", "ec2:AttachInternetGateway", "ec2:AuthorizeSecurityGroupIngress", "ec2:CancelSpotFleetRequests", "ec2:CreateInternetGateway", "ec2:CreateLaunchTemplate", "ec2:CreateRoute", "ec2:CreateRouteTable", "ec2:CreateSecurityGroup", "ec2:CreateSubnet", "ec2:CreateVpc", "ec2:DeleteLaunchTemplate", "ec2:DeleteSubnet", "ec2:DeleteVpc", "ec2:Describe*", "ec2:DetachInternetGateway", "ec2:DisassociateRouteTable", "ec2:ModifySubnetAttribute", "ec2:ModifyVpcAttribute", "ec2:RequestSpotFleet", "ec2:RunInstances", "ecs:*", "elasticfilesystem:DescribeAccessPoints", "elasticfilesystem:DescribeFileSystems", "elasticloadbalancing:CreateListener", "elasticloadbalancing:CreateLoadBalancer", "elasticloadbalancing:CreateRule", "elasticloadbalancing:CreateTargetGroup", "elasticloadbalancing:DeleteListener", "elasticloadbalancing:DeleteLoadBalancer", "elasticloadbalancing:DeleteRule", "elasticloadbalancing:DeleteTargetGroup", "elasticloadbalancing:DescribeListeners", "elasticloadbalancing:DescribeLoadBalancers", "elasticloadbalancing:DescribeRules", "elasticloadbalancing:DescribeTargetGroups", "events:DeleteRule", "events:DescribeRule", "events:ListRuleNamesByTarget", "events:ListTargetsByRule", "events:PutRule", "events:PutTargets", "events:RemoveTargets", "fsx:DescribeFileSystems", "iam:ListAttachedRolePolicies", "iam:ListInstanceProfiles", "iam:ListRoles", "lambda:ListFunctions", "logs:CreateLogGroup", "logs:DescribeLogGroups", "logs:FilterLogEvents", "route53:CreateHostedZone", "route53:DeleteHostedZone", "route53:GetHealthCheck", "route53:GetHostedZone", "route53:ListHostedZonesByName", "servicediscovery:CreatePrivateDnsNamespace", "servicediscovery:CreateService", "servicediscovery:DeleteService", "servicediscovery:GetNamespace", "servicediscovery:GetOperation", "servicediscovery:GetService", "servicediscovery:ListNamespaces", "servicediscovery:ListServices", "servicediscovery:UpdateService", "sns:ListTopics" ], "Resource": [ "*" ] }, { "Sid": "SSMPolicy", "Effect": "Allow", "Action": [ "ssm:GetParameter", "ssm:GetParameters", "ssm:GetParametersByPath" ], "Resource": "arn:aws:ssm:*:*:parameter/aws/service/ecs*" }, { "Sid": "ManagedCloudformationResourcesCleanupPolicy", "Effect": "Allow", "Action": [ "ec2:DeleteInternetGateway", "ec2:DeleteRoute", "ec2:DeleteRouteTable", "ec2:DeleteSecurityGroup" ], "Resource": [ "*" ], "Condition": { "StringLike": { "ec2:ResourceTag/aws:cloudformation:stack-name": "EC2ContainerService-*" } } }, { "Sid": "TasksPassRolePolicy", "Action": "iam:PassRole", "Effect": "Allow", "Resource": [ "*" ], "Condition": { "StringLike": { "iam:PassedToService": "ecs-tasks.amazonaws.com" } } }, { "Sid": "InfrastructurePassRolePolicy", "Action": "iam:PassRole", "Effect": "Allow", "Resource": [ "arn:aws:iam::*:role/ecsInfrastructureRole" ], "Condition": { "StringEquals": { "iam:PassedToService": "ecs.amazonaws.com" } } }, { "Sid": "InstancePassRolePolicy", "Action": "iam:PassRole", "Effect": "Allow", "Resource": [ "arn:aws:iam::*:role/ecsInstanceRole*" ], "Condition": { "StringLike": { "iam:PassedToService": [ "ec2.amazonaws.com", "ec2.amazonaws.com.cn" ] } } }, { "Sid": "AutoScalingPassRolePolicy", "Action": "iam:PassRole", "Effect": "Allow", "Resource": [ "arn:aws:iam::*:role/ecsAutoscaleRole*" ], "Condition": { "StringLike": { "iam:PassedToService": [ "application-autoscaling.amazonaws.com", "application-autoscaling.amazonaws.com.cn" ] } } }, { "Sid": "ServiceLinkedRoleCreationPolicy", "Effect": "Allow", "Action": "iam:CreateServiceLinkedRole", "Resource": "*", "Condition": { "StringLike": { "iam:AWSServiceName": [ "ecs.amazonaws.com", "autoscaling.amazonaws.com", "ecs.application-autoscaling.amazonaws.com", "spot.amazonaws.com", "spotfleet.amazonaws.com" ] } } }, { "Sid": "ELBTaggingPolicy", "Effect": "Allow", "Action": [ "elasticloadbalancing:AddTags" ], "Resource": "*", "Condition": { "StringEquals": { "elasticloadbalancing:CreateAction": [ "CreateTargetGroup", "CreateRule", "CreateListener", "CreateLoadBalancer" ] } } } ] }
AmazonECSInfrastructureRolePolicyForVolumes
AmazonECSInfrastructureRolePolicyForVolumes
マネージド IAM ポリシーは、Amazon ECS がユーザーに変わって AWS API コールを行うのに必要なアクセス許可を付与します。このポリシーは、Amazon ECS のタスクとサービスを起動するときにボリューム設定で指定する IAM ロールにアタッチできます。このロールにより、Amazon ECS はタスクにアタッチされたボリュームを管理できます。詳細については、「Amazon ECS インフラストラクチャの IAM ロール」を参照してください。
許可の詳細
AmazonECSInfrastructureRolePolicyForVolumes
管理 IAM ポリシーには以下のアクセス許可が含まれています。最小特権を付与する標準のセキュリティアドバイスに従って、AmazonECSInfrastructureRolePolicyForVolumes
マネージドポリシーをテンプレートとして使用し、必要なアクセス許可のみを含む独自のカスタムポリシーを作成できます。
-
ec2:CreateVolume
— プリンシパルが、AmazonECSCreated
およびAmazonECSManaged
タグでタグ付けされている場合のみ Amazon EBS ボリュームを作成できるようにします。このアクセス許可は、Amazon ECS タスクにアタッチされる Amazon EBS ボリュームを作成し、このポリシーにより Amazon ECS に付与される権限を最小限にするために必要です。 -
ec2:CreateTags
— プリンシパルがec2:CreateVolume
の一部として Amazon EBS ボリュームにタグを追加できるようにします。このアクセス許可は、Amazon ECS がお客様に代わって作成した Amazon EBS ボリュームに顧客指定のタグを追加するために必要です。 -
ec2:AttachVolume
— プリンシパルが Amazon EBS ボリュームを Amazon EC2 インスタンスにアタッチできるようにします。このアクセス許可は、Amazon ECS が関連する Amazon ECS タスクをホストしている Amazon EC2 インスタンスに Amazon EBS ボリュームをアタッチするために必要です。 -
ec2:DescribeVolume
— プリンシパルが Amazon EBS ボリュームに関する情報を取得できるようにします。このアクセス許可は、Amazon EBS ボリュームのライフサイクルを管理するために必要です。 -
ec2:DescribeAvailabilityZones
— プリンシパルがアカウント内のアベイラビリティーゾーンに関する情報を取得できるようにします。これは、EBS ボリュームのライフサイクルを管理するために必要です。 -
ec2:DetachVolume
— プリンシパルが Amazon EBS ボリュームを Amazon EC2 インスタンスからデタッチできるようにします。このアクセス許可は、タスク終了時に、Amazon ECS が関連する Amazon ECS タスクをホストしている Amazon EC2 インスタンスから Amazon EBS ボリュームをデタッチするために必要です。 -
ec2:DeleteVolume
— プリンシパルが Amazon EBS ボリュームを削除できるようにします。このアクセス許可は、Amazon ECS が Amazon ECS タスクで使用されなくなった Amazon EBS ボリュームを削除するために必要です。 -
ec2:DeleteTags
— プリンシパルが Amazon EBS ボリュームからAmazonECSManaged
タグを削除できるようにします。このアクセス許可は、Amazon EBS ボリュームが Amazon ECS ワークロードに関連付けられなくなった後に、Amazon ECS がそのボリュームへのアクセスを削除するために必要です。これは、タスクのシャットダウン後に Amazon EBS ボリュームが削除されない場合にのみ適用されます。
AmazonECSInfrastructureRolePolicyForVolumes
ポリシーの例を次に示します。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "CreateEBSManagedVolume", "Effect": "Allow", "Action": "ec2:CreateVolume", "Resource": "arn:aws:ec2:*:*:volume/*", "Condition": { "ArnLike": { "aws:RequestTag/AmazonECSCreated": "arn:aws:ecs:*:*:task/*" }, "StringEquals": { "aws:RequestTag/AmazonECSManaged": "true" } } }, { "Sid": "TagOnCreateVolume", "Effect": "Allow", "Action": "ec2:CreateTags", "Resource": "arn:aws:ec2:*:*:volume/*", "Condition": { "ArnLike": { "aws:RequestTag/AmazonECSCreated": "arn:aws:ecs:*:*:task/*" }, "StringEquals": { "ec2:CreateAction": "CreateVolume", "aws:RequestTag/AmazonECSManaged": "true" } } }, { "Sid": "DescribeVolumesForLifecycle", "Effect": "Allow", "Action": [ "ec2:DescribeVolumes", "ec2:DescribeAvailabilityZones" ], "Resource": "*" }, { "Sid": "ManageEBSVolumeLifecycle", "Effect": "Allow", "Action": [ "ec2:AttachVolume", "ec2:DetachVolume" ], "Resource": "arn:aws:ec2:*:*:volume/*", "Condition": { "StringEquals": { "aws:ResourceTag/AmazonECSManaged": "true" } } }, { "Sid": "ManageVolumeAttachmentsForEC2", "Effect": "Allow", "Action": [ "ec2:AttachVolume", "ec2:DetachVolume" ], "Resource": "arn:aws:ec2:*:*:instance/*" }, { "Sid": "DeleteEBSManagedVolume", "Effect": "Allow", "Action": "ec2:DeleteVolume", "Resource": "arn:aws:ec2:*:*:volume/*", "Condition": { "ArnLike": { "aws:ResourceTag/AmazonECSCreated": "arn:aws:ecs:*:*:task/*" }, "StringEquals": { "aws:ResourceTag/AmazonECSManaged": "true" } } } ] }
AmazonEC2ContainerServiceforEC2Role
Amazon ECS は、Amazon EC2 インスタンスまたは外部インスタンスに対して、ユーザーに代わってアクションを実行することを Amazon ECS に許可するサービスロールにこのポリシーをアタッチします。
このポリシーは、ユーザーに代わって AWS に呼び出すことを Amazon ECS コンテナインスタンスに許可する管理権限を付与します。詳細については、「Amazon ECS コンテナインスタンスの IAM ロール」を参照してください。
考慮事項
AmazonEC2ContainerServiceforEC2Role
が管理する IAM ポリシーを使用するときは、次の推奨事項と考慮事項を検討する必要があります。
-
最小権限を付与する標準のセキュリティアドバイスに従って、
AmazonEC2ContainerServiceforEC2Role
管理ポリシーを変更して、特定のニーズに合わせることができます。管理ポリシーで付与されたアクセス許可のいずれかがユースケースに必要でない場合、カスタムポリシーを作成し、必要なアクセス許可のみを追加します。例えば、UpdateContainerInstancesState
アクセス許可は、スポットインスタンスのドレインに提供されます。その権限がユースケースに必要ない場合、カスタムポリシーを使用して除外します。詳細については、「許可の詳細」を参照してください。 -
コンテナインスタンスで実行しているコンテナは、インスタンスのメタデータを通じてコンテナインスタンスのロールに提供されているすべての権限にアクセスできます。コンテナインスタンスのロールのアクセス許可は、以下に提供されるマネージド型
AmazonEC2ContainerServiceforEC2Role
ポリシーのアクセス許可のミニマリストに制限することをお勧めします。タスクのコンテナでリストされていない追加のアクセス許可が必要な場合は、独自の IAM ロールを使用してタスクを提供することをお勧めします。詳細については、「Amazon ECS タスクの IAM ロール」を参照してください。コンテナを防ぐには、
docker0
ブリッジからコンテナインスタンスロールに指定されたアクセス許可にアクセスしないようにします。これは、次の iptables コマンドをコンテナインスタンスで実行することで Amazon ECS タスクの IAM ロール が提供するアクセス許可を許可して、コンテナは、有効なこのルールでインスタンスメタデータをクエリできません。このコマンドはデフォルトの Docker のブリッジ設定を前提としており、host
ネットワークモードを使用してコンテナでは動作しません。詳細については、「ネットワークモード」を参照してください。sudo yum install -y iptables-services; sudo iptables --insert DOCKER USER 1 --in-interface docker+ --destination 169.254.169.254/32 --jump DROP
再起動後も有効にするには、コンテナインスタンスでこの iptables ルールを保存する必要があります。Amazon ECS 最適化 AMI の場合は、次のコマンドを使用します。他のオペレーティングシステムについては、その OS のドキュメントを参照してください。
-
Amazon ECS に最適化された Amazon Linux 2 AMI の場合:
sudo iptables-save | sudo tee /etc/sysconfig/iptables && sudo systemctl enable --now iptables
-
Amazon ECS に最適化された Amazon Linux AMI の場合:
sudo service iptables save
-
許可の詳細
AmazonEC2ContainerServiceforEC2Role
管理 IAM ポリシーには以下のアクセス許可が含まれています。最小権限を付与する標準のセキュリティアドバイスに従って、AmazonEC2ContainerServiceforEC2Role
管理ポリシーをガイドとして使用できます。ユースケースの管理ポリシーで付与されているアクセス許可が不要な場合、カスタムポリシーを作成し、必要なアクセス許可のみを追加します。
-
ec2:DescribeTags
— Amazon EC2 インスタンスに関連付けられているタグにプリンシパルが記述することを許可します。このアクセス許可は、リソースタグの伝播をサポートするために Amazon ECS コンテナエージェントによって使用されます。詳細については、「リソースのタグ付け方法」を参照してください。 -
ecs:CreateCluster
— Amazon ECS クラスターの作成をプリンシパルに許可します。このアクセス許可は、Amazon ECS コンテナエージェントによってdefault
クラスターが存在しない場合、このクラスタを作成するために使用されます。 -
ecs:DeregisterContainerInstance
— クラスターから Amazon ECS コンテナインスタンスの登録解除をプリンシパルできるようにします。Amazon ECS コンテナエージェントはこの API 操作を呼び出しませんが、このアクセス許可は後方互換性を確保するために維持されます。 -
ecs:DiscoverPollEndpoint
— このアクションは、Amazon ECS コンテナエージェントが更新のポーリングに使用するエンドポイントを返します。 -
ecs:Poll
— Amazon ECS コンテナエージェントが Amazon ECS コントロールプレーンと通信し、タスクの状態の変更を報告できるようにします。 -
ecs:RegisterContainerInstance
— プリンシパルがコンテナインスタンスをクラスターに登録できるようにします。このアクセス許可は、Amazon ECS コンテナエージェントが Amazon EC2 インスタンスをクラスターに登録し、リソースタグの伝播をサポートするために使用されます。 -
ecs:StartTelemetrySession
— Amazon ECS コンテナエージェントが Amazon ECS コントロールプレーンと通信し、各コンテナおよびタスクのヘルス情報とメトリックスをレポートできるようにします。 -
ecs:TagResource
– Amazon ECS コンテナエージェントが作成時にクラスターにタグを付け、コンテナインスタンスがクラスターに登録されたときにタグ付けすることを許可します。 -
ecs:UpdateContainerInstancesState
— プリンシパルが Amazon ECS コンテナインスタンスのステータスを変更できるようにします。このアクセス許可は、スポットインスタンスのドレイン用に Amazon ECS コンテナエージェントによって使用されます。 -
ecs:Submit*
— これにはSubmitAttachmentStateChanges
、SubmitContainerStateChange
、およびSubmitTaskStateChange
API アクションが含まれています。これらは、Amazon ECS コンテナエージェントによって使用され、各リソースの状態変化を Amazon ECS コントロールプレーンに報告します。SubmitContainerStateChange
アクセス許可は、Amazon ECS コンテナエージェントによって使用されなくなりますが、後方互換性を確保するために維持されます。 -
ecr:GetAuthorizationToken
— プリンシパルが認証トークンの取得できるようにします。認証トークンは IAM 認証情報を表し、IAM プリンシパルによってアクセスされる Amazon ECR レジストリへのアクセスに使用できます。受け取る認証トークンは 12 時間有効です。 -
ecr:BatchCheckLayerAvailability
— コンテナイメージが Amazon ECR プライベートリポジトリにプッシュされると、イメージレイヤーごとにすでにプッシュされているかどうかが確認されます。その場合、そのイメージレイヤーはスキップされます。 -
ecr:GetDownloadUrlForLayer
— コンテナイメージが Amazon ECR プライベートリポジトリからプルされると、この API は、キャッシュされていない各イメージレイヤーに対して 1 回呼び出されます。 -
ecr:BatchGetImage
— コンテナイメージが Amazon ECR プライベートリポジトリから取得されると、この API が 1 回呼び出され、イメージマニフェストが取得されます。 -
logs:CreateLogStream
— プリンシパルが、指定したロググループの CloudWatch Logs ストリームを作成できるようにします。 -
logs:PutLogEvents
— ログイベントの Batch を指定されたログストリームにアップロードすることをプリンシパルに許可します。
AmazonEC2ContainerServiceforEC2Role
ポリシーの例を次に示します。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DescribeTags", "ecs:CreateCluster", "ecs:DeregisterContainerInstance", "ecs:DiscoverPollEndpoint", "ecs:Poll", "ecs:RegisterContainerInstance", "ecs:StartTelemetrySession", "ecs:UpdateContainerInstancesState", "ecs:Submit*", "ecr:GetAuthorizationToken", "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "*" }, { "Effect": "Allow", "Action": "ecs:TagResource", "Resource": "*", "Condition": { "StringEquals": { "ecs:CreateAction": [ "CreateCluster", "RegisterContainerInstance" ] } } } ] }
AmazonEC2ContainerServiceEventsRole
このポリシーは、Amazon EventBridge(旧 CloudWatch Events)がユーザーに代わってタスクを実行できるようにするアクセス権限を付与します。このポリシーは、スケジュールされたタスクの作成時に指定された IAM ロールにアタッチできます。詳細については、「Amazon ECS EventBridge IAM ロール」を参照してください。
アクセス許可の詳細
このポリシーには、以下のアクセス許可が含まれています。
-
ecs
— サービス内のプリンシパルが Amazon ECS RunTask API を呼び出すことを許可します。Amazon ECS RunTask API を呼び出すときに、サービスのプリンシパルがタグ (TagResource
) を追加するのを許可します。 -
iam
— IAM サービスロールを Amazon ECS タスクに渡すことを許可します。
AmazonEC2ContainerServiceEventsRole
ポリシーの例を次に示します。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["ecs:RunTask"], "Resource": ["*"] }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": ["*"], "Condition": { "StringLike": {"iam:PassedToService": "ecs-tasks.amazonaws.com"} } }, { "Effect": "Allow", "Action": "ecs:TagResource", "Resource": "*", "Condition": { "StringEquals": { "ecs:CreateAction": ["RunTask"] } } } ] }
AmazonECSTaskExecutionRolePolicy
AmazonECSTaskExecutionRolePolicy
管理 IAM ポリシーは、Amazon ECS コンテナエージェントおよび AWS Fargate コンテナエージェントに必要なアクセス権限を付与し、ユーザーに代わって AWS API コールを作成します。このポリシーは、タスク実行 IAM ロールに追加できます。詳細については、「Amazon ECS タスク実行IAM ロール」を参照してください。
許可の詳細
AmazonECSTaskExecutionRolePolicy
管理 IAM ポリシーには以下のアクセス許可が含まれています。最小権限を付与する標準のセキュリティアドバイスに従って、AmazonECSTaskExecutionRolePolicy
管理ポリシーをガイドとして使用できます。管理ポリシーで付与されているアクセス許可のいずれかがユースケースに必要でない場合、カスタムポリシーを作成し、必要なアクセス許可のみを追加します。
-
ecr:GetAuthorizationToken
— プリンシパルが認証トークンの取得できるようにします。認証トークンは IAM 認証情報を表し、IAM プリンシパルによってアクセスされる Amazon ECR レジストリへのアクセスに使用できます。受け取る認証トークンは 12 時間有効です。 -
ecr:BatchCheckLayerAvailability
— コンテナイメージが Amazon ECR プライベートリポジトリにプッシュされると、イメージレイヤーごとにすでにプッシュされているかどうかが確認されます。プッシュされた場合、そのイメージレイヤーはスキップされます。 -
ecr:GetDownloadUrlForLayer
— コンテナイメージが Amazon ECR プライベートリポジトリからプルされると、この API は、キャッシュされていない各イメージレイヤーに対して 1 回呼び出されます。 -
ecr:BatchGetImage
— コンテナイメージが Amazon ECR プライベートリポジトリから取得されると、この API が 1 回呼び出され、イメージマニフェストが取得されます。 -
logs:CreateLogStream
— プリンシパルが、指定したロググループの CloudWatch Logs ストリームを作成できるようにします。 -
logs:PutLogEvents
— ログイベントの Batch を指定されたログストリームにアップロードすることをプリンシパルに許可します。
AmazonECSTaskExecutionRolePolicy
ポリシーの例を次に示します。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecr:GetAuthorizationToken", "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "*" } ] }
AmazonECSServiceRolePolicy
AmazonECSServiceRolePolicy
マネージド IAM ポリシーにより、Amazon Elastic Container Service でクラスターを管理できるようになります。このポリシーは、タスク実行 IAM ロールに追加できます。詳細については、「Amazon ECS タスク実行IAM ロール」を参照してください。
許可の詳細
AmazonECSServiceRolePolicy
管理 IAM ポリシーには以下のアクセス許可が含まれています。最小権限を付与する標準のセキュリティアドバイスに従って、AmazonECSServiceRolePolicy
管理ポリシーをガイドとして使用できます。管理ポリシーで付与されているアクセス許可のいずれかがユースケースに必要でない場合、カスタムポリシーを作成し、必要なアクセス許可のみを追加します。
-
autoscaling
— プリンシパルが Amazon EC2 Auto Scaling リソースを作成、管理、記述できるようにします。これは、クラスターのオートスケーリング機能を使用する際、Amazon EC2 Auto Scaling グループを管理する場合に必要です。 -
autoscaling-plans
— プリンシパルが、オートスケーリングプランの作成、削除、記述を行えるようにします。 -
cloudwatch
— Amazon CloudWatch アラームの作成、管理、記述をプリンシパルに許可します。 -
ec2
— プリンシパルが Amazon EC2 インスタンスを実行し、ネットワークインターフェイスとタグの作成と管理を行えるようにします。 -
elasticloadbalancing
— プリンシパルが Elastic Load Balancing ロードバランサーを作成、説明、削除できるようにします。プリンシパルはターゲットグループを追加したり、記述したりすることもできるようになります。 -
logs
— プリンシパルが Amazon CloudWatch Logs ロググループを作成および記述できるようにします。プリンシパルは、これらのロググループのログイベントを一覧表示することもできます。 -
route53
— プリンシパルが Amazon Route 53 ホストゾーンの作成、管理、削除できるようにします。プリンシパルは、Amazon Route 53 ヘルスチェックの設定と情報を表示することもできます。ホストゾーンの設定の詳細については、「ホストゾーンの使用」を参照してください。 -
servicediscovery
— プリンシパルが AWS Cloud Map サービスを作成、管理、削除し、プライベート DNS 名前空間を作成できるようにします。 -
events
— プリンシパルが Amazon EventBridge ルールとそのターゲットを作成、管理、削除できるようにします。
AmazonECSServiceRolePolicy
ポリシーの例を次に示します。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ECSTaskManagement", "Effect": "Allow", "Action": [ "ec2:AttachNetworkInterface", "ec2:CreateNetworkInterface", "ec2:CreateNetworkInterfacePermission", "ec2:DeleteNetworkInterface", "ec2:DeleteNetworkInterfacePermission", "ec2:Describe*", "ec2:DetachNetworkInterface", "elasticloadbalancing:DeregisterInstancesFromLoadBalancer", "elasticloadbalancing:DeregisterTargets", "elasticloadbalancing:Describe*", "elasticloadbalancing:RegisterInstancesWithLoadBalancer", "elasticloadbalancing:RegisterTargets", "route53:ChangeResourceRecordSets", "route53:CreateHealthCheck", "route53:DeleteHealthCheck", "route53:Get*", "route53:List*", "route53:UpdateHealthCheck", "servicediscovery:DeregisterInstance", "servicediscovery:Get*", "servicediscovery:List*", "servicediscovery:RegisterInstance", "servicediscovery:UpdateInstanceCustomHealthStatus" ], "Resource": "*" }, { "Sid": "AutoScaling", "Effect": "Allow", "Action": [ "autoscaling:Describe*" ], "Resource": "*" }, { "Sid": "AutoScalingManagement", "Effect": "Allow", "Action": [ "autoscaling:DeletePolicy", "autoscaling:PutScalingPolicy", "autoscaling:SetInstanceProtection", "autoscaling:UpdateAutoScalingGroup", "autoscaling:PutLifecycleHook", "autoscaling:DeleteLifecycleHook", "autoscaling:CompleteLifecycleAction", "autoscaling:RecordLifecycleActionHeartbeat" ], "Resource": "*", "Condition": { "Null": { "autoscaling:ResourceTag/AmazonECSManaged": "false" } } }, { "Sid": "AutoScalingPlanManagement", "Effect": "Allow", "Action": [ "autoscaling-plans:CreateScalingPlan", "autoscaling-plans:DeleteScalingPlan", "autoscaling-plans:DescribeScalingPlans", "autoscaling-plans:DescribeScalingPlanResources" ], "Resource": "*" }, { "Sid": "EventBridge", "Effect": "Allow", "Action": [ "events:DescribeRule", "events:ListTargetsByRule" ], "Resource": "arn:aws:events:*:*:rule/ecs-managed-*" }, { "Sid": "EventBridgeRuleManagement", "Effect": "Allow", "Action": [ "events:PutRule", "events:PutTargets" ], "Resource": "*", "Condition": { "StringEquals": { "events:ManagedBy": "ecs.amazonaws.com" } } }, { "Sid": "CWAlarmManagement", "Effect": "Allow", "Action": [ "cloudwatch:DeleteAlarms", "cloudwatch:DescribeAlarms", "cloudwatch:PutMetricAlarm" ], "Resource": "arn:aws:cloudwatch:*:*:alarm:*" }, { "Sid": "ECSTagging", "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:*:*:network-interface/*" }, { "Sid": "CWLogGroupManagement", "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:DescribeLogGroups", "logs:PutRetentionPolicy" ], "Resource": "arn:aws:logs:*:*:log-group:/aws/ecs/*" }, { "Sid": "CWLogStreamManagement", "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:DescribeLogStreams", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:*:*:log-group:/aws/ecs/*:log-stream:*" }, { "Sid": "ExecuteCommandSessionManagement", "Effect": "Allow", "Action": [ "ssm:DescribeSessions" ], "Resource": "*" }, { "Sid": "ExecuteCommand", "Effect": "Allow", "Action": [ "ssm:StartSession" ], "Resource": [ "arn:aws:ecs:*:*:task/*", "arn:aws:ssm:*:*:document/AmazonECS-ExecuteInteractiveCommand" ] }, { "Sid": "CloudMapResourceCreation", "Effect": "Allow", "Action": [ "servicediscovery:CreateHttpNamespace", "servicediscovery:CreateService" ], "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "aws:TagKeys": [ "AmazonECSManaged" ] } } }, { "Sid": "CloudMapResourceTagging", "Effect": "Allow", "Action": "servicediscovery:TagResource", "Resource": "*", "Condition": { "StringLike": { "aws:RequestTag/AmazonECSManaged": "*" } } }, { "Sid": "CloudMapResourceDeletion", "Effect": "Allow", "Action": [ "servicediscovery:DeleteService" ], "Resource": "*", "Condition": { "Null": { "aws:ResourceTag/AmazonECSManaged": "false" } } }, { "Sid": "CloudMapResourceDiscovery", "Effect": "Allow", "Action": [ "servicediscovery:DiscoverInstances", "servicediscovery:DiscoverInstancesRevision" ], "Resource": "*" } ] }
AmazonECSInfrastructureRolePolicyForServiceConnectTransportLayerSecurity
お客様に代わって Amazon ECS Service Connect TLS 機能を管理するために必要な AWS Private Certificate Authority、Secrets Manager、およびその他の AWS サービスへの管理アクセスを提供します。
許可の詳細
AmazonECSInfrastructureRolePolicyForServiceConnectTransportLayerSecurity
管理 IAM ポリシーには以下のアクセス許可が含まれています。最小権限を付与する標準のセキュリティアドバイスに従って、AmazonECSInfrastructureRolePolicyForServiceConnectTransportLayerSecurity
管理ポリシーをガイドとして使用できます。管理ポリシーで付与されているアクセス許可のいずれかがユースケースに必要でない場合、カスタムポリシーを作成し、必要なアクセス許可のみを追加します。
-
secretsmanager:CreateSecret
— プリンシパルがシークレットを作成できるようにします。これは Service Connect TLS に必要であり、Amazon ECS はお客様の Secrets Manager にある顧客プライベートキーの機密性を維持します。 -
secretsmanager:TagResource
— プリンシパルが作成されたシークレットにタグをアタッチできるようにします。Amazon ECS がお客様に代わってシークレットを作成し、リソースにタグをアタッチするため、Service Connect TLS にはこれが必要です。これらのタグを使用すると、お客様はマネージドシークレットを簡単に識別し、これらのシークレットに対するアクションを制限できます。 -
secretsmanager:DescribeSecret
— プリンシパルがシークレットを記述し、現在のバージョンステージを取得できるようにします。Amazon ECS は、Amazon ECS Service Connect TLS マテリアルのローテーションを行う必要があります。 -
secretsmanager:UpdateSecret
— プリンシパルにシークレットの更新を許可します。Amazon ECS は、Amazon ECS Service Connect TLS マテリアルのローテーションを行い、シークレットを新しいマテリアルで更新する必要があります。 -
secretsmanager:GetSecretValue
— プリンシパルにシークレット値の取得を許可します。Amazon ECS は、Amazon ECS Service Connect TLS マテリアルのローテーションを行う必要があります。 -
secretsmanager:PutSecretValue
— プリンシパルにシークレット値の入力を許可します。Amazon ECS は、Amazon ECS Service Connect TLS マテリアルのローテーションを行う必要があります。 -
secretsmanager:UpdateSecretVersionStage
— プリンシパルにシークレットバージョンステージの更新を許可します。Amazon ECS は、Amazon ECS Service Connect TLS マテリアルのローテーションを行う必要があります。 -
acm-pca:IssueCertificate
— プリンシパルが Amazon ECS Service Connect TLS のEnd entity certificate
に IssueCertificate を呼び出すことを許可します。ECS がお客様のアップストリームサービスの証明書を生成するために、これが必要です。 -
acm-pca:GetCertificate
— プリンシパルが Amazon ECS Service Connect TLS のEnd entity certificate
に GetCertificate を呼び出すことを許可します。 -
acm-pca:GetCertificateAuthorityCertificate
— プリンシパルが認証局証明書を取得できるようにします。お客様のダウンストリームサービスがアップストリームのエンドエンティティ証明書を信頼できるようにするために、Amazon ECS Service Connect TLS はこれを必要とします。 -
acm-pca:DescribeCertificateAuthority
— プリンシパルが認証局に関する詳細を取得できるようにします。Amazon ECS Service Connect TLS が署名アルゴリズムなどの情報を再利用して CSR (証明書署名リクエスト) を作成するために、これが必要です。
AmazonECSInfrastructureRolePolicyForServiceConnectTransportLayerSecurity
ポリシーの例を次に示します。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "CreateSecret", "Effect": "Allow", "Action": "secretsmanager:CreateSecret", "Resource": "arn:aws:secretsmanager:*:*:secret:ecs-sc!*", "Condition": { "ArnLike": { "aws:RequestTag/AmazonECSCreated": [ "arn:aws:ecs:*:*:service/*/*", "arn:aws:ecs:*:*:task-set/*/*" ] }, "StringEquals": { "aws:RequestTag/AmazonECSManaged": "true", "aws:ResourceAccount": "${aws:PrincipalAccount}" } } }, { "Sid": "TagOnCreateSecret", "Effect": "Allow", "Action": "secretsmanager:TagResource", "Resource": "arn:aws:secretsmanager:*:*:secret:ecs-sc!*", "Condition": { "ArnLike": { "aws:RequestTag/AmazonECSCreated": [ "arn:aws:ecs:*:*:service/*/*", "arn:aws:ecs:*:*:task-set/*/*" ] }, "StringEquals": { "aws:RequestTag/AmazonECSManaged": "true", "aws:ResourceAccount": "${aws:PrincipalAccount}" } } }, { "Sid": "RotateTLSCertificateSecret", "Effect": "Allow", "Action": [ "secretsmanager:DescribeSecret", "secretsmanager:UpdateSecret", "secretsmanager:GetSecretValue", "secretsmanager:PutSecretValue", "secretsmanager:DeleteSecret", "secretsmanager:RotateSecret", "secretsmanager:UpdateSecretVersionStage" ], "Resource": "arn:aws:secretsmanager:*:*:secret:ecs-sc!*", "Condition": { "StringEquals": { "secretsmanager:ResourceTag/aws:secretsmanager:owningService": "ecs-sc", "aws:ResourceAccount": "${aws:PrincipalAccount}" } } }, { "Sid": "ManagePrivateCertificateAuthority", "Effect": "Allow", "Action": [ "acm-pca:GetCertificate", "acm-pca:GetCertificateAuthorityCertificate", "acm-pca:DescribeCertificateAuthority" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/AmazonECSManaged": "true" } } }, { "Sid": "ManagePrivateCertificateAuthorityForIssuingEndEntityCertificate", "Effect": "Allow", "Action": [ "acm-pca:IssueCertificate" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/AmazonECSManaged": "true", "acm-pca:TemplateArn":"arn:aws:acm-pca:::template/EndEntityCertificate/V1" } } } ] }
AWSApplicationAutoscalingECSServicePolicy
IAM エンティティに AWSApplicationAutoscalingECSServicePolicy
をアタッチすることはできません。このポリシーは、ユーザーに代わって Application Auto Scaling がアクションを実行することを許可する、サービスにリンクされたロールにアタッチされます。詳細については、「Application Auto Scaling のサービスにリンクされたロール」を参照してください。
AWSCodeDeployRoleForECS
IAM エンティティに AWSCodeDeployRoleForECS
をアタッチすることはできません。このポリシーは、ユーザーに代わって CodeDeploy がアクションを実行することを許可する、サービスにリンクされたロールにアタッチされます。詳細については、AWS CodeDeploy ユーザーガイドの「CodeDeploy のサービスロールを作成する」を参照してください。
AWSCodeDeployRoleForECSLimited
IAM エンティティに AWSCodeDeployRoleForECSLimited
をアタッチすることはできません。このポリシーは、ユーザーに代わって CodeDeploy がアクションを実行することを許可する、サービスにリンクされたロールにアタッチされます。詳細については、AWS CodeDeploy ユーザーガイドの「CodeDeploy のサービスロールを作成する」を参照してください。
Amazon ECS での AWS 管理ポリシーに関する更新
Amazon ECS 向けの AWS 管理ポリシーについて、このサービスがこれらの変更の追跡を開始して以降行われた更新の詳細情報を示します。このページの変更に関する自動通知を入手するには、Amazon ECS ドキュメントの履歴ページから、RSS フィードにサブスクライブしてください。
変更 | 説明 | 日付 |
---|---|---|
アクセス許可を AmazonECS_FullAccess に追加しました。 |
AmazonECS_FullAccess ポリシーが更新され、ecsInfrastructureRole という名前のロールの IAM ロールの iam:PassRole アクセス許可が追加されました。これは、AWS Management Console によって作成されたデフォルトの IAM ロールで、Amazon ECS が ECS タスクにアタッチされた Amazon EBS ボリュームを管理できる ECS インフラストラクチャロールとして使用されることを目的としています。 |
2024 年 8 月 13 日 |
新しく、AmazonECSInfrastructureRolePolicyForServiceConnectTransportLayerSecurity ポリシーを追加しました。 |
新しく、AmazonECSInfrastructureRolePolicyForServiceConnectTransportLayerSecurity ポリシーを追加しました。これは AWS KMS、AWS Private Certificate Authority、Secrets Manager に管理アクセスを付与し、Amazon ECS Service Connect TLS 機能が正常に動作できるようにするものです。 |
2024 年 1 月 22 日 |
新しいポリシー AmazonECSInfrastructureRolePolicyForVolumes を追加しました。 |
AmazonECSInfrastructureRolePolicyForVolumes ポリシーが追加されました。このポリシーにより、Amazon ECS が AWS API コールを行い、Amazon ECS ワークロードに関連付けられた Amazon EBS ボリュームを管理するために必要な権限が付与されます。 |
2024 年 1 月 11 日 |
AmazonECSServiceRolePolicy にアクセス許可を追加する |
AmazonECSServiceRolePolicy マネージド IAM ポリシーが更新され、新しい events アクセス許可および、追加権限 autoscaling 、autoscaling-plans が追加されました。 |
2023 年 12 月 4 日 |
許可を AmazonEC2ContainerServiceEventsRole に追加する |
AmazonECSServiceRolePolicy マネージド IAM ポリシーが AWS Cloud Map DiscoverInstancesRevision API 操作へのアクセスを許可するように更新されました。 |
2023 年 10 月 4 日 |
許可を AmazonEC2ContainerServiceforEC2Role に追加する |
AmazonEC2ContainerServiceforEC2Role ポリシーが変更され、新しく作成されたクラスターと登録されたコンテナインスタンスのみに許可を制限する条件を含む ecs:TagResource 許可が追加されました。 |
2023 年 3 月 6 日 |
AmazonECS_FullAccess へのアクセス許可を追加する |
AmazonECS_FullAccess ポリシーが変更され、elasticloadbalancing:AddTags 権限が追加されました。これには、新しく作成されたロードバランサー、ターゲットグループ、ルール、および作成されたリスナーのみにアクセス許可を制限する条件が含まれています。この権限では、既に作成されている Elastic Load Balancing リソースにタグを追加することはできません。 |
2023 年 1 月 4 日 |
Amazon ECS が変更の追跡を開始しました。 |
Amazon ECS が AWS 管理ポリシーの変更の追跡を開始しました。 |
2021 年 6 月 8 日 |