Docker Scout 이미지 분석
Docker Scout 이미지 분석
저장소에 이미지 분석을 활성화하면 Docker Scout는 해당 저장소로 push하는 새 이미지를 자동으로 분석해요.
이미지 분석은 SBOM(소프트웨어 자재 명세서)과 기타 이미지 메타데이터를 추출하고, 보안 권고의 취약점 데이터와 평가해요.
CLI나 Docker Desktop으로 일회성 작업으로 이미지 분석을 실행하면 Docker Scout는 이미지에 대한 데이터를 저장하지 않아요. 하지만 컨테이너 이미지 저장소에 대해 Docker Scout를 활성화하면 Docker Scout는 분석 후 이미지의 메타데이터 스냅샷을 저장해요. 새 취약점 데이터가 생기면 Docker Scout는 메타데이터 스냅샷으로 분석을 재보정하는데, 이는 이미지의 보안 상태가 실시간으로 갱신된다는 뜻이에요. 이 동적 평가 덕분에 새 CVE 정보가 공개돼도 이미지를 다시 분석할 필요가 없어요.
Docker Scout 이미지 분석은 Docker Hub 저장소에서 기본적으로 사용할 수 있어요. 타사 레지스트리와 다른 서비스도 통합할 수 있어요. 자세한 내용은 Docker Scout를 다른 시스템과 통합하기를 참고하세요.
저장소에 Docker Scout 활성화하기
각 구독 등급에 Scout 활성화 저장소가 몇 개 포함되는지 알아보려면 구독과 기능(Subscriptions and features)을 참고하세요.
타사 레지스트리의 저장소에서 이미지 분석을 활성화하려면 먼저 해당 레지스트리가 Docker 조직의 Docker Scout와 통합되어 있어야 해요. Docker Hub는 기본적으로 통합돼요. 자세한 내용은 컨테이너 레지스트리 통합을 참고하세요.
[!NOTE]
저장소에서 이미지 분석을 활성화하려면 Docker 조직에서 Editor 또는 Owner 역할이 있어야 해요.
이미지 분석을 활성화하려면:
- Docker Scout Dashboard의 Repository settings(저장소 설정)로 이동하세요.
- 활성화하려는 저장소를 선택하세요.
- Enable image analysis(이미지 분석 활성화) 를 선택하세요.
저장소에 이미 이미지가 있으면 Docker Scout가 최신 이미지를 자동으로 pull하고 분석해요.
레지스트리 이미지 분석하기
레지스트리의 이미지에 이미지 분석을 트리거하려면 이미지를 Docker Scout와 통합된 레지스트리의, 이미지 분석이 활성화된 저장소로 push하세요.
[!NOTE]
Docker Scout 플랫폼의 이미지 분석은 이미지에 SBOM 인증(attestation)이 없는 한 최대 이미지 파일 크기 제한이 10 GB예요. 최대 이미지 크기 참고.
-
docker login명령이나 Docker Desktop의 Sign in 버튼으로 Docker ID에 로그인하세요. -
분석하려는 이미지를 빌드하고 push하세요.
$ docker build --push --tag <org>/<image:tag> --provenance=true --sbom=true .--provenance=true와--sbom=true플래그로 빌드하면 빌드 인증(build attestations)이 이미지에 첨부돼요. Docker Scout는 인증을 사용해 더 세밀한 분석 결과를 제공해요.[!NOTE]
기본
docker드라이버는 containerd 이미지 저장소를 사용할 때만 빌드 인증을 지원해요. -
Docker Scout Dashboard의 Images 페이지로 이동하세요.
이미지를 레지스트리에 push한 직후 목록에 나타나요. 분석 결과가 나타나는 데 몇 분 걸릴 수 있어요.
로컬에서 이미지 분석하기
Docker Desktop이나 Docker CLI용 docker scout 명령으로 로컬 이미지를 분석할 수 있어요.
Docker Desktop
[!NOTE]
Docker Desktop 백그라운드 인덱싱은 최대 10 GB 크기의 이미지를 지원해요. 최대 이미지 크기 참고.
Docker Desktop GUI로 이미지를 로컬에서 분석하려면:
-
분석하려는 이미지를 pull하거나 빌드하세요.
-
Docker Dashboard의 Images 보기로 이동하세요.
-
목록에서 로컬 이미지 중 하나를 선택하세요.
선택한 이미지에 대해 Docker Scout 분석이 찾은 패키지와 취약점의 세부 내역을 보여 주는 Image details 보기가 열려요.
CLI
docker scout CLI 명령은 터미널에서 Docker Scout를 사용할 수 있는 명령줄 인터페이스를 제공해요.
docker scout quickview: 지정된 이미지 요약, Quickview 참고docker scout cves: 지정된 이미지 로컬 분석, CVEs 참고docker scout compare: 두 이미지 분석·비교
기본적으로 결과는 표준 출력으로 출력돼요. 결과를 SARIF(Static Analysis Results Interchange Format) 같은 구조적 형식의 파일로도 내보낼 수 있어요.
Quickview
docker scout quickview 명령은 주어진 이미지와 그 베이스 이미지에서 발견된 취약점의 개요를 제공해요.
$ docker scout quickview traefik:latest
✓ SBOM of image already cached, 311 packages indexed
Your image traefik:latest │ 0C 2H 8M 1L
Base image alpine:3 │ 0C 0H 0M 0L
베이스 이미지가 오래됐으면 quickview 명령은 베이스 이미지를 갱신하면 이미지의 취약점 노출이 어떻게 바뀔지도 보여 줘요.
$ docker scout quickview postgres:13.1
✓ Pulled
✓ Image stored for indexing
✓ Indexed 187 packages
Your image postgres:13.1 │ 17C 32H 35M 33L
Base image debian:buster-slim │ 9C 14H 9M 23L
Refreshed base image debian:buster-slim │ 0C 1H 6M 29L
│ -9 -13 -3 +6
Updated base image debian:stable-slim │ 0C 0H 0M 17L
│ -9 -14 -9 -6
CVEs
docker scout cves 명령은 이미지의 모든 취약점에 대한 전체 보기를 제공해요. 이 명령은 관심 있는 취약점을 심각도나 패키지 유형 등으로 더 정밀하게 지정할 수 있는 여러 플래그를 지원해요.
$ docker scout cves --format only-packages --only-vuln-packages \
--only-severity critical postgres:13.1
✓ SBOM of image already cached, 187 packages indexed
✗ Detected 10 vulnerable packages with a total of 17 vulnerabilities
Name Version Type Vulnerabilities
───────────────────────────────────────────────────────────────────────────
dpkg 1.19.7 deb 1C 0H 0M 0L
glibc 2.28-10 deb 4C 0H 0M 0L
gnutls28 3.6.7-4+deb10u6 deb 2C 0H 0M 0L
libbsd 0.9.1-2 deb 1C 0H 0M 0L
libksba 1.3.5-2 deb 2C 0H 0M 0L
libtasn1-6 4.13-3 deb 1C 0H 0M 0L
lz4 1.8.3-1 deb 1C 0H 0M 0L
openldap 2.4.47+dfsg-3+deb10u5 deb 1C 0H 0M 0L
openssl 1.1.1d-0+deb10u4 deb 3C 0H 0M 0L
zlib 1:1.2.11.dfsg-1 deb 1C 0H 0M 0L
이 명령들과 사용법에 대한 자세한 내용은 CLI 참조 문서를 참고하세요.
취약점 심각도 평가
Docker Scout는 권고 소스의 취약점 데이터를 기반으로 취약점에 심각도 등급을 부여해요. 권고는 취약점이 영향받는 패키지 유형에 따라 순위가 매겨지고 우선순위가 정해져요. 예를 들어 취약점이 OS 패키지에 영향을 주면 배포판 유지보수자가 부여한 심각도 수준이 우선돼요.
선호 권고 소스가 CVE에 심각도 등급은 부여했지만 CVSS 점수는 부여하지 않았다면, Docker Scout는 다른 소스의 CVSS 점수를 표시하는 것으로 폴백해요. 선호 권고의 심각도 등급과 폴백 권고의 CVSS 점수가 함께 표시돼요. 즉 선호 권고가 LOW 등급을 부여하지만 CVSS 점수가 없고 폴백 권고가 CVSS 9.8을 부여하면, 취약점은 CVSS 점수 9.8에 심각도 등급 LOW를 가질 수 있어요.
어떤 소스에서도 CVSS 점수가 부여되지 않은 취약점은 Unspecified(미지정) (U)로 분류돼요.
Docker Scout는 독자적인 취약점 지표 시스템을 구현하지 않아요. 모든 지표는 Docker Scout가 통합하는 보안 권고에서 상속돼요. 권고는 취약점 분류에 다른 임계값을 사용할 수 있어요. 선택된 권고 소스가 CVSS v4와 v3 데이터를 모두 제공하면 Docker Scout는 CVSS v4를 선호해요. CVSS v3.x와 v4.0이 정의한 정성적 심각도 등급은 같은 점수 범위를 사용해요.
| CVSS 점수 (CVSS score) | 심각도 등급 (Severity rating) |
|---|---|
| 0.1 – 3.9 | Low (L) |
| 4.0 – 6.9 | Medium (M) |
| 7.0 – 8.9 | High (H) |
| 9.0 – 10.0 | Critical (C) |
자세한 내용은 취약점 지표 (NIST)를 참고하세요.
앞서 설명한 권고 우선순위와 폴백 메커니즘 때문에 Docker Scout에 표시되는 심각도 등급은 이 등급 체계에서 벗어날 수 있다는 점에 유의하세요.
최대 이미지 크기
Docker Scout 플랫폼의 이미지 분석과 Docker Desktop의 백그라운드 인덱싱으로 트리거되는 분석은 이미지 파일 크기 제한이 10 GB(비압축)예요. 그보다 큰 이미지를 분석하려면: