취약점 스캔

컨테이너 분석은 컨테이너의 취약점 스캔 및 메타데이터 스토리지를 제공합니다. 이 페이지에서는 취약점 스캔에 대해 설명합니다.

취약점 스캔

소프트웨어 취약점은 우발적인 시스템 오류를 일으키거나 의도적으로 악용될 수 있는 약점을 말합니다.

컨테이너 분석은 Container Registry의 이미지에 대한 취약점 스캔을 수행하고 취약점 정보를 모니터링하여 최신 상태로 유지합니다. 이 프로세스는 스캔 및 지속적 분석이라는 두 가지 주요 작업으로 구성됩니다.

이미지 스캔이 완료된 후 생성된 취약점 결과는 해당 이미지에 대한 취약점 어커런스의 모음입니다.

스캔

컨테이너 분석은 새로운 이미지가 Container Registry에 업로드될 때 이를 스캔합니다. 이 스캔은 컨테이너의 시스템 패키지에 대한 정보를 추출합니다.

컨테이너 분석은 이미지 다이제스트를 기반으로 이미지를 한 번만 스캔합니다. 즉, 태그를 추가하거나 수정하면 새 스캔이 트리거되지 않으며 이미지의 콘텐츠만 변경됩니다.

컨테이너 분석은 보안 취약점에서 공개적으로 모니터링되는 패키지만 감지합니다.

지속적 분석

컨테이너 분석은 이미지 업로드 시 발견된 취약점에 대한 어커런스를 만듭니다. 초기 스캔 후 Container Registry에서 스캔한 이미지의 메타데이터를 지속적으로 모니터링하여 새로운 취약점이 있는지 확인합니다.

컨테이너 분석은 취약점 소스에서 새롭게 업데이트된 취약점 정보를 수신하면 스캔한 이미지의 메타데이터를 업데이트하여 최신 상태로 유지함으로써 새 메모에 대한 새로운 취약점 어커런스를 생성하고 더 이상 유효하지 않은 취약점 어커런스를 삭제합니다.

취약점 소스

Container Analysis API는 Linux 배포판의 패키지 취약점 스캔을 지원하고 다음 소스에서 CVE 데이터를 가져옵니다.

지원되는 버전

컨테이너 분석은 다음 OS 버전에 대한 취약점 스캔을 지원합니다.

  • Debian GNU/Linux - 버전: 9, 10
  • Ubuntu - 버전: 12.04, 12.10, 13.04, 14.04, 14.10, 15.04, 15.10, 16.05, 16.10, 17.04, 17.10, 18.04, 18.10, 20.04
  • Alpine Linux - 버전: 3.3, 3.4, 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11, 3.12
  • CentOS - 버전: 6, 7, 8 및 부 버전
  • Redhat - 버전: 6, 7, 8 및 부 버전

취약점의 심각도 수준

컨테이너 분석은 다음과 같은 심각도 수준을 사용합니다.

  • 심각
  • 높음
  • 보통
  • 낮음
  • 최소

심각도 수준은 취약점의 악용 가능성, 범위, 영향, 성숙도와 같은 요소를 반영하는 정성적 라벨입니다. 예를 들어 원격 사용자가 시스템에 쉽게 액세스하여 인증 또는 사용자 상호작용 없이 임의의 코드를 실행할 수 있는 취약점이 있다면 이 취약점은 심각으로 분류됩니다.

두 가지 심각도가 각 취약점과 연결되어 있습니다.

  • 유효 심각도 - Linux 배포판에서 할당한 심각도 수준. 컨테이너 분석은 배포판 관련 심각도 수준을 볼 수 없는 경우 메모 제공업체가 할당한 심각도 수준을 사용합니다.

  • CVSS 점수 - Common Vulnerability Scoring System 점수 및 관련 심각도 수준. CVSS 점수 계산 방법에 대한 자세한 내용은 CVSS 3.0 사양을 참조하세요.

특정 취약점의 경우 계산된 CVSS 점수에서 파생된 심각도가 유효 심각도와 일치하지 않을 수 있습니다. 심각도 수준을 할당하는 Linux 배포판은 자체 기준을 사용하여 취약점이 배포에 미치는 구체적인 영향을 평가합니다.

기본 컨테이너 분석 서비스 계정

컨테이너 분석은 사용자를 대신해 사용자 이미지에 대한 정보를 수집하는 특수한 Google 계정인 서비스 계정을 이용해 사용자의 컨테이너 이미지를 분석합니다. 컨테이너 분석 서비스 계정의 이메일은 service-[PROJECT_NUMBER]@container-analysis.iam.gserviceaccount.com입니다. 이 계정은 컨테이너 분석 서비스 에이전트 역할을 사용합니다.

취약점 스캔을 사용 설정하면 이 기능에서 사용하는 Container Scanning API도 특수한 Google 계정을 사용합니다. 해당 서비스 계정의 이메일은 service-[PROJECT_NUMBER]@gcp-sa-containerscanning.iam.gserviceaccount.com입니다. 이 계정은 Container Scanner 서비스 에이전트 역할을 사용합니다.

Cloud Console의 IAM 메뉴를 통해 프로젝트의 서비스 계정을 볼 수 있습니다.

컨테이너 분석 인터페이스

Cloud Console에서 Container Registry 컨테이너의 이미지 취약점 및 이미지 메타데이터를 볼 수 있습니다.

gcloud 도구를 사용하여 취약점 및 이미지 메타데이터를 볼 수 있습니다.

또한 Container Analysis REST API로 이러한 작업을 수행할 수도 있습니다. 다른 Cloud Platform API를 이용할 때처럼 OAuth2를 이용해 액세스를 인증해야 합니다 . 인증이 끝나면 API를 이용해 새로운 메모와 어커런스를 만들고 취약점 어커런스를 확인하는 등의 작업을 할 수 있습니다.

Container Analysis API는 gRPC와 REST/JSON을 모두 지원합니다. 클라이언트 라이브러리나 REST/JSON용 cURL을 이용해 API를 호출할 수 있습니다.

취약한 이미지의 배포 제어

컨테이너 분석에서 제공하는 취약점 정보를 기반으로 Binary Authorization을 사용하여 Cloud Build 파이프라인의 일부로 취약점 허용 목록을 만들 수 있습니다. 취약점이 허용 목록의 정책을 위반하면 빌드가 실패합니다.

또한 증명을 만들기 위해 Binary Authorization과 컨테이너 분석을 통합하여 알려진 보안 문제가 있는 컨테이너 이미지가 배포 환경에서 실행되는 일을 막을 수 있습니다.

다음 단계