기업들이 클라우드 인프라로 전환함에 따라 전반적인 배포 프로세스가 크게 변화했습니다. 이로 인해 컨테이너와 쿠버네티스의 사용이 증가했습니다. 컨테이너는 단일 모놀리식 애플리케이션 대신 다양한 사용 사례를 위해 여러 서비스를 실행하는 마이크로서비스 아키텍처 애플리케이션의 구성 요소 역할을 합니다. 이러한 전환은 개발 팀에 많은 이점을 제공하지만, 다양한 보안 문제도 수반합니다. 이것이 바로 컨테이너 보안 스캐닝이 등장하는 부분입니다.
컨테이너 보안 스캐닝 도구는 컨테이너 생태계에서 보안 취약점을 찾아내고 방지하는 데 도움이 됩니다. 기업들은 빌드 프로세스 중 CI/CD 파이프라인에서 이러한 도구를 자주 사용합니다.
이 블로그 글에서는 컨테이너 스캐너가 무엇인지, 컨테이너에서 발견되는 일반적인 취약점과 이를 피하는 방법에 대해 논의할 것입니다. 또한 컨테이너 보안 스캐닝 도구 사용의 주요 목적과 이점에 대해서도 살펴보겠습니다.
컨테이너 보안 스캐닝이란 무엇인가요?
 컨테이너 보안 스캐닝은 다양한 스캐닝 도구를 활용하여 컨테이너 이미지의 보안 취약점을 분석하는 과정입니다. 해당 컨테이너는 정적 상태이거나 실행 중인 상태일 수 있습니다. 컨테이너 보안 스캐닝의 궁극적인 목표는 취약점, 클라우드 인프라의 잘못된 구성, 규정 위반 사항을 발견하는 것입니다.
기업이 운영 환경에서 사용하는 컨테이너를 보호하는 것은 위협 행위자의 진입점이 될 수 있으므로 매우 중요합니다. 컨테이너 보안 스캔 도구는 기업이 전체 공급망 환경을 보호하는 데 중요한 역할을 합니다.
컨테이너 보안 스캔 유형
이전 섹션에서 논의한 바와 같이, 컨테이너 보안 스캔 도구는 런타임 모드 또는 정적 모드에서 컨테이너를 스캔할 수 있습니다. 이는 각각 동적 분석(Dynamic Analysis)과 정적 분석(Static Analysis)으로 알려져 있습니다. 이에 대해 자세히 알아보겠습니다.
- 정적 분석(Static Analysis): 이는 컨테이너 레이어에서 이미지에 대한 취약점 테스트를 효과적으로 수행하여 베이스 이미지, 코드 및 애플리케이션의 종속성에서 취약점을 검색하는 것을 의미합니다. 정적 분석은 일반적으로 소프트웨어 빌드 단계에서 수행되며 초기 단계에서 문제를 식별하는 데 효과적입니다.
 - 동적 분석: 동적 분석은 컨테이너 구성 요소뿐만 아니라 실행 단계에서 컨테이너의 동작과 상호작용을 파악하는 또 다른 측면입니다. 실행 중인 컨테이너의 위협 및 활동 이상을 실시간으로 모니터링할 수 있게 합니다.
 
컨테이너 보안 스캐닝의 주요 목표
컨테이너화된 애플리케이션을 사용할 때는 빈번한 컨테이너 보안 스캔을 수행하는 것이 중요합니다. 이 프로세스는 전반적인 보안 태세를 개선하기 위한 여러 목표를 달성하는 데 도움이 됩니다. 이 섹션에서는 이러한 목표를 심층적으로 논의하겠습니다.
1. 컨테이너 이미지의 취약점 식별
컨테이너 보안 스캐닝의 주요 목표 중 하나는 컨테이너 내 보안 취약점을 식별하는 것입니다. 이러한 취약점은 컨테이너에 사용된 기본 이미지나 설치된 타사 패키지에 존재할 수 있습니다. 기업은 이 데이터를 활용하여 개발자가 컨테이너를 안전하게 구성하도록 지원함으로써 공격자의 악용을 방지합니다. 컨테이너의 취약점 수가 너무 많거나 기업의 위험 수용 수준을 초과할 경우 배포를 차단할 수도 있습니다.
2. 잘못된 구성 및 보안 위험 탐지
컨테이너 보안 스캔은 취약점 식별뿐만 아니라 컨테이너 관련 잘못된 구성 문제도 찾아내는 데 도움이 됩니다. 일반적인 예로는 잘못된 권한 설정, 루트 권한 사용, 노출된 정보 등이 있습니다. 조직은 무단 접근을 방지하고 컨테이너가 공격자의 진입점이 되지 않도록 컨테이너가 안전하게 구성되었는지 확인해야 합니다.
3. 보안 표준 준수 보장
준수란 특정 지침이나 조건을 따르는 것을 의미합니다. 기업은 고객 신뢰, 보안 등 다양한 이유로 준수를 준수해야 합니다. 준수는 의료 기업의 HIPAA와 같이 해당 기업이 속한 산업에 따라 달라집니다. SOC II, HIPAA 등과 같은 규정 준수 표준은 컨테이너 보안을 보장하기 위한 엄격한 지침을 가지고 있습니다. 기업은 이러한 규정을 위반할 경우 규제 기관에 막대한 벌금을 지불해야 합니다. 컨테이너 보안 스캐닝 도구는 컨테이너가 위험으로부터 안전하고 규정 준수 요구 사항에 따라 작동하도록 보장합니다.
4. 안전하지 않은 컨테이너 배포 방지
앞서 논의한 바와 같이, 기업은 CI/CD 점검의 일환으로 안전하지 않은 컨테이너의 배포를 방지할 수 있습니다. 차단 조치는 일반적으로 취약한 컨테이너가 실제 운영 환경(프로덕션)에 배포되는 것을 막기 위한 것으로, 애플리케이션 사용자가 알려진 취약점을 이용해 해킹을 시도할 수 있는 상황을 방지합니다. 목표는 공격자가 시스템을 침해하고 민감한 정보를 유출하는 것을 막는 것입니다.
컨테이너 보안 스캐닝의 핵심 구성 요소
컨테이너 보안 스캐닝은 여러 구성 요소가 각기 다른 작업을 수행하는 긴 과정입니다. 이러한 핵심 구성 요소를 살펴보겠습니다.
이미지 스캐닝
컨테이너와 이미지는 관련 용어이지만 개발자들이 혼용하여 사용합니다. 이미지는 애플리케이션에 필요한 모든 것을 포함하는 완전한 패키지로 생각하십시오. 여기에는 애플리케이션 코드, 런타임 환경 등이 포함됩니다. 반면 컨테이너는 동일한 이미지의 실행 인스턴스입니다. 컨테이너는 격리된 환경이지만 서로 상호작용할 수 있습니다.
이미지 스캔은 앞서 언급한 동일한 패키지를 검사하는 과정입니다. 이 과정의 일환으로 컨테이너 보안 스캔 솔루션은 베이스 이미지, 애플리케이션 코드, 애플리케이션이 사용하는 종속성에서 취약점을 찾으려 합니다.
구성 평가
구성 검증 또는 평가는 컨테이너 및 그 주변 환경에 보안 취약한 구성(일명 잘못된 구성)이 없는지 확인하는 데 사용됩니다. 일반적인 잘못된 구성에는 기본 비밀번호 사용, 보안 취약한 비밀번호, 하드코딩된 API 키 또는 토큰 등이 포함됩니다.
취약점 탐지
취약점 탐지는 컨테이너 보안 스캐닝 솔루션의 또 다른 구성 요소입니다. 이 구성 요소는 컨테이너의 소프트웨어 구성 요소 내 취약점을 탐지하는 데 사용됩니다. OSV, Github Advisory, NIST 취약점 데이터베이스와 같은 취약점 데이터베이스를 활용하여 소프트웨어의 알려진 취약점 목록을 가져옵니다.
규정 준수 검사
규정 준수 검사 구성 요소는 사용 중인 컨테이너가 지침을 따르고 있는지 확인하기 위해 정기적으로 스캔합니다. 규정 준수 스캔에는 컨테이너가 CIS 벤치마크 및 NIST와 같은 기타 지침을 준수하는지 확인하는 작업이 포함됩니다.
런타임 모니터링
런타임 모니터링의 목표는 컨테이너가 실행 중인 상태에서 실시간으로 위협을 식별하는 것입니다. 여기에는 악성 도메인으로 대량의 아웃바운드 호출을 보내는 등 컨테이너의 비정상적인 동작을 확인하는 것도 포함됩니다.
런타임 보안은 일상적인 보안 문제 식별에 매우 유용하며 보호 계층 역할을 합니다.
컨테이너 보안 스캐너는 어떻게 작동하나요?
대부분의 컨테이너 보안 스캐닝 솔루션은 컨테이너 자체의 정보를 확인하고 다단계 접근 방식을 통해 런타임 취약점을 검사하는 방식으로 작동합니다. 이 프로세스는 정적 분석, 동적 분석, 런타임 모니터링의 장점을 결합하여 특정 시점에서 컨테이너 보안 상태를 완벽하게 파악할 수 있도록 합니다.
이 스캔 프로세스는 일반적으로 컨테이너의 정적 분석으로 시작됩니다. 컨테이너 스캐너는 기본 운영 체제, 설치된 패키지, 애플리케이션 코드 등을 포함하는 이미지의 레이어를 살펴봅니다. 그런 다음 알려진 취약점 데이터베이스 및 보안 권고 사항과 구성 요소를 교차 참조하여 위험을 판단합니다.
동적 분석과 런타임 모니터링은 컨테이너가 가동 중일 때만 실행됩니다. 동적 분석은 비정상적인 행동이나 신뢰할 수 없는 악성 도메인/네트워크 등과 통신하는 행위를 탐지하여 보안 경보를 발생시킬 수 있습니다. 컨테이너 런타임이 제공하는 하트비트 및 성능 이벤트 데이터 스트림을 구독하여, 특정 컨테이너의 작업(생성/시작/중지/삭제 등), 네트워크 연결, 리소스 사용 패턴 측면에서 동작을 지속적으로 모니터링합니다.
 
 
컨테이너의 다양한 취약점과 위험
컨테이너의 보안 취약점은 웹 및 API와 다르지 않습니다. 컨테이너 역시 다양한 유형의 보안 취약점을 가지고 있으며, 각각은 서로 다른 위험을 초래합니다. 몇 가지 취약점에 대해 살펴보겠습니다.
1. 운영체제 취약점
컨테이너는 격리된 환경이지만 호스트 OS 커널을 공유하므로 커널 수준 공격에 취약합니다. 이러한 취약점은 이미지를 철저히 스캔하면 쉽게 식별할 수 있습니다. 컨테이너화된 환경이 초래하는 주요 위험은 컨테이너가 구축된 호스트 OS가 (구성 방식에 따라) 인터넷에 노출되어 지속적인 공격에 취약하다는 점입니다.
그러나 호스트 OS를 자주 패치하고 업데이트함으로써 이 위험을 줄이고 전체 공격 표면
2. 애플리케이션 종속성과 라이브러리 문제
애플리케이션은 알려진 취약점을 가질 수 있는 다양한 하위 애플리케이션 라이브러리 및 종속성을 포함할 수 있습니다. 컨테이너를 스캔하면 이러한 구성 요소를 식별하고 업데이트하는 데 도움이 됩니다. 경우에 따라 종속성(예: Tensorflow)은 연구원들로부터 지속적으로 취약점을 발견받을 수 있으며, 이는 애플리케이션에 대한 무단 접근을 허용할 수 있으므로 빈번한 업데이트와 스캔이 필요합니다.
3. 잘못된 구성 및 안전하지 않은 기본값
컨테이너의 많은 취약점은 개발자가 기본값이나 자리표시자 비밀번호/설정을 안전한 것으로 교체하지 않을 때 발생합니다. 대표적인 예로, 애플리케이션이 베이스 이미지에 하드코딩된 WordPress 같은 알려진 CMS의 기본 비밀번호를 계속 사용하는 경우가 있습니다. 기본 인증 정보 취약점은 공격자가 애플리케이션 로직을 이해하고 해킹하는 데 시간을 들이지 않아도 되기 때문에 공격자들이 가장 선호하는 취약점 유형 중 하나입니다.
4. 공급망 위험 및 손상된 기본 이미지
공급망 공격는 최근 급증했습니다 (최근 XZ 공격 등). 컨테이너에 의존하는 대부분의 기업은 공개 레지스트리에서 직접 이미지를 사용합니다. 기본 이미지가 레지스트리에서 제거되고 악성 이미지로 대체되면 시스템이 쉽게 침해될 수 있습니다. 또 다른 방법은 개발자가 이미지를 가져올 때 철자 실수를 하는 경우입니다. 예를 들어 Python 대신 Python을 사용하는 경우입니다. 공격자들은 일반적으로 철자가 틀린 이미지를 공개 레지스트리에 업로드한 후 개발자들이 실수하기를 기다립니다.
컨테이너 보안 스캐닝 프로세스는 무엇인가요?
컨테이너 보안 스캐닝 프로세스는 컨테이너화된 애플리케이션의 보안을 유지하는 데 도움이 되는 몇 가지 핵심 단계를 포함합니다.
컨테이너 보안 스캔 과정을 자세히 살펴보겠습니다:
1. 정적 분석 기법
첫 번째 유형은 오프라인 모드에서 컨테이너 이미지를 스캔하여 베이스 이미지, 애플리케이션 코드 및 종속성의 취약점을 확인합니다. 이는 취약점 데이터베이스와 보안 권고 사항을 활용하여 수행되는 경우가 많습니다. 정적 코드 분석은 초기 단계에서 문제를 식별하고 배포되는 컨테이너 이미지에 알려진 보안 취약점이 포함되지 않도록 하는 데 도움이 됩니다.
2. 동적 분석 방법
다른 유형의 분석은 동적 분석으로, 자동화 도구나 보안 엔지니어가 실행 중인 컨테이너를 분석하여 실행 중인 컨테이너에 존재하는 위협을 식별합니다. 이는 보안 사고가 발생할 때 즉시 탐지하고 처리할 수 있도록 보장합니다. 간단히 말해 동적 분석은 실행 중 컨테이너의 동작과 상호작용을 모니터링하여 두 번째 방어선 역할을 합니다.
3. CI/CD 파이프라인에 스캐닝 통합
CI/CD 파이프라인을 통해 수행되는 배포 과정에는 컨테이너의 취약점이나 잘못된 구성을 철저히 검사하기 위한 보안 스캐닝이 통합됩니다. 컨테이너 보안 스캐닝 솔루션을 CI/CD 파이프라인에 통합함으로써 조직은 안전하게 개발 및 배포된 환경을 확보할 수 있습니다.
4. 스캔 결과 해석 및 대응 조치
컨테이너 보안 스캔 프로세스가 완료되면 다음 단계는 결과를 해석하고 취약점 및 위험을 해결하기 위한 조치를 취하는 것입니다. 스캔 결과 분석에 도움이 되는 요소들을 살펴보겠습니다.
5. 컨테이너 보안 스캔 보고서 이해하기
컨테이너 보안 스캔 보고서는 발견된 취약점, 잘못된 구성 및 규정 준수 문제에 대한 상세한 정보를 제공합니다. 이러한 보고서는 문제 해결에 중요하므로 반드시 이해해야 합니다. 즉, 스캔 보고서를 검토한 후 조직은 문제 영역을 파악하고 이를 해결할 수 있습니다.
6. 취약점 우선순위 지정
모든 취약점이 동일한 수준은 아니며 동일한 방식으로 처리되어서는 안 됩니다. 여러 취약점이 발견된 경우, 기업에 가장 큰 피해를 줄 수 있는 취약점을 중점적으로 고려하여 위험 요소를 평가해야 합니다. 조직은 우선적으로 중요한 취약점을 해결함으로써 가장 위험한 위험 요소를 제거하고, 그 과정에서 컨테이너화된 애플리케이션을 보호할 수 있습니다.
7. 취약한 구성 요소의 패치 및 업데이트
취약점 관리는 취약점이 확인된 모든 손상된 구성 요소에 대한 패치 및 업데이트를 필요로 합니다. 여기에는 기본 이미지, 애플리케이션 라이브러리 및 종속성 업데이트가 포함됩니다. 구성 요소에 대한 빈번한 패치 및 업데이트는 안전한 인프라 구축에 도움이 됩니다.
8. 컨테이너 구성 강화
컨테이너 강화 프로세스는 컨테이너에서 발견된 잘못된 구성을 수정하는 데 사용됩니다. 또한 적절한 보안 표준이 적용되도록 보장하는 데도 사용됩니다. 보안 표준에는 안전한 암호 사용, 불필요한 접근 방지, 민감한 정보 보호 등이 포함됩니다. 컨테이너 강화는 규정 준수를 고려하는 기업에게도 중요합니다.
컨테이너 보안 스캔의 이점
컨테이너 보안 스캔은 보안 태세를 개선하려는 기업에 다양한 이점을 제공합니다. 주요 이점 몇 가지를 살펴보겠습니다.
- 보안 강화: 컨테이너 보안 스캔은 취약점과 잘못된 구성을 식별하고 처리하여 컨테이너화된 애플리케이션의 보안을 개선하는 데 도움이 됩니다. 이는 조직이 보안 문제에 대해 사후 대응이 아닌 사전 대응을 할 수 있게 하여 침해 발생 가능성을 줄인다는 것을 의미합니다.
 - 규정 준수: 컨테이너 보안 스캐닝 솔루션이 제공하는 규정 준수 점검은 설정된 업계 표준을 따라가고 규제 기관의 규정 준수가 유지되도록 하는 데 도움이 됩니다.
 - 침해 방지: 기업이 적절한 컨테이너 보안 스캐닝을 구축하면 개발자가 보안 취약한 컨테이너를 배포하는 것을 허용할 수 없으므로, 스캐닝 프로세스는 데이터 침해를 방지하는 데 도움이 됩니다.
 - 지속적 모니터링: 실행 중인 컨테이너를 지속적으로 추적함으로써 실행 중이거나 진행 중인 위협에 더 쉽게 대응할 수 있습니다. 런타임 모니터링은 컨테이너와 그 운영을 지속적으로 평가하므로 추가적인 보호 계층을 제공합니다.
 - 개선된 자원 할당: 컨테이너 보안 스캔은 기업이 전반적인 자원 할당을 개선하고 보안 관리와 관련된 비용을 절감하는 데 도움이 됩니다.
 
컨테이너 보안 스캐닝 모범 사례
컨테이너를 안전하게 사용하기 위해서는 개발자가 일련의 모범 사례를 따라야 합니다. 효과적인 컨테이너 보안 스캔을 위한 주요 모범 사례는 다음과 같습니다.
#1. 대규모 배포 환경에서 보안 스캔 확장
대기업이 컨테이너를 배포에 활용함에 따라 다양한 솔루션을 통해 컨테이너 보안 스캔 프로세스를 자동화하는 것이 중요합니다. 대규모 애플리케이션의 경우, 기업은 개발자가 컨테이너의 문제를 찾고, 새로운 CVE를 주시하며, 컨테이너를 통해 공개되거나 유출되는 민감한 정보를 계속해서 찾도록 의존할 수 없습니다. 기업은 컨테이너를 레지스트리에 등록하는 것부터 인터넷으로 가져가는 것(프로덕션으로 배송)에 이르기까지 컨테이너의 전체 라이프사이클을 보호하기 위한 자동화 파이프라인을 구축해야 합니다.
#2. 보안과 개발 속도의 균형
애자일 방법론으로 인해 기업들은 요즘 빠르게 배포하는 것을 선호하지만, 애플리케이션 배포 시 적절한 보안 통제가 마련되어 있는지 확인하는 것이 중요합니다. 개발자들이 애플리케이션을 빠르게 배포하려 할 때 API 키 하드코딩, 디버그 모드 비활성화, 보안 통제 추가 등을 소홀히 하는 실수를 저지르기 쉽습니다. 기업은 CI/CD 파이프라인에 컨테이너 보안 스캐닝 솔루션을 사용하고 개발 및 DevOps 팀에 보안 제어에 대해 교육함으로써 컨테이너의 보안을 보장할 수 있습니다.
#3. 지속적인 모니터링 및 자동화된 문제 해결
지속적인 스캔과 후속 제어는 새로운 위협이 발생할 때(실시간으로) 이를 추적하고 자동으로 제거하는 데 도움이 됩니다. 여기에는 런타임 모니터링 문제 해결과 자동화된 패치 및 업데이트 프로세스 마련이 포함됩니다. 이를 통해 조직은 보안 사고에 신속히 대응하면서 지속적인 모니터링과 자동화된 보안 사고 대응을 시행하고 안전한 상태를 유지할 수 있습니다.
#4. 안전한 컨테이너 레지스트리 구현
컨테이너에 크게 의존하는 기업들은 위험하거나 승인되지 않은 컨테이너 이미지 사용을 줄이는 데 도움이 되는 안전한 컨테이너 레지스트리 또는 만족스러운 솔루션을 도입하는 것이 필수적입니다. 이미지 서명, 접근 제어 조치 사용, 레지스트리의 알려진 취약점에 대한 정기적 스캔을 통해 이를 달성할 수 있습니다. 컨테이너 아티팩트를 사용하면 개발자가 악성 이미지를 사용하거나 타이포스쿼팅 공격의 표적이 되는 것을 방지할 수 있습니다.
결론
컨테이너 보안 스캔은 컨테이너화된 애플리케이션을 검사하고 위험 상태를 개선하는 데 있어 핵심적인 활동입니다. 위험 요소, 잘못된 구성, 규정 준수 문제를 지적함으로써 보안 스캔은 컨테이너의 보안을 강화하고 공격 가능성을 최소화하는 데 기여할 수 있습니다.
더 나은 커버리지와 보안을 위해 컨테이너 보안 스캐닝 솔루션이 CI/CD 파이프라인에 통합되어 보안 취약한 컨테이너가 운영 환경에 배포되어 기업의 표적이 되는 것을 방지하는 것이 중요합니다.
FAQs
컨테이너 보안 스캔은 컨테이너 이미지와 실행 중인 컨테이너를 스캔하여 취약점, 구성 문제 및 규정 준수 위반 사항을 탐지하는 과정입니다. 컨테이너 보안 스캔의 목표는 컨테이너가 모든 취약점으로부터 안전하도록 보장하여 금전적 손실과 평판 손상 등 기업에 심각한 피해를 방지하는 것입니다.
컨테이너 스캐닝 는 애플리케이션이 사용하는 기본 이미지와 종속성 내 취약점, 잘못된 구성, 규정 준수 위반 사항을 식별할 수 있습니다. 또한 보안 위협을 식별하고 컨테이너가 배포되기 전에 보안 상태를 판단하는 데 도움을 줍니다.
DevSecOps 환경에서의 컨테이너 스캐닝은 컨테이너 스캐닝은 컨테이너가 프로덕션에 배포되기 전에 보안 문제를 조기에 식별하기 위해 애플리케이션 개발 파이프라인에 컨테이너 스캐닝을 통합하는 것으로 정의될 수 있습니다.
컨테이너 취약점 스캔은 위협 행위자의 공격 및 민감한 정보(PII)에 대한 무단 접근을 방지하기 위해 컨테이너 내 취약점을 식별하는 체계적이고 다단계적인 프로세스로 정의될 수 있습니다.
컨테이너 보안에 사용할 수 있는 도구로는 Docker Security Scanning와 Clair가 있습니다. 이 도구들은 컨테이너화된 애플리케이션의 위험 요소 발견, 잘못된 구성 식별, 규정 준수 문제 해결을 통해 철저한 컨테이너 보안을 수행할 수 있습니다.

