설명
EFS를 ECS 태스크와 함께 사용할 때는 호스트와 파일 시스템 사이의 트래픽도 보호해야 합니다. 전송 중 암호화가 꺼져 있으면 파일 데이터와 메타데이터가 네트워크 구간에서 노출될 수 있습니다.
ECS 태스크 정의의 efs_volume_configuration.transit_encryption을 ENABLED로 설정하면 해당 EFS 연결에 전송 암호화를 사용합니다. 저장 암호화와 파일 접근 권한은 별도로 관리해야 합니다.
잠재적 영향
통신 경로에 접근할 수 있는 주체가 암호화되지 않은 트래픽을 가로채면 애플리케이션 파일과 운영 데이터가 노출될 수 있습니다. 내부 네트워크라는 이유만으로 전송 데이터가 보호되는 것은 아닙니다.
해결 방법
- EFS를 사용하는 볼륨에서
transit_encryption = "ENABLED"를 설정하세요. - 새 태스크 정의 리비전을 사용하는 태스크로 배포하고 실제 파일 접근을 확인하세요.
- 전송 암호화와 함께 IAM, 액세스 포인트와 보안 그룹 설정을 검토하세요.
예시
태스크 정의의 발췌입니다. 참조한 컨테이너 정의 파일과 EFS 파일 시스템이 필요하며, 컨테이너의 볼륨 마운트도 별도로 구성해야 합니다.
변경 전
hcl
resource "aws_ecs_task_definition" "example" {
family = "service"
container_definitions = file("task-definitions/service.json")
volume {
name = "service-storage"
efs_volume_configuration {
file_system_id = aws_efs_file_system.fs.id
root_directory = "/opt/data"
transit_encryption = "DISABLED"
transit_encryption_port = 2999
}
}
}
EFS 연결의 전송 암호화를 비활성화합니다.
변경 후
hcl
resource "aws_ecs_task_definition" "example" {
family = "service"
container_definitions = file("task-definitions/service.json")
volume {
name = "service-storage"
efs_volume_configuration {
file_system_id = aws_efs_file_system.fs.id
root_directory = "/opt/data"
transit_encryption = "ENABLED"
transit_encryption_port = 2999
}
}
}
같은 연결에 전송 암호화를 활성화합니다. 이미 실행 중인 태스크는 새 정의를 사용하도록 전환해야 합니다.