Amazon ECS에서 Fargate 보안 모범 사례

Amazon ECS에서 Fargate 보안 모범 사례

AWS Fargate를 사용할 때 고려해야 할 보안 모범 사례를 알아봐요. 임시 스토리지 암호화, SYS_PTRACE 커널 기능, GuardDuty Runtime Monitoring을 다뤄요.

출처: 문서

본문

AWS Fargate를 사용할 때 다음 모범 사례를 고려하는 것을 권장해요.

AWS KMS를 사용해 Fargate 임시 스토리지 암호화하기

임시 스토리지(ephemeral storage)는 AWS KMS 또는 자체 고객 관리형 키(customer managed key)로 암호화해야 해요. 플랫폼 버전 1.4.0 이상을 사용하는 Fargate에서 호스팅되는 태스크의 경우, 각 태스크는 20 GiB의 임시 스토리지를 받아요. 자세한 내용은 customer managed key (CMK) 참고. 태스크 정의에서 ephemeralStorage 파라미터를 지정하면 임시 스토리지 총량을 최대 200 GiB까지 늘릴 수 있어요. 2020년 5월 28일 이후에 시작된 그러한 태스크의 경우, 임시 스토리지는 Fargate가 관리하는 암호화 키를 사용해 AES-256 암호화 알고리즘으로 암호화돼요.

자세한 내용은 Storage options for Amazon ECS tasks 참고.

예시: 임시 스토리지 암호화와 함께 Fargate 플랫폼 버전 1.4.0에서 태스크 시작

다음 명령은 Fargate 플랫폼 버전 1.4.0에서 태스크를 시작해요. 이 태스크는 클러스터의 일부로 시작되기 때문에 자동으로 암호화되는 20 GiB의 임시 스토리지를 사용해요.

aws ecs run-task --cluster clustername \
  --task-definition <taskdefinition>:<version> \
  --count 1
  --launch-type "FARGATE" \
  --platform-version 1.4.0 \
  --network-configuration "awsvpcConfiguration={subnets=[<subnetid>],securityGroups=[<securitygroupid>]}" \
  --region region

Fargate에서 커널 syscall 추적을 위한 SYS_PTRACE 기능

컨테이너에서 추가되거나 제거되는 Linux capabilities의 기본 구성은 Docker가 제공해요. Fargate에서 시작되는 태스크는 SYS_PTRACE 커널 기능 추가만 지원해요. 이 기능을 Sysdig Falco 프로젝트를 통해 사용하는 방법은 위 비디오를 참고해요. 비디오에서 다룬 코드는 GitHub에서 확인할 수 있어요.

Fargate Runtime Monitoring과 함께 Amazon GuardDuty 사용하기

Amazon GuardDuty는 계정, 컨테이너, 워크로드, AWS 환경 내 데이터를 보호하는 데 도움이 되는 위협 탐지 서비스예요. GuardDuty는 머신 러닝(ML) 모델과 이상·위협 탐지 기능을 사용해 다양한 로그 소스와 런타임 활동을 지속적으로 모니터링하여 환경 내 잠재적 보안 위험과 악의적인 활동을 식별하고 우선순위를 정해요.

GuardDuty의 Runtime Monitoring은 AWS 로그와 네트워킹 활동을 지속적으로 모니터링해 악의적이거나 허가되지 않은 동작을 식별함으로써 Fargate에서 실행되는 워크로드를 보호해요. Runtime Monitoring은 파일 접근, 프로세스 실행, 네트워크 연결 같은 호스트 내(on-host) 동작을 분석하는 경량의 완전 관리형 GuardDuty 보안 에이전트를 사용해요. 여기에는 권한 상승, 노출된 자격 증명 사용, 악성 IP 주소·도메인과의 통신, Amazon EC2 인스턴스와 컨테이너 워크로드의 악성 코드 존재 등의 문제가 포함돼요. 자세한 내용은 GuardDuty User Guide의 GuardDuty Runtime Monitoring 참고.

더 알아보기 (Learn more)