説明
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