애플리케이션 개발 및 배포를 위한 컨테이너는 클라우드 환경에서 잘 문서화되어 있으며, 현대 기업들은 클라우드 중심 아키텍처로 전환하고 있습니다. 컨테이너 스캐닝은 컨테이너 보안의 하위 집합이며, 컨테이너화된 DevOps 워크플로우를 보호하기 위한 기본적인 보안 조치입니다.
모든 컨테이너가 동일하게 생성되는 것은 아니며, 신뢰할 수 없는 소스 및 공개 저장소에서 많은 이미지를 추출할 수 있습니다. 이는 새로운 위협 요소를 추가하고, 악성 구성 요소를 포함하며, 알려지지 않은 위험을 초래할 수 있습니다.
 이 블로그에서는 컨테이너 스캐닝의 기본 개념과 컨테이너 보안에 있어 왜 중요한지 논의하겠습니다. 또한 일반적인 컨테이너 취약점과 다양한 컨테이너 스캐닝 방법을 다루고 사용자가 이를 구현하는 방법을 안내해 드리겠습니다. 함께 알아보겠습니다.
컨테이너 스캐닝(컨테이너 이미지 스캐닝)이란 무엇인가요?
컨테이너 스캐닝은 최첨단 보안 도구를 활용하여 컨테이너 이미지의 다양한 구성 요소를 계층별로 분석함으로써 잠재적 위협을 탐지합니다.
컨테이너 스캐닝 솔루션은 글로벌 데이터베이스를 활용하여 취약점을 식별하고 위험 요소를 점검합니다. 클라우드 네이티브 애플리케이션 내 익스플로잇을 찾아내고, 개발 팀이 취약점이 악용되기 전에 조기에 발견하여 수정할 수 있도록 보장합니다. 이러한 솔루션은 초기 단계부터 보안 조치를 전진 배치하고, 분석을 수행하며, 취약점 해결을 위한 권장 사항을 제공합니다.
컨테이너 스캐닝이 필요한 이유?
컨테이너에는 베이스 이미지에서 상속된 취약점, 모든 가능한 잘못된 구성, 악성코드 및 기타 보안 결함을 포함한 여러 이미지가 포함됩니다. 시프트 레프트 보안을 시행하려면 컨테이너 이미지 내의 종속성과 패키지를 분석하여 위협을 제거하고 프로덕션 파이프라인에 배포되는 것을 방지하는 것부터 시작해야 합니다.
컨테이너 이미지의 취약점이 확대되어 심각한 문제를 일으키기 전에 이를 식별하고 수정하기 위해서는 컨테이너 스캐너를 사용하는 것이 필수적입니다. 적절한 컨테이너 스캔을 실행하지 않으면 민감한 자격 증명이 유출되고 데이터 침해가 발생하며 기타 보안 문제가 발생할 수 있습니다.
일반적인 컨테이너 취약점은 무엇입니까?
컨테이너는 기업이 애플리케이션을 구축, 배포 및 사용하는 방식을 변화시키고 있습니다. 효율성과 이동성을 높여 사용자가 적합한 운영 체제, 설정 또는 프로덕션 환경에 대한 걱정 없이 소프트웨어를 실행할 수 있게 합니다. 컨테이너는 기본적으로 안전하지만 다른 보안 취약점과 마찬가지로 특정 위험에 노출됩니다.
가장 흔한 컨테이너 보안 취약점은 다음과 같습니다:
- 신뢰할 수 없는 컨테이너 – 신뢰할 수 없는 컨테이너는 주로 신뢰할 수 없거나 검증되지 않은 출처의 소프트웨어를 실행하는 컨테이너로 구성됩니다. 이러한 컨테이너는 악성 코드를 포함하고 공개 저장소에 업로드하여 공격자가 네트워크에 무단 접근할 수 있게 할 수 있습니다.
 - 안전하지 않은 구성 – 컨테이너를 실행하는 머신은 OS 수준 공격에 취약할 수 있으므로 호스트 OS를 적절히 업데이트하고 구성하는 것이 필수적입니다. 보안 취약한 설계에는 권한 상승 공격 및 잘못 구성된 컨테이너화 계층도 포함됩니다.
 - 비밀 관리 – 비밀을 보호하지 않는 컨테이너는 모든 수준에서 침입에 취약합니다. 안전하지 않은 API 키와 토큰은 비밀 관리 결함의 주요 원인입니다. 개인 키를 정기적으로 교체하지 않으면 공격자가 자격 증명을 알아내어 접근 권한이 없는 리소스에 접근할 수 있습니다.
 
컨테이너 보안 스캐닝 유형
컨테이너 이미지는 다양한 출처에서 유입될 수 있으므로 이미지 신뢰성 유지가 매우 중요합니다. 배포 및 프로덕션 이전에 애플리케이션의 전체 라이프사이클에 걸쳐 완벽한 보안을 달성하려면 다음 세 가지 영역에서 컨테이너 스캔을 구현하는 것이 필수적입니다.
1. 컨테이너 레지스트리 스캐닝-컨테이너 애플리케이션 레지스트리는 다양한 출처에서 빌드된 수천 개의 이미지를 저장합니다. 레지스트리에는 타사 위치도 포함되며, 단일 위협이 전체 애플리케이션에 영향을 미칠 수 있습니다. 컨테이너 레지스트리의 변경 사항과 취약점을 지속적으로 스캔하는 것은 컨테이너 보안을 유지하는 데 중요합니다. 이는 자동화되어야 하며, 잠재적 위협을 식별하기 위해 모든 이미지를 검사해야 합니다.
2. 런타임 스캐닝-런타임에 컨테이너를 스캔하면 새로운 CVE를 식별하고, 새로운 취약점을 탐지하며, 이를 즉시 보안 팀에 보고합니다. 자동화된 런타임 스캔은 컨테이너 환경 전반에 걸쳐 위험을 우선순위화하고 전반적인 런타임 보호 기능을 강화합니다. 기준선을 설정하여 컨테이너를 안전한 상태로 유지하고 이상 현상을 완화합니다.
3. 취약점 스캐닝-취약점 스캐닝은 애플리케이션의 전체 라이프사이클에 걸쳐 컨테이너의 모든 구성 요소를 분석합니다. 이는 훌륭한 DevSecOps 관행이며, 보안 팀은 효과적인 위협 탐지 및 대응을 위해 컨테이너 이미지 스캔을 CI/CD 파이프라인에 통합해야 합니다. 취약점 스캔은 코드가 컨테이너로 진입하기 전에 취약점을 발견하고 차단하여 보호 효과를 극대화합니다.
컨테이너 스캐닝 구현 방법?
컨테이너 보안 스캔은 클라우드 네이티브 환경과 애플리케이션을 모니터링하고 보호하기 위한 표준화된 워크플로로 자리 잡고 있습니다. 대부분의 개발자는 내부 도구를 사용하여 컨테이너 스캔을 실행할 때 실행 환경을 분리하는 것을 선호합니다.
컨테이너 스캔에는 세 가지 주요 단계가 있으며, 다음과 같습니다:
- 1단계 – 애플리케이션 코드 보안 강화
 - 2단계 – 컨테이너 이미지 스캔
 - 3단계 – 연결 계층 스캔
 
1단계 – 애플리케이션 코드 보안 강화
컨테이너 애플리케이션 코드 및 개발 지원 도구는 컨테이너 코드의 취약점과 종속성을 스캔하고 추적합니다. 이는 컨테이너화, 통합 및 배포 전 개발 주기 초기에 오류를 발견하는 데 도움을 줍니다. 초기 애플리케이션 코드 스캔은 코드가 컨테이너에 삽입된 후 수행할 수 있습니다.
2단계 – 컨테이너 이미지 스캔 
다양한 컨테이너 이미지 스캔 도구가 존재하며, 이들은 디지털 서명을 분석하여 이미지 품질과 여러 취약점을 평가합니다. 컨테이너 이미지 스캔은 출처를 검증하고 게시자를 확인함으로써 해당 이미지의 무결성과 진위성을 보장합니다.
3단계 – 연결 계층 스캔
컨테이너의 중간 계층에는 대부분의 보안 취약점이 존재합니다. 레이어 수를 최소화하여 컨테이너 이미지를 맞춤 설정할 수 있습니다.
컨테이너 보안 스캔 모범 사례
컨테이너 보안 스캔을 위한 모범 사례는 다음과 같습니다.
- CLI 로컬 스캔
 - CI/CD 파이프라인에 통합된 자동화된 스캔
 - 인라인 이미지 스캔 채택
 - 이미지 버전 고정
 - 비밀 정보 스캔
 - 드리프트 감지
 
1. CLI 로컬 스캔
CLI 로컬 스캔 기능에는 Docker 스캔이 포함되어 있어, 로컬 컨테이너 이미지를 빌드한 직후 쉽게 스캔할 수 있습니다. docker scan 명령을 사용하여 CLI 스캔을 실행할 수 있으며, 이는 최고의 컨테이너 보안 관행을 구현하기 위한 첫 번째 단계 중 하나입니다.
2. CI/CD 파이프라인에 통합된 자동 스캔
다음 단계는 CI/CD 파이프라인에 자동 스캔을 통합하고 컨테이너 이미지가 빌드될 때마다 지속적으로 분석하는 것입니다. 이를 통해 중대한 보안 사고를 방지하고, 빌드 실패를 보고하며, 취약점을 식별할 수 있습니다.
3. 인라인 이미지 스캐닝 채택
인라인 이미지 스캔은 데이터 프라이버시를 추적하고 이미지 자격 증명을 보호하는 데 도움이 됩니다. 공개 저장소를 스테이징할 필요가 없으며 스캔 메타데이터 도구만 있으면 됩니다. 인라인 스캔은 GitLab, AWS Codepipeline, Jenkins, Tekton 및 기타 다양한 CI/CD 도구에서 구현할 수 있습니다.
4. 이미지 버전 고정
컨테이너는 동일한 이미지에서 배포될 수 있는 서로 다른 버전을 가질 수 있으므로 잘못된 이미지를 스캔할 가능성이 있습니다. 이는 디버깅에 문제를 일으킬 수 있으며, 변경 가능한 태그를 사용하는 경우 이러한 태그가 지속적인 업데이트와 새 버전에 취약하기 때문에 스캔 결과가 무효화될 가능성이 있습니다.
정기적인 변경이 영향을 미치지 않도록 불변 태그를 적용하고 이미지 버전을 고정하는 것이 필수적입니다. 컨테이너 이미지 스캔, OPA 엔진, 그리고 Kubernetes 어드미션 컨트롤러를 함께 활용하면 이 과정을 지원할 수 있습니다.
5. 비밀 정보 스캔
비밀 정보 스캔은 암호, 사용자 이름 및 개인 키를 보호할 수 있습니다. 이미지 배포 전 시크릿을 스캔하는 것은 좋은 관행이며, 사용자는 이미지 출처를 확인할 수 있습니다. 시크릿 스캔은 정보 유출을 방지하고 보안이 적용된 컨테이너화된 워크로드에서 정보에 접근할 수 있게 합니다. 또한 컨테이너 유지 관리를 더 용이하게 하며, 내부 도구를 사용하여 쿠버네티스 클러스터를 모니터링하도록 설계된 워크플로가 많습니다. 일부 사용자는 서로 다른 구성을 분석하기 위해 별도의 실행 환경을 사용하는 것을 선호합니다.
6. 드리프트 감지
컨테이너 배포를 설계상 불변(immutable)하게 만드세요. 최신 보안 패치 적용, 구성 업데이트 수행, 새 컨테이너 이미지 배포 시 구성 드리프트 발생 가능성을 최소화하는 방식이 중요합니다. 바이너리 드리프트 감지 기능을 활용하여 무단 실행 파일의 유입이나 원치 않는 수정 사항을 식별하십시오. 드리프트 감지 기능을 CI/CD 파이프라인에 통합할 수 있으며, 런타임 보안 도구를 사용하여 런타임 동작을 모니터링하는 것이 권장됩니다. 통합 드리프트 감지, 컨테이너 이미지 스캔, 정책 적용 및 컨테이너 런타임 보호 기능을 제공하는 컨테이너 보안 플랫폼을 사용하십시오.&
컨테이너 보안 스캐닝에 SentinelOne을 선택해야 하는 이유?
SentinelOne은 Kubernetes, 컨테이너 및 클라우드 네이티브 워크로드를 위한 포괄적인 가시성, 자동화된 위협 탐지 및 상태 관리를 결합하여 업계 최고의 컨테이너 보안을 제공합니다. SentinelOne Singularity™ 클라우드 네이티브 보안(CNS)는 에이전트 없는 컨테이너 스캔을 제공하여 보안 팀이 배포 전에 컨테이너 이미지 전반에 걸쳐 취약점, 잘못된 구성 및 노출된 비밀을 탐지할 수 있도록 합니다. 750가지 이상의 시크릿 유형을 스캔할 수 있도록 지원하는 SentinelOne은 조직이 GitHub, GitLab, BitBucket 및 기타 CI/CD 저장소에서 자격 증명 유출을 방지하고 강력한 코드 위생을 유지할 수 있도록 지원합니다.
이 플랫폼에는 Kubernetes 보안 상태 관리(KSPM)가 포함되어 있어 조직이 Kubernetes 클러스터 내에서 보안 모범 사례를 지속적으로 모니터링하고 시행할 수 있습니다. SentinelOne은 구성 드리프트를 감지하고 NIST, CIS, MITRE와 같은 주요 규정 준수 표준에 대해 2,000개 이상의 기본 제공 규칙 세트를 제공하여 팀이 잘못된 구성 및 규정 준수 격차를 실시간으로 해결할 수 있도록 지원합니다. CNS는 DevOps 파이프라인에 원활하게 통합되어 정책 시행을 자동화하고 기존 워크플로우에 대한 방해를 최소화하면서 실행 가능한 인사이트를 제공합니다.
SentinelOne의 Singularity™ 클라우드 워크로드 보안(CWS) 은 AI 기반 탐지를 활용하여 랜섬웨어, 크립토재킹, 제로데이 공격을 포함한 공격을 머신 속도로 차단함으로써 실행 중인 컨테이너화된 워크로드까지 보호 범위를 확장합니다. 정적 분석, 동적 위협 탐지 및 자동화된 대응을 결합함으로써 SentinelOne은 조직이 통합 대시보드에서 멀티 클라우드 환경 전반에 걸쳐 VM, 컨테이너 및 쿠버네티스 등 모든 공격 표면을 방어할 수 있도록 지원합니다.
에이전트 없는 CNAPP 아키텍처를 통해 SentinelOne은 보안 팀이 영향력이 큰 경고와 검증된 악용 경로에 집중할 수 있도록 지원하여 오탐과 운영 부담을 줄입니다. 자동화된 온보딩, 즉각적인 커버리지, 통합 정책 관리를 통해 SentinelOne은 빌드부터 런타임까지 전체 개발 라이프사이클에 걸쳐 컨테이너를 보호하는 이상적인 솔루션입니다.
결론
CI/CD 파이프라인 및 OS 취약점 스캔과 같은 컨테이너 이미지 스캔 모범 사례를 통해 이미지를 안전하게 보호하고 악용을 방지할 수 있습니다. 컨테이너 보안을 최적으로 시행하는 것은 지속적인 과정이며, 빌드 시작부터 완료까지 반복적인 접근 방식을 따릅니다.
컨테이너 애플리케이션 개발 라이프사이클의 모든 단계에서 위협을 모니터링하고 새로운 보안 위험에 대비하는 것이 중요합니다. 컨테이너를 스캔하면 숨겨진 악용을 발견하고 취약점을 제거하며, 컨테이너화된 애플리케이션의 행동 변화나 악성 이벤트를 모니터링하여 최적의 보안을 보장할 수 있습니다. SentinelOne은 감사 로깅, 권한 관리, IaC 템플릿 지원 등 즉시 사용 가능한 기능을 제공하여 컨테이너 스캔을 원활한 경험으로 만듭니다.
컨테이너 스캐닝 FAQ
컨테이너 스캐닝은 컨테이너 이미지와 실행 중인 컨테이너를 분석하여 보안 취약점, 잘못된 구성 및 규정 준수 문제를 식별하는 과정입니다. 컨테이너화된 애플리케이션에 대한 보안 점검입니다.
기본 운영 체제부터 애플리케이션 종속성에 이르기까지 모든 요소를 검토하며, National Vulnerability Database와 같은 취약점 데이터베이스와 비교합니다. 이를 통해 보안 문제가 프로덕션 환경에 도달하기 전에 발견할 수 있습니다.
컨테이너 스캔은 베이스 이미지의 운영 체제 취약점, 취약한 애플리케이션 종속성, 지나치게 허용적인 사용자나 노출된 포트와 같은 구성 결함을 탐지합니다. 또한 API 키 및 암호와 같은 하드코딩된 비밀 정보, 악성코드, CIS 벤치마크와 같은 표준에 대한 규정 위반 사항도 발견합니다.
스캐너는 공격자가 악용할 수 있는 오래된 라이브러리, Dockerfile의 잘못된 구성, 과도한 권한을 확인합니다.
배포 전에 취약점을 포착하기 위해 CI/CD 파이프라인에 스캔을 통합해야 합니다. 신뢰할 수 있는 출처의 최소한의 기본 이미지를 사용하고, 포괄적인 커버리지를 위해 빌드 시점과 런타임 모두에서 스캔하십시오.
적절한 경고 임계값으로 자동화된 스캔을 설정하고, 취약점 데이터베이스를 정기적으로 업데이트하는 것을 잊지 마십시오. 또한, 심각한 취약점이 발견될 경우 배포를 차단하는 정책을 구현하십시오.
컨테이너 스캐너는 먼저 이미지를 가져와 구성 레이어로 분해한 다음 각 구성 요소를 개별적으로 분석합니다. 시그니처 기반 스캔을 사용하여 CVE와 같은 알려진 취약점 데이터베이스와 구성 요소를 비교하고, 실행 중 비정상적인 활동을 감지하기 위해 행동 기반 스캔을 사용합니다.
스캐너는 기본 이미지, 애플리케이션 코드, 종속성 및 구성을 검사한 후 보안 문제를 표시하여 해결할 수 있도록 합니다.

