Amazon ECS에 대한 Fargate 보안 고려 사항
Fargate는 각 워크로드를 격리된 가상 환경에서 실행하므로 작업마다 전용 인프라 용량이 있습니다. Fargate에서 실행되는 워크로드는 네트워크 인터페이스, 임시 스토리지, CPU 또는 메모리를 다른 작업과 공유하지 않습니다. 작업 내에서 애플리케이션 컨테이너와 사이드카 컨테이너 또는 단순히 사이드카를 비롯한 여러 컨테이너를 실행할 수 있습니다. 사이드카는 Amazon ECS 작업에서 애플리케이션 컨테이너와 함께 실행되는 컨테이너입니다. 애플리케이션 컨테이너는 코어 애플리케이션 코드를 실행하는 반면 사이드카에서 실행되는 프로세스는 애플리케이션을 확대할 수 있습니다. 사이드카를 사용하면 애플리케이션 기능을 전용 컨테이너로 분리하여 애플리케이션의 부분을 더 쉽게 업데이트할 수 있습니다.
동일한 작업에 속하는 컨테이너는 항상 동일한 호스트에서 실행되고 컴퓨팅 리소스를 공유하므로 Fargate 시작 유형의 리소스를 공유합니다. 이러한 컨테이너는 Fargate에서 제공하는 임시 스토리지도 공유합니다. 작업의 Linux 컨테이너는 IP 주소 및 네트워크 포트를 비롯한 네트워크 네임스페이스를 공유합니다. 작업 내에서 작업에 속한 컨테이너는 로컬 호스트를 통해 상호 통신할 수 있습니다.
Fargate의 런타임 환경에서는 EC2 인스턴스에서 지원되는 특정 컨트롤러 기능을 사용하지 못합니다. Fargate에서 실행되는 워크로드를 설계할 때 다음 사항을 고려하세요.
-
권한 있는 컨테이너 또는 액세스 없음 - 권한 있는 컨테이너 또는 액세스와 같은 기능은 현재 Fargate에서 사용할 수 없습니다. 이는 Docker에서 Docker 실행과 같은 사용 사례에 영향을 미칩니다.
-
Linux 기능에 대한 제한된 액세스 - 컨테이너가 Fargate에서 실행되는 환경은 잠겨 있습니다. CAP_SYS_ADMIN 및 CAP_NET_ADMIN과 같은 추가 Linux 기능은 권한 에스컬레이션을 방지하기 위해 제한됩니다. Fargate는 작업에 CAP_SYS_PTRACE Linux 기능을 추가하여 작업 내에 배포된 관찰성 및 보안 도구에서 컨테이너식 애플리케이션을 모니터링할 수 있도록 지원합니다.
-
기본 호스트에 액세스할 수 없음 - 고객과 AWS 운영자 모두 고객 워크로드를 실행하는 호스트에 연결할 수 없습니다. ECS exec을 사용하여 명령을 실행하거나 Fargate에서 실행되는 컨테이너로 셸을 가져올 수 있습니다. ECS exec을 사용하여 디버깅을 위한 진단 정보를 수집할 수 있습니다. 또한 Fargate는 컨테이너가 파일 시스템, 디바이스, 네트워킹 및 컨테이너 런타임과 같은 기본 호스트의 리소스에 액세스하지 못하게 합니다.
-
네트워킹 - 보안 그룹 및 네트워크 ACL을 사용하여 인바운드 및 아웃바운드 트래픽을 제어할 수 있습니다. Fargate 작업은 VPC에 구성된 서브넷에서 IP 주소를 받습니다.