⚠️ Traduction non officielle - Cette documentation est une traduction communautaire non officielle de Docker.

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 .