SBOM Docker Scout
L'analyse d'image utilise les SBOM d'image pour comprendre quels paquets et versions une image contient. Docker Scout utilise les attestations SBOM si elles sont disponibles sur l'image (recommandé). Si aucune attestation SBOM n'est disponible, Docker Scout en crée une en indexant le contenu de l'image.
Visualiser depuis la CLI
Pour voir le contenu du SBOM que Docker Scout génère, vous pouvez utiliser la
commande docker scout sbom
.
$ docker scout sbom [IMAGE]
Par défaut, ceci affiche le SBOM au format JSON sur stdout.
Le format JSON par défaut produit par docker scout sbom
n'est pas SPDX-JSON.
Pour sortir SPDX, utilisez le flag --format spdx
:
$ docker scout sbom --format spdx [IMAGE]
Pour générer une liste lisible par l'humain, utilisez le flag --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
Pour plus d'informations sur la commande docker scout sbom
, consultez la
référence
CLI.
Attacher comme attestation de build
Vous pouvez générer le SBOM et l'attacher à l'image au moment du build comme une
attestation. BuildKit fournit un générateur
SBOM par défaut qui est différent de celui que Docker Scout utilise.
Vous pouvez configurer BuildKit pour utiliser le générateur SBOM Docker Scout
en utilisant le flag --attest
pour la commande docker build
.
L'indexeur SBOM Docker Scout fournit des résultats plus riches
et assure une meilleure compatibilité avec l'analyse d'image Docker Scout.
$ docker build --tag <org>/<image> \
--attest type=sbom,generator=docker/scout-sbom-indexer:latest \
--push .
Pour construire des images avec des attestations SBOM, vous devez utiliser soit la fonctionnalité de
stockage
d'image containerd, soit utiliser un
builder docker-container
avec le flag --push
pour pousser l'image (avec les attestations)
directement vers un registre. Le stockage d'image classique ne prend pas en charge les listes de manifestes
ou les indices d'image, qui sont requis pour ajouter des attestations à une image.
Extraire vers un fichier
La commande pour extraire le SBOM d'une image vers un fichier SPDX JSON est différente selon que l'image a été poussée vers un registre ou s'il s'agit d'une image locale.
Image distante
Pour extraire le SBOM d'une image et l'enregistrer dans un fichier, vous pouvez utiliser la commande docker buildx imagetools inspect
. Cette commande ne fonctionne que pour les images dans un
registre.
$ docker buildx imagetools inspect <image> --format "{{ json .SBOM }}" > sbom.spdx.json
Image locale
Pour extraire le fichier SPDX pour une image locale, construisez l'image avec l'exporteur local
et utilisez le plugin générateur SBOM scout-sbom-indexer
.
La commande suivante enregistre le SBOM dans un fichier à build/sbom.spdx.json
.
$ docker build --attest type=sbom,generator=docker/scout-sbom-indexer:latest \
--output build .