설명
Fargate 기반 ECS 서비스에 공인 IP를 직접 부여하면 라우팅과 보안 그룹이 허용할 때 인터넷에서 태스크에 접근할 수 있습니다. 공인 IP 할당은 서비스의 통신 요구에 맞게 결정하세요.
잠재적 영향
의도하지 않은 직접 접근 경로가 생기면 태스크가 외부 스캔과 공격 대상이 될 수 있습니다.
해결 방법
직접 공개할 필요가 없다면 assign_public_ip = false로 설정하고 프라이빗 서브넷에 배치하세요. 필요한 외부 공개는 ALB/NLB로 처리하고, 이미지 다운로드 등 아웃바운드 통신에는 NAT나 VPC 엔드포인트를 구성하세요.
예시
예시는 같은 서비스에서 공인 IP 할당을 끕니다. 서브넷과 보안 그룹 ID는 실제 환경의 값으로 바꿔야 하며 라우팅은 별도로 구성합니다.
변경 전
hcl
resource "aws_ecs_service" "example" {
name = "example_service_dev"
cluster = aws_ecs_cluster.example_cluster.id
task_definition = aws_ecs_task_definition.example_task.arn
desired_count = 2
launch_type = "FARGATE"
network_configuration {
assign_public_ip = true
subnets = ["subnet-0123456789abcdef0", "subnet-0fedcba9876543210"]
security_groups = ["sg-0123456789abcdef0"]
}
}
변경 후
hcl
resource "aws_ecs_service" "example" {
name = "example_service_dev"
cluster = aws_ecs_cluster.example_cluster.id
task_definition = aws_ecs_task_definition.example_task.arn
desired_count = 2
launch_type = "FARGATE"
network_configuration {
assign_public_ip = false
subnets = ["subnet-0123456789abcdef0", "subnet-0fedcba9876543210"]
security_groups = ["sg-0123456789abcdef0"]
}
}