AWS ECS サービスロールの権限確認

ECS によるロードバランサー管理に必要な権限だけを付与してください。

説明

ECS サービスの iam_role に過剰な管理権限を付与すると、必要な範囲を超える AWS リソースの操作が可能になるおそれがあります。ロール名を変えるだけでなく、実際の権限ポリシーと信頼ポリシーを確認する必要があります。

このサービスロールは ECS がロードバランサーを呼び出すためのもので、アプリケーションのタスクロールやタスク実行ロールとは異なります。awsvpc ネットワークモードでは iam_role を指定せず、サービスにリンクされたロールを使います。

想定される影響

  • 誤ったサービス設定や許可されていないロール使用によって、不要な管理操作が可能になるおそれがあります。
  • 過剰なポリシーで、ロールが悪用された場合の影響が拡大する可能性があります。

対処方法

サービスロールから不要な管理権限を削除し、ECS に必要な操作とリソースだけを許可してください。信頼ポリシーも確認してください。対応する構成ではサービスにリンクされたロールを使用し、変更後にロードバランサーへの登録とサービスの正常性を試験してください。アプリケーションのタスクロール権限は別途確認してください。

例

ロードバランサーを使う非 awsvpc サービスのロール設定の抜粋です。クラスター、タスク定義、load_balancer ブロック、ロールのポリシーは省略しています。

変更前

hcl
resource "aws_ecs_service" "ecs_service" {
  name            = "mongodb"
  cluster         = aws_ecs_cluster.foo.id
  task_definition = aws_ecs_task_definition.mongo.arn
  desired_count   = 3
  iam_role        = "admin"
}

admin という名前のロールを参照しています。実際の管理権限は、そのロールのポリシーで確認してください。

変更後

hcl
resource "aws_ecs_service" "ecs_service" {
  name            = "mongodb"
  cluster         = aws_ecs_cluster.foo.id
  task_definition = aws_ecs_task_definition.mongo.arn
  desired_count   = 3
  iam_role        = aws_iam_role.foo.arn
}

ロール ARN の参照に変更しています。foo ロールのポリシーが必要な権限だけを許可していることも確認してください。

参考資料