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