Docker Scout SBOM

Docker Scout SBOM

이미지 분석은 이미지 SBOM을 사용해 이미지가 포함한 패키지와 버전을 이해해요. Docker Scout는 이미지에 SBOM 인증이 있으면 그것을 사용해요 (권장). SBOM 인증이 없으면 Docker Scout는 이미지 내용을 인덱싱해 SBOM을 만들어요.

CLI에서 보기

Docker Scout가 생성한 SBOM의 내용을 보려면 docker scout sbom 명령을 사용할 수 있어요.

$ docker scout sbom [IMAGE]

기본적으로 이 명령은 SBOM을 JSON 형식으로 stdout에 출력해요. docker scout sbom이 만드는 기본 JSON 형식은 SPDX-JSON이 아니에요. SPDX로 출력하려면 --format spdx 플래그를 사용하세요.

$ docker scout sbom --format spdx [IMAGE]

인간이 읽을 수 있는 목록을 만들려면 --format list 플래그를 사용하세요.

$ docker scout sbom --format list alpine

           Name             Version    Type
───────────────────────────────────────────────
  alpine-baselayout       3.4.3-r1     apk
  alpine-baselayout-data  3.4.3-r1     apk
  alpine-keys             2.4-r1       apk
  apk-tools               2.14.0-r2    apk
  busybox                 1.36.1-r2    apk
  busybox-binsh           1.36.1-r2    apk
  ca-certificates         20230506-r0  apk
  ca-certificates-bundle  20230506-r0  apk
  libc-dev                0.7.2-r5     apk
  libc-utils              0.7.2-r5     apk
  libcrypto3              3.1.2-r0     apk
  libssl3                 3.1.2-r0     apk
  musl                    1.2.4-r1     apk
  musl-utils              1.2.4-r1     apk
  openssl                 3.1.2-r0     apk
  pax-utils               1.3.7-r1     apk
  scanelf                 1.3.7-r1     apk
  ssl_client              1.36.1-r2    apk
  zlib                    1.2.13-r1    apk

docker scout sbom 명령에 대한 자세한 내용은 CLI 참조를 참고하세요.

빌드 인증으로 첨부하기 {#attest}

SBOM을 생성해 빌드 시점에 인증(attestation)으로 이미지에 첨부할 수 있어요. BuildKit은 Docker Scout가 사용하는 것과 다른 기본 SBOM 생성기를 제공해요. docker build 명령의 --attest 플래그로 BuildKit이 Docker Scout SBOM 생성기를 사용하도록 구성할 수 있어요. Docker Scout SBOM 인덱서는 더 풍부한 결과를 제공하고 Docker Scout 이미지 분석과 더 나은 호환성을 보장해요.

$ docker build --tag <org>/<image> \
  --attest type=sbom,generator=docker/scout-sbom-indexer:latest \
  --push .

SBOM 인증으로 이미지를 빌드하려면 containerd 이미지 저장소 기능을 사용하거나, docker-container 빌더를 --push 플래그와 함께 사용해 이미지(인증 포함)를 레지스트리에 직접 push해야 해요. 클래식 이미지 저장소는 인증을 이미지에 추가하는 데 필요한 매니페스트 목록이나 이미지 인덱스를 지원하지 않아요.

파일로 추출하기 (Extract to file)

이미지의 SBOM을 SPDX JSON 파일로 추출하는 명령은 이미지가 레지스트리에 push됐는지 로컬 이미지인지에 따라 달라요.

원격 이미지 (Remote image)

이미지의 SBOM을 추출해 파일로 저장하려면 docker buildx imagetools inspect 명령을 사용할 수 있어요. 이 명령은 레지스트리의 이미지에서만 동작해요.

$ docker buildx imagetools inspect <image> --format "{{ json .SBOM }}" > sbom.spdx.json

로컬 이미지 (Local image)

로컬 이미지의 SPDX 파일을 추출하려면 local exporter로 이미지를 빌드하고 scout-sbom-indexer SBOM 생성기 플러그인을 사용하세요.

다음 명령은 SBOM을 build/sbom.spdx.json 파일로 저장해요.

$ docker build --attest type=sbom,generator=docker/scout-sbom-indexer:latest \
  --output build .