Amazon ECS タスク実行 IAM ロール - Amazon Elastic Container Service

「翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。」

Amazon ECS タスク実行 IAM ロール

タスク実行ロールは、ユーザーに代わって AWS API コールを実行するためのアクセス許可を Amazon ECS コンテナと Fargate エージェントに付与します。タスク実行 IAM ロールは、タスクの要件に応じて必要です。さまざまな目的とサービスのタスク実行ロールを、アカウントに複数関連付けることができます。

以下に示しているのは、タスク実行 IAM ロールの一般的なユースケースです。

注記

タスク実行ロールは Amazon ECS コンテナエージェントバージョン 1.16.0 以降でサポートされています。

Amazon ECS は、AmazonECSTaskExecutionRolePolicy という管理ポリシーを提供します。このポリシーには、上記の一般的ユースケースで必要なアクセス許可が含まれています。以下に示す特殊なユースケースのために、タスク実行ロールへのインラインポリシーの追加が必要になる場合があります。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecr:GetAuthorizationToken", "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "*" } ] }

Amazon ECS タスク実行ロールは、Amazon ECS コンソールの最初の実行時に自動的に作成されます。ただし、タスクのためのマネージド型 IAM ポリシーを手動でアタッチして、 Amazon ECS に今後の新機能および機能拡張のためのアクセス許可を追加できるようにする必要があります。次の手順を使用してアカウントにすでに Amazon ECS タスク実行のロールが存在するか確認し、必要に応じてマネージド IAM ポリシーをアタッチすることができます。

IAM コンソールで ecsTaskExecutionRole を確認するには

  1. IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

  2. ナビゲーションペインで [ロール] を選択します。

  3. ロールのリストで ecsTaskExecutionRole を検索します。ロールが存在しない場合は、「タスク実行 IAM ロールの作成」を参照してください。ロールが存在する場合は、そのロールを選択して、アタッチされているポリシーを表示します。

  4. [アクセス許可] タブで、AmazonECSTaskExecutionRolePolicy マネージドポリシーがロールにアタッチされていることを確認します。ポリシーがアタッチされている場合、Amazon ECS タスク実行ロールは適切に設定されています。そうでない場合、次のサブステップに従ってポリシーをアタッチします。

    1. [Attach policies (ポリシーをアタッチします)] を選択します。

    2. [フィルター] に AmazonECSTaskExecutionRolePolicy と入力して、アタッチする利用可能なポリシーを絞り込みます。

    3. [AmazonECSTaskExecutionRolePolicy] ポリシーの左にあるボックスをオンにし、[Attach policy] を選択します。

  5. [信頼関係]、[信頼関係の編集] の順に選択します。

  6. 信頼関係に以下のポリシーが含まれていることを確認します。信頼関係が以下のポリシーと一致する場合、[Cancel] を選択します。信頼関係が一致しない場合、ポリシーを [Policy Document] ウィンドウにコピーし、[Update Trust Policy] を選択します。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "ecs-tasks.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

タスク実行 IAM ロールの作成

アカウントにまだタスク実行ロールがない場合は、次のステップに従ってロールを作成します。

ecsTaskExecutionRole IAM ロールを作成するには

  1. IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

  2. ナビゲーションペインで [Roles]、[Create role] の順に選択します。

  3. [信頼されたエンティティの種類を選択] セクションで、[Elastic Container Service] を選択します。

  4. [ユースケースの選択] セクションで、[Elastic Container Service のタスク]、[次の手順: アクセス許可] の順に選択します。

  5. [アクセス権限ポリシーをアタッチする] セクションで AmazonECSTaskExecutionRolePolicy を検索してポリシーを選択し、[Next: Review (次の手順: 確認)] を選択します。

  6. [Role Name] に ecsTaskExecutionRole と入力し、[Create role] を選択します。

プライベートレジストリの認証で必須の IAM アクセス許可

プライベートレジストリ認証機能を使用するには、Amazon ECS タスクの実行ロールが必要です。このロールを使用して、コンテナエージェントでコンテナイメージをプルできます。詳細については、「タスクのプライベートレジストリの認証」を参照してください。

作成したシークレットにアクセスできるように、インラインポリシーとして以下のアクセス許可をタスクの実行ロールに手動で追加する必要があります。詳細については、「IAM ポリシーの追加と削除」を参照してください。

  • secretsmanager:GetSecretValue

  • kms:Decrypt— カスタムの KMS キーを使用するが、デフォルトのキーは使用しない場合にのみ必須。そのカスタムキーの ARN はリソースとして追加されている必要があります。

アクセス許可を追加するインラインポリシーの例を以下に示します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Decrypt", "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:<region>:<aws_account_id>:secret:secret_name", "arn:aws:kms:<region>:<aws_account_id>:key/key_id" ] } ] }

Amazon ECS シークレットで必須の IAM アクセス許可

Amazon ECS シークレット機能を使用するには、Amazon ECS タスク実行ロールを持っていて、タスク定義でそのロールを参照する必要があります。このロールにより、必要な AWS Systems Manager または Secrets Manager のリソースをコンテナエージェントがプルできます。詳細については、「機密データの指定」を参照してください。

作成した AWS Systems Manager パラメータストア パラメータにアクセスできるように、タスク実行ロールに以下のアクセス許可をインラインポリシーとして手動で追加する必要があります。詳細については、「IAM ポリシーの追加と削除」を参照してください。

  • ssm:GetParameters — Systems Manager パラメータストアのパラメータをタスク定義で参照する場合は必須です。

  • secretsmanager:GetSecretValue — Secrets Manager シークレットを直接参照するか、Systems Manager パラメータストアのパラメータがタスク定義で Secrets Manager シークレットを参照している場合は必須です。

  • kms:Decrypt— シークレットでカスタムの KMS キーを使用するが、デフォルトのキーは使用しない場合にのみ必須です。そのカスタムキーの ARN はリソースとして追加されている必要があります。

次の例のインラインポリシーでは必須アクセス許可を追加しています。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue", "kms:Decrypt" ], "Resource": [ "arn:aws:secretsmanager:<region>:<aws_account_id>:secret:<secret_name>", "arn:aws:kms:<region>:<aws_account_id>:key/<key_id>" ] } ] }

インターネットエンドポイントを介して Amazon ECR イメージをプルする Fargate タスク用の IAM アクセス許可 (オプション)

Amazon ECR がインターフェイス VPC エンドポイントを使用するように設定されているときに、Amazon ECR からイメージをプルする Fargate 起動タイプを使用するタスクを起動するときは、特定の VPC または VPC エンドポイントへのアクセスにタスクを制限できます。この操作を行うには、IAM 条件キーを使用するタスクのタスク実行ロールを作成します。

次の IAM グローバル条件キーを使用して、特定の VPC または VPC エンドポイントへのアクセスを制限します。詳細については、「AWS グローバル条件コンテキストキー」を参照してください。

  • aws:SourceVpc — 特定の VPC へのアクセスを制限します。

  • aws:SourceVpce — 特定の VPC エンドポイントへのアクセスを制限します。

次のタスク実行ロールポリシーは、条件キーを追加する方法の例を示しています。

重要

ecr:GetAuthorizationToken API アクションには、aws:sourceVpc または aws:sourceVpce 条件キーを適用することができません。これは、GetAuthorizationToken API コールは、タスクの Elastic Network Interface ではなく、AWS Fargate が所有する Elastic Network Interface を経由するためです。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecr:GetAuthorizationToken", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage" ], "Resource": "*", "Condition": { "StringEquals": { "aws:sourceVpce": "vpce-xxxxxx", "aws:sourceVpc": "vpc-xxxxx" } } } ] }