Comment indexer les dépendances de votre image Docker avec Syft

0
283

Syft est un utilitaire CLI qui génère une nomenclature logicielle (SBOM) pour les images de conteneur. Un SBOM est un catalogue de dépendances utilisées par votre image. Il vous donne une visibilité sur les “matériaux” qui forment le système de fichiers de votre image.

La production d'un SBOM peut vous aider à identifier des chaînes d'approvisionnement de colis trop complexes qui vous exposent à des attaques par confusion de dépendance. La distribution d'un SBOM à côté de votre image informe les utilisateurs de ce qui se trouve sous la surface. Cela fournit un point de départ utile lors du renforcement de la sécurité de la chaîne d'approvisionnement.

Syft est développé par Anchore qui propose également un moteur d'analyse de conteneurs complet. L'interface de ligne de commande Syft est capable d'extraire des listes de packages à partir d'images à l'aide de systèmes d'exploitation et de langages de programmation courants. Les images Docker et OCI sont prises en charge.

Installation de Syft

Un script d'installation est disponible pour télécharger le dernier binaire Syft et l'ajouter à votre chemin :

curl -sSfL https://raw.githubusercontent.com/anchore/syft/main/install.sh | sh -s — -b /usr/local/bin

Les utilisateurs de Mac peuvent également obtenir Syft depuis Homebrew en ajoutant le référentiel anchore/syft et en installant le package syft.

Publicité

Une fois que vous avez Syft sur votre système, exécutez syft dans votre terminal pour afficher les commandes disponibles. Vous pouvez générer des complétions pour votre shell en exécutant la complétion syft.

Utilisez la version syft pour trouver la version de votre installation. Consultez régulièrement la page des balises GitHub pour trouver de nouvelles versions, puis réutilisez le script d'installation pour télécharger chaque mise à jour.

Numérisation d'une image

Syft&#8217 La fonctionnalité ;s est actuellement exposée par une seule sous-commande, les packages syft. Passez-lui une balise d'image pour générer un SBOM pour :

packages syft alpine:latest

Syft téléchargera l'image, analysera son contenu et produira un catalogue des packages découverts. La sortie sera affichée sous forme de tableau dans votre terminal. Chaque résultat inclut le nom, la version et le type du package détecté.

La liste des packages pour cette image est courte. Comme il s'agit d'une image de base Alpine, les packages installés sont intentionnellement rationalisés pour fournir la plus petite surface possible. Des images plus grandes peuvent contenir des centaines ou des milliers de packages dans plusieurs formats différents. Il peut être utile de combiner Syft avec des outils de terminal Unix existants tels que grep et awk pour extraire les données que vous recherchez.

packages syft example-image:latest | grep example-package-to-find

Types de packages pris en charge

Syft prend en charge de nombreux formats de packages populaires sur les principaux systèmes d'exploitation et langages de programmation. La liste comprend :

  • Les packages de système d'exploitation APK (Alpine), DEB (Debian) et RPM (Fedora).
  • Identification des distributions Linux parmi les faveurs Alpine, CentOS, Debian et RHEL.
  • Modules Go
  • Java inJAR, EAR et WARvariations
  • Paquets NPM et Yarn< /li>
  • Python Wheels and Eggs
  • Ruby bundles

Publicité

Bien que toutes les langues ne soient pas couvertes, vous bénéficierez toujours du Analyse au niveau du système d'exploitation quelle que soit la pile choisie par votre application.

Modification du format de sortie

Le format de sortie par défaut est appelé table. Il affiche un tableau de résultats en colonnes dans votre terminal, créant une nouvelle ligne pour chaque package détecté. Un autre format lisible par l'homme est le texte qui présente une liste de packages avec les champs Version et Type imbriqués sous chaque section.

< /p>

Syft prend également en charge plusieurs formats de programmation :

  • json – Enregistrez les données du package dans une structure JSON.
  • cyclonedx – Un rapport CycloneDX au format XML.
  • spdx et spdx-json – Rapports compatibles SPDX au format tag-value ou JSON.

L'utilisation de l'un de ces rapports vous permet d'archiver les résultats dans un fichier pour référence ultérieure :

syft packages alpine:latest – o json > alpine-packages.json

Les formats standardisés CycloneDX et SPDX peuvent aider à intégrer les analyses Syft dans vos pipelines CI/CD. Les données sont accessibles à d'autres outils de l'écosystème qui fonctionnent avec les listes de packages et les résultats SBOM.

Syft s'intègre également à Grype, l'outil de recherche de vulnérabilité du système de fichiers de conteneur autonome d'Anchore. Les données de Syft peuvent être introduites directement dans Grype si vous utilisez le format de sortie JSON.

packages syft example-image:latest -o json > sbom.json grype sbom:./sbom.json

Grype comparera la liste des packages à son index de vulnérabilités connues. Il mettra en évidence les packages qui contiennent des problèmes, vous donnant un point de départ immédiat pour améliorer votre sécurité.

Utilisation d'autres sources d'images

Syft peut utiliser des images provenant d'autres sources que les registres publics Docker. Vous pouvez référencer n'importe quelle image compatible OCI, soit via une balise de registre, soit en tant qu'image tar enregistrée. Les chemins d'accès aux archives d'images peuvent être transmis directement à Syft :

docker image save my-image:latest > my-image.tar syft packages ./my-image.tar Advertisement

Syft fonctionne également avec les registres privés Docker. Il utilise vos informations d'identification existantes dans votre fichier ~/.docker/config.json :

{ "auths": { "registry.example.com": { "username": "", "password": "" } } }

Bien que Syft se concentre sur les analyses d'images de conteneurs, il peut également créer un SBOM pour les chemins arbitraires du système de fichiers. Vous pouvez utiliser Syft pour indexer les packages de votre hôte en analysant les répertoires qui contiennent généralement des binaires et des bibliothèques de logiciels :

syft packages dir:/usr/bin

Vous devez explicitement ajouter le schéma dir: si vous référencez un chemin en dehors de votre répertoire de travail. Sinon, Syft essaiera de l'interpréter comme une référence de balise d'image.

Conclusion

Syft extrait les listes de packages de vos images de conteneur. Les données générées agissent comme un SBOM pour votre image, augmentant ainsi votre prise de conscience de la longueur de votre chaîne d'approvisionnement.

Syft est distribué sous la forme d'un binaire unique qui produit des rapports dans plusieurs formats différents. Il peut être facilement intégré aux systèmes CI/CD pour télécharger un artefact SBOM dans le cadre de votre pipeline de création d'images. Cela augmente la responsabilité et facilite les pistes d'audit en enregistrant la liste complète des logiciels de chaque image au moment où elle est produite.

Publicité

L'ajout d'analyses Syft à votre flux de travail vous tient informé de la packages que vous utilisez. Une fois que vous avez obtenu ces informations, vous pouvez commencer à évaluer chaque paquet pour déterminer s'il est vraiment nécessaire. Si vous trouvez de nombreux packages qui ne sont pas utilisés par votre charge de travail, envisagez de passer à une image de base minimale et de ne superposer que les logiciels essentiels.