ECS タスクの IAM ロールを確認

ECS の実行ロールとアプリケーションのタスクロールを用途に応じて指定します。

説明

ExecutionRoleArn はイメージ取得やログ送信など ECS エージェントの処理に使われ、TaskRoleArn はコンテナー内のアプリケーションによる AWS API 呼び出しに使われます。必要なロールは、タスクが使う機能によって異なります。

想定される影響

必要なロールがないと、タスクの起動や AWS リソースへのアクセスに失敗することがあります。長期アクセスキーで回避すると、認証情報の漏えいリスクが高まります。

対処方法

利用する機能に必要な実行ロールを指定し、アプリケーションが AWS API を呼び出す場合は最小権限のタスクロールを追加してください。実行ロールの権限がそのままアプリケーションに渡されるわけではありません。

例

この抜粋では、両方のロールが必要なタスクにそれぞれを設定します。ロールの信頼ポリシーと権限の定義は省略しています。

変更前

yaml
Resources:
  ECSService:
    Type: AWS::ECS::Service
    Properties:
      TaskDefinition: !Ref ECSTaskDefinition

  ECSTaskDefinition:
    Type: AWS::ECS::TaskDefinition
    Properties:
      Family: app
      NetworkMode: awsvpc
      ContainerDefinitions:
        - Name: app
          Image: example/app:latest

変更後

yaml
Resources:
  ECSService:
    Type: AWS::ECS::Service
    Properties:
      TaskDefinition: !Ref ECSTaskDefinition

  ECSTaskDefinition:
    Type: AWS::ECS::TaskDefinition
    Properties:
      Family: app
      NetworkMode: awsvpc
      ExecutionRoleArn: !Ref TaskExecutionRole
      TaskRoleArn: !Ref AppTaskRole
      ContainerDefinitions:
        - Name: app
          Image: example/app:latest

参考資料