AWS ECS 서비스 역할 권한 점검

ECS가 로드 밸런서를 관리할 때 사용하는 역할에 필요한 권한만 부여하세요.

설명

ECS 서비스의 iam_role에 과도한 관리 권한을 부여하면 서비스가 필요한 범위를 넘어 AWS 리소스를 조작할 수 있습니다. 역할 이름만 바꾸는 대신 실제 권한 정책과 신뢰 정책을 검토해야 합니다.

이 역할은 ECS가 로드 밸런서에 호출할 때 사용하는 서비스 역할이며, 애플리케이션의 태스크 역할이나 태스크 실행 역할과 다릅니다. awsvpc 네트워크 모드에서는 iam_role을 지정하지 않고 서비스 연결 역할을 사용합니다.

잠재적 영향

  • 잘못된 서비스 설정이나 허용되지 않은 역할 사용으로 불필요한 관리 작업이 가능해질 수 있습니다.
  • 과도한 정책 때문에 역할 오용의 영향 범위가 확대될 수 있습니다.

해결 방법

서비스 역할에서 불필요한 관리 권한을 제거하고 ECS에 필요한 작업과 리소스만 허용하세요. 신뢰 정책도 확인하세요. 지원되는 구성에서는 ECS 서비스 연결 역할을 사용하고, 변경 후 로드 밸런서 등록과 서비스 상태를 시험하세요. 애플리케이션의 태스크 역할 권한은 별도로 검토하세요.

예시

로드 밸런서와 함께 사용하는 비-awsvpc 서비스의 역할 설정 발췌입니다. 클러스터, 태스크 정의, 로드 밸런서 블록과 역할 정책은 생략했습니다.

변경 전

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 역할의 정책이 필요한 권한만 허용하는지도 확인해야 합니다.

참조