공인 IP가 할당된 ECS 서비스

직접 공개할 필요가 없는 ECS 태스크에는 공인 IP를 할당하지 마세요.

설명

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"]
  }
}

참조