Comment utiliser “docker sbom” pour indexer les packages de votre image Docker

0
131

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 les dépendances. 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 de SBOM dans la CLI Docker. Cela vous permet de produire un SBOM parallèlement à votre build, puis de le distribuer aux consommateurs de votre image.

Le “docker sbom” Commande

La nouvelle commande docker sbom 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 plugin docker-sbom depuis 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 Utilisation : docker sbom [OPTIONS] COMMANDE Afficher la nomenclature logicielle basée sur le package (SBOM) pour une 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 ✔ Image extraite ✔ Image chargée ✔ Image analysée ✔ Packages catalogués [143 packages] NOM 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 extrait l'image spécifiée si elle n'existe pas déjà sur votre système. Le contenu de l'image est ensuite indexé et une liste de paquets 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 une 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 de progression en ajoutant l'indicateur –quiet. Utilisez –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 l'indicateur –format. La variante de texte 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] Couche : 0 Digest : sha256:9c1b6dd6c1e6be9fdd2b1987783824670d3b0dd7ae8ad6f57dc3cea5739ac71e Taille : 80400891 Type de média : application/vnd.docker.image.rootfs.diff.tar.gzip Version : 3.118 Type : deb Trouvé par : dpkgdb-cataloger [apt] Version : 2.2.4 Type : deb Trouvé par : dpkgdb-cataloger

La section [Image] é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 fournissant 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 l'indicateur –format. 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 – Produisez 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 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 à l'indicateur –exclude 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 peut avoir besoin de numériser une image conçue pour une architecture différente de votre plate-forme actuelle. Utilisez l'indicateur –platform 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 pour lesquelles vous avez créé 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 transmettre 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 | grogner

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 de Docker, davantage de développeurs seront en mesure de produire des rapports tout au long du cycle de vie du logiciel.

L'implémentation actuelle de docker sbom est considérée comme expérimentale 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 ferait alors apparaître ces informations, au lieu d'effectuer une analyse active à la demande.

L'intégration des SBOM dans la construction de docker 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 actuelle de docker sbom reste un outil puissant qui facilite la production de SBOM d'images de conteneurs.

Résumé

La commande docker sbom 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 dès 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 comme alpine et en supprimant les dépendances de langage de programmation inutilisées.

LIRE LA SUITE

  • › Test du Razer Kaira Pro pour PlayStation : audio robuste, micro de qualité inférieure
  • &rsaquo ; 7 fonctionnalités Roku que vous devriez utiliser
  • &rsaquo ; 10 fonctionnalités du thermostat intelligent que vous devriez utiliser
  • &rsaquo ; 1MORE Evo True Wireless Review : un excellent son pour le prix
  • › 10 fonctionnalités cachées de Windows 10 que vous devriez utiliser
  • › Il est temps d'arrêter le double démarrage Linux et Windows