[AWS] ECR의 Image Scanning이란? 쉽게 정리
Scan images for software vulnerabilities in Amazon ECR
ECR Image Scanning
Amazon ECR의 Image Scanning(이미지 스캐닝) 기능은 ECR에 저장된 컨테이너 이미지에서 보안 취약점(vulnerabilities)을 자동으로 감지하는 기능이다
Image Scanning은 이미지를 빌드하고 ECR에 푸시(push)한 후에, 이미지에 포함된 라이브러리나 종속성(dependencies)을 검사하여 보안 취약점이 있는지 분석한다.
ECR의 Image Scanning은 2 가지 유형으로 제공된다.
- Basic scanning (기본 이미지 스캐닝)
이미지가 ECR에 푸시될 때마다 스캔이 수행되며, 표준적인 취약점 목록을 기준으로 위험 요소를 찾아낸다. - Enhanced scanning (고급 이미지 스캐닝)
더 넓은 범위의 취약점 검사와 더 자주 업데이트된 데이터베이스를 사용하여, 기본 스캔보다 더 정밀한 스캐닝을 제공한다.
AWS 공식 문서: https://docs.aws.amazon.com/AmazonECR/latest/userguide/image-scanning.html
🤔 문제
회사는 애플리케이션이 실행되기 전, 컨테이너 이미지를 강화해야 합니다. 회사의 애플리케이션은 Amazon Elastic Container Registry(Amazon ECR)를 이미지 레지스트리로 사용하고, Amazon Elastic Kubernetes Service(Amazon EKS)를 컴퓨팅으로 사용하며, CI/CD 워크플로우를 오케스트레이션하는 AWS CodePipeline 파이프라인을 사용하고 있습니다. 파이프라인의 최종 단계에서는 EKS 클러스터의 개발 네임스페이스에 새 이미지가 배포된 후 동적 애플리케이션 보안 테스트가 이루어집니다. 개발자는 이 배포 전에 컨테이너 이미지를 분석할 수 있는 단계를 추가하여 CI/CD 파이프라인에서 이미지를 더 일찍 분석할 수 있도록 해야 합니다.
가장 효율적인 운영을 제공하면서 이러한 요구 사항을 충족하는 솔루션은 무엇인가요?
- 컨테이너 이미지를 빌드하고 로컬에서 docker scan 명령을 실행합니다. 소스 코드 저장소에 변경사항을 푸시하기 전에 발견된 문제를 해결합니다. 이 작업 흐름을 커밋 전 미리 적용하도록 강제하는 사전 커밋 훅을 작성합니다.
- 컨테이너 이미지가 빌드된 후 실행되는 새로운 CodePipeline 단계를 생성합니다. Amazon ECR 기본 이미지 스캔을 이미지 푸시 시 스캔하도록 구성합니다. Lambda 함수를 작업 공급자로 사용합니다. Lambda 함수가 스캔 결과를 확인하고 문제가 발견되면 파이프라인을 실패하게 합니다.
- 소스 코드가 리포지토리에서 가져온 후 실행되는 새로운 CodePipeline 단계를 생성합니다. 최신 소스 코드 수정본에 대해 보안 스캐너를 실행합니다. 문제가 발견되면 파이프라인을 실패하게 합니다.
- 파이프라인의 배포 단계에 작업을 추가하여 EKS 클러스터에 배포되기 전에 작업이 실행되도록 설정합니다. Amazon ECR 기본 이미지 스캔을 이미지 푸시 시 스캔하도록 구성합니다. Lambda 함수를 작업 공급자로 사용합니다. Lambda 함수가 스캔 결과를 확인하고 문제가 발견되면 파이프라인을 실패하게 합니다.
정답
정답. 2번
이미지가 빌드된 후 ECR에 푸시될 때 즉시 스캔하는 단계를 CodePipeline에 추가한다.
Amazon ECR의 basic image scanning을 사용하고, Lambda 함수를 통해 스캔 결과를 분석하여 취약점이 발견되면 파이프라인을 자동으로 중단한다
이 방식은 파이프라인 워크플로우에 보안 스캔을 통합하여 운영 효율성을 향상시킨다.
1번.
docker scan
은 Docker 이미지를 스캔하여 보안 취약점을 찾는 명령어이다.
소스 코드 저장소에 푸시하기 전에 이미지를 로컬에서 스캔하는 방식이다.
코드 커밋 전에 취약점을 조기에 발견할 수 있지만, 자동화된 CI/CD 파이프라인과의 통합이 부족하여 수동 작업이 추가되고 운영 효율성이 떨어질 수 있다.
3번.
소스 코드에 대한 보안 스캔을 실행하는 것은 코드 취약점 조기 발견에 도움이 되지만, 컨테이너 이미지 분석을 제공하지 않는다.
4번.
이 옵션은 ECR의 기본 이미지 스캔을 사용하고, Lambda를 통해 파이프라인 실패 조건을 추가하는 방식이지만, 스캔 단계를 배포 직전에 배치한다. 배포 전에 이미지를 분석하는 목표를 충족하지만, 빌드 직후 분석을 수행할 수 있는 2번이 더 효율적인 선택이다.