Comment mettre à niveau vers Docker Compose v2
Agence web » Actualités du digital » Comment utiliser « docker sbom » pour indexer les packages de votre image Docker

Comment utiliser « docker sbom » pour indexer les packages de votre image Docker

La sécurité de la chaîne d’approvisionnement logicielle est devenue d’actualité à la suite d’attaques très médiatisées basées sur la dépendance. La production d’un SBOM pour vos artefacts logiciels peut vous aider à identifier les faiblesses et à réduire le nombre de packages sur lesquels vous comptez.

Une nouvelle fonctionnalité Docker intègre la prise en charge de la génération SBOM dans le docker CLI. Cela vous permet de produire un SBOM parallèlement à votre build, puis de le distribuer aux consommateurs de votre image.

La commande « docker sbom »

Le nouveau docker sbom La commande est fournie avec les versions 4.7.0 et ultérieures de Docker Desktop. Vous pouvez ajouter la commande à une installation Docker Engine sous Linux en installant le docker-sbom plugin de GitHub :

$ curl -sSfL https://raw.githubusercontent.com/docker/sbom-cli-plugin/main/install.sh | sh -s --

Vérifiez que l’installation a réussi en exécutant la commande :

$ docker sbom

Usage:  docker sbom [OPTIONS] COMMAND

View the packaged-based Software Bill Of Materials (SBOM) for an image.
...

Vous pouvez maintenant générer le SBOM pour une image Docker en passant sa balise à la commande :

$ docker sbom nginx:latest
Syft v0.43.0
 ✔ Pulled image            
 ✔ Loaded image            
 ✔ Parsed image            
 ✔ Cataloged packages      [143 packages]
NAME                       VERSION                         TYPE         
adduser                    3.118                           deb           
apt                        2.2.4                           deb           
base-files                 11.1+deb11u3                    deb           
base-passwd                3.5.51                          deb           
bash                       5.1-2+b3                        deb           
bsdutils                   1:2.36.1-8+deb11u1              deb   
...

La CLI extraira l’image spécifiée si elle n’existe pas déjà sur votre système. Le contenu de l’image est alors indexé et une liste de packages s’affiche dans votre terminal.

Sous le capot, Docker utilise le populaire générateur Syft SBOM pour numériser et indexer l’image. La version active de Syft est affichée chaque fois que vous utilisez la commande. Sa sortie correspond à ce qu’une installation Syft autonome produirait.

Syft est capable d’identifier les packages du système d’exploitation et les dépendances du langage de programmation. Le type de chaque package détecté est affiché dans la sortie de la commande, à côté de son nom et de sa version précise. Vous pouvez utiliser ces informations pour auditer avec précision vos images de conteneurs et découvrir les logiciels sur lesquels elles reposent. Lorsqu’une vulnérabilité majeure est signalée, vous pouvez consulter le SBOM de l’image pour vérifier rapidement si vous êtes concerné.

Personnalisation de la sortie

La sortie est affichée par défaut sous forme de tableau lisible par l’homme. C’est idéal pour la distribution à côté de votre image ou dans le cadre de votre documentation.

Vous pouvez supprimer les lignes contenant la version de Syft et le rapport d’avancement en ajoutant le --quiet drapeau. Utilisation --output pour écrire le rapport dans un fichier, au lieu de votre fenêtre de terminal. La combinaison de ces deux options vous permet d’enregistrer facilement les données de la liste des packages.

$ docker sbom --output sbom.txt --quiet nginx:latest

Plusieurs formats de sortie alternatifs sont disponibles via le --format drapeau. La text variant est une autre option lisible par l’homme utilisant une mise en page basée sur les lignes :

$ docker sbom --format text --quiet nginx:latest
[Image]
 Layer:      0
 Digest:     sha256:9c1b6dd6c1e6be9fdd2b1987783824670d3b0dd7ae8ad6f57dc3cea5739ac71e
 Size:       80400891
 MediaType:  application/vnd.docker.image.rootfs.diff.tar.gzip

...

[adduser]
 Version:    3.118
 Type:       deb
 Found by:   dpkgdb-cataloger

[apt]
 Version:    2.2.4
 Type:       deb
 Found by:   dpkgdb-cataloger

La [Image] La section énumère les détails de toutes les couches de l’image numérisée. Les sections suivantes répertorient les packages détectés, en indiquant leur type et leur version sous forme de propriétés imbriquées.

Plusieurs autres formats sont également pris en charge, chacun pouvant être activé à l’aide de la --format drapeau. Ce sont de meilleurs choix lorsque vous souhaitez consommer des données SBOM par programmation à l’aide d’outils tiers.

  • syft-json – Générez un rapport au format JSON natif de Syft.
  • cyclonedx-xml/cyclonedx-json – Produire un rapport compatible avec les normes CycloneDX au format XML ou JSON. Cette norme SBOM est dirigée par l’OWASP.
  • github-0-json – Un format de rapport compatible GitHub.
  • spdx-tag-value/spdx-json – Compatible avec la norme SPDX pour l’expression des SBOM, qui est définie par la Linux Foundation.

Les analyses examinent généralement tout ce qui se trouve dans le système de fichiers de l’image. Parfois, vous souhaiterez peut-être exclure des répertoires spécifiques pour empêcher l’affichage de certains packages dans la sortie. Passez une expression glob au --exclude flag pour filtrer des chemins particuliers. Vous pouvez l’utiliser pour indexer uniquement les packages associés à votre application, au lieu de ceux appartenant à la couche du système d’exploitation de l’image.

$ docker sbom --exclude /var nginx:latest

À l’occasion, vous devrez peut-être numériser une image conçue pour une architecture différente de votre plate-forme actuelle. Utilisez le --platform drapeau pour sélectionner une variante multi-arch différente, telle que linux ou arm64:

$ docker sbom --platform arm64 nginx:latest

Cela vous permet d’indexer les images que vous avez créées pour d’autres plates-formes sans basculer entre les périphériques matériels physiques.

Cas d’utilisation

De plus en plus de développeurs commencent à reconnaître les avantages des SBOM. Ils mettent en évidence des listes de dépendances excessivement longues, offrant des opportunités d’élagage qui réduisent votre exposition aux menaces. Pour les consommateurs de logiciels, les SBOM sont un outil de plus en plus important pour évaluer le risque présenté par un nouveau projet. Ils deviendront probablement un livrable obligatoire pour les logiciels commandés par les grandes organisations et les agences gouvernementales.

Une fois que vous avez un SBOM, les données peuvent être utilisées avec des outils automatisés pour identifier davantage les problèmes de sécurité. Par exemple, vous pouvez passer la sortie de docker sbom directement dans Grype pour identifier les CVE associés aux packages de votre image :

$ docker sbom --format syft-json nginx:latest | grype

La génération SBOM reposait auparavant sur l’adoption de nouveaux outils tels que Syft. Cela réduit la possibilité de découverte et fait du SBOM un supplément supplémentaire, plutôt que quelque chose d’intrinsèque à vos artefacts. En intégrant les SBOM dans la CLI Docker, davantage de développeurs pourront produire des rapports tout au long du cycle de vie du logiciel.

La mise en œuvre actuelle de docker sbom est considéré comme expérimental et de portée limitée. À l’avenir, les données SBOM pourraient être capturées dans le cadre du processus de création d’image. docker sbom afficherait alors ces informations, au lieu d’effectuer une analyse active à la demande.

Intégrer les SBOM dans docker build en ferait un composant de premier ordre dans la chaîne d’outils du conteneur, garantissant que chaque image est accompagnée d’un SBOM tout au long de sa vie. Le stockage d’une image dans un registre inclurait le SBOM correspondant, même si l’hôte du registre était isolé et incapable d’effectuer des analyses actives. Cette fonctionnalité est encore loin cependant. La version d’aujourd’hui de docker sbom reste un outil puissant qui facilite la production de SBOM d’images de conteneurs.

Sommaire

La docker sbom La commande vous permet de générer le SBOM pour une image Docker sans installer d’outil autonome. La CLI Docker s’intègre à Syft pour fournir des analyses à la demande qui produisent un index des packages présents dans le système de fichiers de l’image.

Vous pouvez commencer à utiliser docker sbom aujourd’hui en mettant à jour Docker Desktop v4.7.0 ou en installant le plug-in SBOM pour Docker Engine sous Linux. La génération d’un SBOM chaque fois que vous créez votre image vous aidera à identifier et à résoudre le problème de dépendance avant qu’il ne devienne un problème. Vous pouvez souvent réduire le nombre de packages dans votre image en passant à une image de base minimale telle que alpine et supprimer les dépendances de langage de programmation inutilisées.

★★★★★