Docker Scout SBOM

映象分析使用映象 SBOM 來了解映象包含哪些包和版本。Docker Scout 在映象上可用時使用 SBOM 證明(推薦)。如果沒有任何 SBOM 證明可用,Docker Scout 會透過索引映象內容來建立一個。

從 CLI 檢視

要檢視 Docker Scout 生成的 SBOM 內容,您可以使用 docker scout sbom 命令。

$ docker scout sbom [IMAGE]

預設情況下,這會將 SBOM 以 JSON 格式列印到標準輸出。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 參考

作為構建證明附加

您可以在構建時生成 SBOM 並將其作為證明附加到映象。BuildKit 提供了一個預設的 SBOM 生成器,它與 Docker Scout 使用的不同。您可以使用 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 標誌將映象(帶有證明)直接推送到登錄檔。經典的映象儲存不支援清單列表或映象索引,而這是將證明新增到映象所必需的。

提取到檔案

將映象 SBOM 提取到 SPDX JSON 檔案的命令因映象是否已推送到登錄檔或它是本地映象而異。

遠端映象

要提取映象的 SBOM 並將其儲存到檔案,您可以使用 docker buildx imagetools inspect 命令。此命令僅適用於登錄檔中的映象。

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

本地映象

要為本地映象提取 SPDX 檔案,請使用 local 匯出器構建映象,並使用 scout-sbom-indexer SBOM 生成器外掛。

以下命令將 SBOM 儲存到 build/sbom.spdx.json 檔案中。

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