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
.