기술AWS Fargate 환경의 컨테이너 보안 점검 방법: ECS 설정부터 이미지 취약점 점검까지

김창식
2026-07-05
조회수 39

컨테이너 기반 서비스를 운영할 때는 애플리케이션의 정상 동작뿐 아니라, 배포와 운영 과정에서 보안 통제가 적절히 적용되는지도 함께 확인해야 합니다.

이번 글에서는 ECS on Fargate 환경에서 컨테이너 서비스를 운영할 때 확인해야 할 주요 보안 점검 항목을 정리해 보겠습니다.

이번 글 주요 내용
Fargate 환경에서는 호스트 OS와 Docker 데몬을 직접 점검하는 대신, 컨테이너가 어떤 이미지와 설정으로 배포되는지, 실제 서비스가 안정적으로 실행되는지, IAM과 네트워크 접근 권한이 적절한지, 이미지에 알려진 취약점이 없는지를 함께 확인해야 합니다.

1. Fargate 환경에서 컨테이너 점검 방식이 달라지는 이유

기존 Docker 호스트 환경에서는 서버에 접속해 실행 중인 컨테이너를 확인하고, 필요에 따라 Docker 설정, 호스트 OS 계정과 파일 권한, 로그 파일, 네트워크 설정까지 함께 점검할 수 있습니다.

하지만 Fargate에서는 컨테이너를 실행하는 기반 인프라를 AWS가 관리합니다. 따라서 호스트 OS에 접속하거나 Docker 데몬, Docker 소켓, 호스트 파일 권한을 직접 점검하는 방식은 적용하기 어렵습니다.

그렇다고 해서 점검해야 하는 인프라 환경이 사라지거나 줄어든 것은 아닙니다. 핵심은 관리의 주체가 바뀌면서 우리가 점검해야 하는 위치와 방식이 바뀐다는 것입니다.

기존 Docker 환경에서 직접 점검하던 항목Fargate에서 사용자가 점검해야 하는 항목
호스트 OS 계정, 파일 권한, 패치 상태Fargate 플랫폼 유지 관리 이벤트, 서비스·태스크 상태
Docker 데몬과 Docker 소켓태스크 정의, IAM 역할, 네트워크와 로그 구성
실행 중인 컨테이너의 상세 설정과 상태태스크 정의와 실행 중인 태스크 정보
컨테이너 내부 프로세스와 파일컨테이너 이미지, 필요 시 ECS Exec
컨테이너 이미지 취약점ECR 이미지 스캔과 고급 스캔 사용 시 Amazon Inspector 결과

2. 점검 전 알아둘 Amazon ECS 구성 요소

Fargate 환경에서 무엇을 점검해야 하는지 이해하려면 Amazon ECS 구성 요소의 관계를 먼저 알아둘 필요가 있습니다.

컨테이너 이미지는 태스크 정의에 지정되며, 서비스는 이를 사용해 클러스터 안에서 태스크를 실행·유지합니다. 클러스터는 서비스와 태스크를 관리하는 논리적 범위입니다.

구성 요소운영 구조에서의 역할보안 점검 시 확인할 내용
컨테이너 이미지애플리케이션과 패키지를 포함한 실행 단위어떤 이미지와 버전이 배포되는지, 알려진 취약점은 없는지
태스크 정의이미지, 리소스, 포트, 로그, 역할 등 실행 설정 정의컨테이너가 적절한 설정과 권한으로 실행되도록 구성됐는지
클러스터서비스와 태스크를 관리하는 논리적 범위어떤 서비스와 태스크가 운영되는지, 상태를 어디에서 확인할지
서비스태스크 배포와 실행 수 유지 관리설정한 수의 태스크가 정상적으로 배포·유지되는지
태스크태스크 정의를 바탕으로 실제 실행된 단위의도한 이미지와 설정이 실제 적용됐는지
컨테이너태스크 안에서 실행되는 애플리케이션 프로세스필요한 경우 프로세스와 런타임 상태를 확인할 수 있는지

ac5f7fe616986.png

태스크 정의는 클러스터 외부에서 등록되며, 서비스는 클러스터 안에서 해당 정의를 바탕으로 태스크를 실행·유지하고 각 태스크 안에서 컨테이너가 실행됩니다.

3. 태스크 정의에서 확인해야 할 컨테이너 보안 설정

태스크 정의는 컨테이너를 어떤 방식으로 실행할지를 기록한 설정입니다. 따라서 실행 중인 태스크만 확인하는 것이 아니라, 태스크 정의에 안전하지 않은 설정이 포함되어 있지 않은지도 함께 점검해야 합니다.

태스크 정의 내 설정 항목실제 확인할 내용점검 목적
컨테이너 이미지 참조검증된 리포지토리와 관리되는 버전의 이미지를 사용하는지검증되지 않았거나 오래된 이미지 사용 방지
애플리케이션 프로세스 실행 권한Linux 컨테이너 내부의 애플리케이션 프로세스가 불필요하게 root 권한으로 실행되지 않는지취약점 악용 시 컨테이너 내부 영향 범위 축소
환경 변수와 보안 정보 전달 방식비밀번호, 토큰, API 키가 평문 환경 변수로 등록되지 않았는지중요 정보 노출 방지
컨테이너 포트 매핑서비스에 필요하지 않은 포트가 등록되지 않았는지불필요한 공격 표면 축소
읽기 전용 루트 파일 시스템 설정애플리케이션 특성상 가능하다면 읽기 전용 구성을 적용할 수 있는지런타임 파일 변조 위험 감소
로그 구성CloudWatch 로그 그룹 등 중앙 위치로 로그가 수집되는지장애와 보안 이벤트 추적
상태 확인 구성상태 확인 방식과 기준이 실제 서비스 특성에 맞는지비정상 컨테이너 조기 탐지
태스크 CPU·메모리업무량에 맞는 리소스가 설정되어 있는지리소스 부족과 반복 재시작 예방

표의 주요 설정은 AWS Security Hub의 Amazon ECS 보안 점검 항목에서도 주요 확인 대상으로 다뤄집니다.

민감한 정보는 태스크 정의에 직접 입력하기보다 Secrets Manager 또는 Systems Manager Parameter Store를 참조해 전달하는 방식을 검토하는 것이 좋습니다.

태스크 정의 변경 사항은 기존 실행 중인 태스크에 자동으로 반영되지 않으므로, 새 개정을 등록한 뒤 서비스가 해당 개정을 사용하도록 배포해야 합니다.

4. 서비스·태스크 상태와 로그 모니터링 점검

태스크 정의가 적절하게 구성되어 있더라도 실제 서비스가 정상적으로 운영되지 않으면 점검의 의미가 줄어듭니다. 이 단계에서는 설정값보다 실제 실행 상태와 이상 징후를 탐지할 수 있는지를 확인합니다.

서비스·태스크 운영 항목정상 상태로 볼 기준이상 시 함께 확인할 정보
서비스 실행 수 및 오토 스케일링원하는 태스크 수와 실행 중인 태스크 수가 일치하고, 최소·최대 태스크 수와 확장 정책이 서비스 특성에 맞는지서비스 이벤트, 태스크 시작 실패 사유, 확장·축소 이력, 최대 태스크 수 도달 여부
태스크 상태태스크가 반복적으로 중지·재시작되지 않는지중지 사유, 컨테이너 로그, 상태 확인 결과
서비스 배포 상태새 태스크 정의가 정상적으로 배포되고 안정 상태에 도달하는지서비스 이벤트, 로드 밸런서 대상 상태
CPU·메모리 사용량사용량이 지속적으로 과도하지 않은지CloudWatch 지표, 리소스 설정, 애플리케이션 로그
ALB 오류 지표ALB를 사용하는 경우 5xx 오류가 증가하지 않는지대상 그룹 상태, 태스크 상태, 애플리케이션 오류 로그

운영 중 발생한 문제를 추적하려면 컨테이너 로그가 CloudWatch 로그 그룹에 수집되고, 서비스와 태스크의 상태 변경 이력을 함께 확인할 수 있어야 합니다.

또한 AWS는 Fargate의 기본 인프라를 유지 관리하며, 플랫폼 개정 과정에서 기존 태스크를 중지할 수 있습니다. 이때 서비스가 대체 태스크를 정상적으로 시작해 원하는 실행 수를 유지하는지, 관련 이벤트를 확인할 수 있는지도 점검 대상입니다.

ECS Exec는 필요한 경우 실행 중인 특정 컨테이너에서 명령을 실행하거나 셸을 열어 진단 정보를 확인하는 기능입니다. Fargate 호스트에 접속하는 기능은 아니며, 정기 점검 전체를 대신하기보다 장애 분석이나 제한적인 런타임 확인에 활용하는 편이 적절합니다. ECS Exec 접근 권한과 CloudTrail 감사 기록도 함께 관리해야 합니다.

5. IAM 및 네트워크 접근제어 점검

태스크 역할과 태스크 실행 역할은 사용하는 주체와 목적이 다르므로, 애플리케이션 권한과 태스크 실행 권한을 분리해 관리해야 합니다.

IAM 역할사용하는 주체점검할 권한 범위
태스크 역할컨테이너 내부 애플리케이션S3 전체 접근, 와일드카드 권한, 불필요한 Secrets 접근 등 과도한 권한이 없는지
태스크 실행 역할ECS와 Fargate의 태스크 실행 과정애플리케이션 권한과 혼재되어 있지 않은지, 이미지 가져오기·로그 전송 등에 필요한 권한만 포함하는지

태스크 역할에는 애플리케이션이 실제로 필요한 권한만 부여해야 합니다. 예를 들어 특정 S3 버킷의 일부 경로만 읽으면 되는 서비스에 모든 S3 리소스에 대한 읽기·쓰기 권한을 부여할 필요는 없습니다.

Fargate 태스크에는 네트워크 인터페이스와 보안 그룹이 적용됩니다. 따라서 외부에서 태스크로 들어오는 경로와 태스크가 외부로 나가는 통신 범위를 함께 검토해야 합니다.

네트워크 구성 항목확인할 접근제어 설정점검 목적
태스크 보안 그룹필요한 포트와 출발지만 허용되어 있는지애플리케이션 포트의 전체 공개 방지
퍼블릭 IP외부 노출이 필요 없는 태스크에 퍼블릭 IP가 할당되지 않았는지태스크의 직접 인터넷 노출 방지
외부 요청 경로인터넷 공개 서비스는 ALB를 진입점으로 사용하고, 태스크는 ALB에서 오는 통신만 허용하는지로드 밸런서를 우회한 직접 접근 방지
내부 서비스 노출DB, 캐시, 내부 API가 인터넷에 직접 노출되지 않았는지데이터 저장소와 내부 서비스의 공격 표면 축소
아웃바운드 규칙외부 API, 패키지 저장소, 모니터링 서비스 등 필요한 목적지로만 통신하도록 검토했는지불필요한 외부 통신 제한

61ea2989aea31.png

이 예시는 인터넷 요청을 ALB를 통해 프라이빗 영역의 Fargate 태스크로 전달하고, 태스크와 내부 서비스가 인터넷에 직접 노출되지 않도록 필요한 통신만 허용하는 구조를 보여줍니다.

6. ECR 이미지 취약점 점검과 CVE 대응

이미지 취약점 점검의 대상은 Fargate 기반 서버가 아니라, 서비스에 배포하는 컨테이너 이미지입니다. 컨테이너 이미지에는 애플리케이션 코드뿐 아니라 운영 체제 패키지와 Python, Node.js, Java 등의 프로그래밍 언어 패키지가 포함될 수 있습니다.

Amazon ECR은 컨테이너 이미지의 소프트웨어 취약점을 확인하기 위해 기본 스캔과 고급 스캔을 제공합니다. 두 방식은 이미지 내 점검 범위와 스캔 실행 방식에 차이가 있습니다.

ECR 스캔 유형이미지 내 점검 대상스캔 실행 방식점검 목적
기본 스캔운영 체제 패키지수동 또는 푸시 시 스캔알려진 OS 패키지 CVE 확인
고급 스캔운영 체제 패키지와 프로그래밍 언어 패키지푸시 시 또는 연속 스캔신규 CVE 확인과 지속 점검

기본 스캔은 ECR을 사용한다고 자동으로 모든 이미지에 적용되는 기능은 아닙니다. 리포지토리에 푸시 시 스캔을 구성하지 않았다면 수동으로 이미지 스캔을 시작해야 합니다.

6.1. 스캔 결과를 실제 배포 이미지와 연결하기

취약점 결과를 확인했다면, 해당 결과가 실제 서비스에 배포된 이미지에 대한 것인지도 함께 확인해야 합니다. 이때 이미지 태그와 이미지 다이제스트를 함께 활용할 수 있습니다.

배포 이미지 식별 정보확인하는 이유
이미지 태그배포 시 사용한 버전이나 소스 변경 이력 확인
이미지 다이제스트실제 이미지 내용 기준으로 스캔 결과와 배포 이력 연결
태스크 정의의 이미지 참조 정보서비스가 어떤 이미지를 사용하도록 설정됐는지 확인
실행 중인 태스크의 이미지 정보의도한 이미지가 실제로 실행 중인지 확인

태그 변경이 허용된 리포지토리에서는 같은 태그가 다른 이미지를 가리킬 수 있으므로, latest 태그만으로 배포 이미지를 식별하는 방식에는 한계가 있습니다. 따라서 취약점 점검 기록에는 태그와 이미지 다이제스트를 함께 남기는 편이 좋습니다.

6.2. CVE 발견 시 대응 흐름

  1. 영향을 받는 OS 패키지, 프로그래밍 언어 패키지, 베이스 이미지를 확인합니다.
  2. 심각도와 수정 버전 제공 여부를 확인합니다.
  3. 최신 베이스 이미지 또는 수정된 패키지 버전을 반영해 이미지를 재빌드합니다.
  4. 새 이미지를 ECR에 푸시합니다.
  5. 새 태스크 정의 개정을 등록하고 서비스를 재배포합니다.
  6. 새 이미지의 스캔 결과와 서비스 상태를 다시 확인합니다.

510cf2c4c0917.png

7. Fargate 컨테이너 보안 점검 체크포인트 정리

Fargate 기반 컨테이너 서비스를 점검할 때는 다음 항목을 중심으로 확인하는 것이 좋습니다.

점검 영역확인할 핵심 사항
태스크 정의이미지, 애플리케이션 프로세스 실행 권한, 보안 정보 관리, 포트, 로그, 리소스 설정
클러스터·서비스·태스크배포 상태, 태스크 중지 반복, 실행 수 불일치, 오토 스케일링 상태
로그·모니터링CloudWatch 로그 그룹 수집, 서비스 이벤트, 태스크 중지 사유, 과부하·오류 알림
IAM태스크 역할과 태스크 실행 역할 분리, 최소 권한 적용
네트워크보안 그룹, 퍼블릭 IP, ALB 경유 여부, 내부 서비스 외부 노출 여부
이미지실제 배포 이미지 식별, ECR 스캔 설정, CVE 조치와 재점검 이력

다음 글 예고
다음 글에서는 Trivy를 활용해 컨테이너 이미지의 구성요소를 SBOM으로 기록하고, 해당 SBOM에 포함된 구성요소의 CVE를 점검하는 방법을 다룰 예정입니다. 또한 GitHub Actions 배포 파이프라인과 연계해 심각도 High 등급 이상의 취약점이 확인되면 배포를 차단하는 정책도 함께 살펴보겠습니다.


1c7f9bacfa3de.png

김창식 | kcs@cela.kr

카카오톡 채널 채팅하기 버튼