説明
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 ロールのポリシーが必要な権限だけを許可していることも確認してください。