Docker Scout SBOMs

映像檔分析會使用映像檔的 SBOM 來了解映像檔包含哪些套件及其版本。Docker Scout 若能在映像檔上找到 SBOM 證明,將會優先使用(建議)。如果沒有可用的 SBOM 證明,Docker Scout 會透過索引映像檔內容來建立一個。

從 CLI 查看

若要檢視 Docker Scout 所產生的 SBOM 內容,可以使用 docker scout sbom 指令。

$ docker scout sbom [IMAGE]

預設情況下,此指令會以 JSON 格式將 SBOM 輸出至標準輸出 (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 參考文件

作為建置證明 (Attestation) 附加

您可以在建置時將 SBOM 產生並作為證明 (attestation) 附加到映像檔中。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 旗標,將映像檔(連同證明)直接推送到 registry。傳統的映像檔儲存庫不支援資訊清單列表 (manifest lists) 或映像檔索引 (image indices),而這些是將證明加入映像檔的必要條件。

擷取至檔案

根據映像檔是已推送到 registry 的映像檔,還是本機映像檔,擷取其 SBOM 的指令會有所不同。

遠端映像檔

若要擷取映像檔的 SBOM 並儲存到檔案中,可以使用 docker buildx imagetools inspect 指令。此指令僅適用於 registry 中的映像檔。

$ 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 .
© . This site is unofficial and not affiliated with Kubernetes or Docker Inc.