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

Sécurité de la chaîne d'approvisionnement pour les images Docker C++

Prérequis

  • Vous avez un client Git. Les exemples de cette section utilisent un client Git en ligne de commande, mais vous pouvez utiliser n'importe quel client.
  • Vous avez Docker Desktop d'installé, avec containerd activé pour tirer et stocker les images (c'est une case à cocher dans Paramètres > Général). Sinon, si vous utilisez Docker Engine :
    • Vous avez le plugin CLI Docker SBOM d'installé. Pour l'installer sur Docker Engine, utilisez la commande suivante :

      $ curl -sSfL https://raw.githubusercontent.com/docker/sbom-cli-plugin/main/install.sh | sh -s --
    • Vous avez le plugin CLI Docker Scout d'installé. Pour l'installer sur Docker Engine, utilisez la commande suivante :

      $ curl -sSfL https://raw.githubusercontent.com/docker/scout-cli/main/install.sh | sh -s --
    • Vous avez containerd activé pour Docker Engine.

Aperçu

Cette section vous guide dans l'extraction de nomenclatures logicielles (SBOM) d'une image Docker C++ en utilisant le plugin CLI Docker SBOM. Les SBOM fournissent une liste détaillée de tous les composants d'un paquet logiciel, y compris leurs versions et licences. Vous pouvez utiliser les SBOM pour suivre la provenance de votre logiciel et vous assurer qu'il est conforme aux politiques de sécurité et de licence de votre organisation.

Générer un SBOM

Ici, nous utiliserons l'image Docker que nous avons construite dans le guide Créer une construction multi-étapes pour votre application C++. Si vous n'avez pas encore construit l'image, suivez les étapes de ce guide pour la construire. L'image est nommée hello. Pour générer un SBOM pour l'image hello, exécutez la commande suivante :

$ docker sbom hello

La commande dira "Aucun paquet découvert". C'est parce que l'image finale est une image scratch et n'a aucun paquet. Essayons à nouveau avec Docker Scout :

$ docker scout sbom --format=list hello

Cette commande vous dira la même chose.

Générer une attestation SBOM

Le SBOM peut être généré pendant le processus de construction et "attaché" à l'image. C'est ce qu'on appelle une attestation SBOM. Pour générer une attestation SBOM pour l'image hello, modifions d'abord le Dockerfile :

ARG BUILDKIT_SBOM_SCAN_STAGE=true

FROM ubuntu:latest AS build

RUN apt-get update && apt-get install -y build-essential

WORKDIR /app

COPY hello.cpp .

RUN g++ -o hello hello.cpp -static

# --------------------
FROM scratch

COPY --from=build /app/hello /hello

CMD ["/hello"]

La première ligne ARG BUILDKIT_SBOM_SCAN_STAGE=true active l'analyse SBOM dans l'étape de construction. Maintenant, construisez l'image avec la commande suivante :

$ docker buildx build --sbom=true -t hello:sbom .

Cette commande construira l'image et générera une attestation SBOM. Vous pouvez vérifier que le SBOM est attaché à l'image en exécutant la commande suivante :

$ docker scout sbom --format=list hello:sbom

Notez que la commande docker sbom normale ne chargera pas l'attestation SBOM.

Résumé

Dans cette section, vous avez appris à générer une attestation SBOM pour une image Docker C++ pendant le processus de construction. Les scanners d'images normaux ne pourront pas générer de SBOM à partir d'images scratch.