Skip to content

Docker Scout SBOMs

イメージ分析はイメージの SBOM を使用して、イメージ内に含まれるパッケージやバージョンを把握します。Docker Scout は、イメージに SBOM アテステーションが存在する場合(推奨)にそれを使用します。SBOM アテステーションがない場合は、イメージ内容をインデックス化して新たに SBOM を生成します。

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 Scout SBOM ジェネレーターを使用するには、docker build コマンドの --attest フラグを設定します。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 ジェネレーターを使用してビルドします。

次のコマンドは、build/sbom.spdx.json に SBOM を保存します。

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