Qu’est-ce que la norme SPDX et comment aide-t-elle l’industrie du logiciel ? – Informatique CloudSavvy
La spécification SPDX (Software Package Data Exchange) définit une norme ouverte pour la communication d’informations sur les composants logiciels. SPDX est utilisé pour créer des listes de nomenclatures logicielles (SBOM), encapsuler les détails des licences et des droits d’auteur et fournir des métadonnées de package telles que les identifiants de version et les vulnérabilités connues.
SPDX a été conçu à l’origine il y a plus de dix ans pour aider les développeurs à se conformer aux licences open source. Depuis lors, il a été étendu avec de nouvelles fonctionnalités pour décrire les arbres de dépendance et émettre des SBOM. SPDX a été catapulté à l’attention mondiale en septembre 2021 lorsque l’ISO l’a reconnu comme la norme internationale pour la documentation de la chaîne d’approvisionnement logicielle.
Sommaire
Qui crée SPDX ?
SPDX est un projet autonome géré par la Linux Foundation, gérée par la communauté. La norme actuelle a été soutenue et rédigée par des parties intéressées de l’ensemble de l’industrie du logiciel. La liste comprend de grands noms comme Google et Microsoft ainsi que les développeurs d’outils adjacents tels que Anchore et Snyk.
SPDX est l’aboutissement de l’expérience de ces fournisseurs en matière de gestion, de documentation et de maintenance des chaînes d’approvisionnement logicielles à grande échelle. Le projet est cependant ouvert à la participation extérieure – toute personne ou entreprise qui travaille avec des artefacts SPDX peut rejoindre l’assemblée générale mensuelle ou s’abonner à la liste de diffusion.
A quoi sert SPDX ?
SPDX est une méthode standard de l’industrie pour décrire les packages logiciels et leurs dépendances. Il est conçu pour fonctionner avec tous les fournisseurs, langages de programmation et frameworks. La norme réduit l’effort impliqué dans la production d’un SBOM pour un projet en faisant abstraction des différences entre les formats de package et en augmentant l’interopérabilité à travers l’écosystème.
Les SBOM sont encore un nouveau concept pour de nombreux développeurs. Un endroit naturel pour commencer est dans les fichiers de verrouillage du gestionnaire de paquets que vous avez déjà. Pourtant, il suffit de copier et coller votre package.json
dans un fichier de documentation n’est pas une solution résiliente. Que se passe-t-il lorsque vous avez également un composer.json
pour votre backend et un requirements.txt
pour ce composant Python autonome ? Vous disposez désormais de trois sources de packages indépendantes pour auditer, vérifier la conformité des licences et obtenir des listes de vulnérabilités.
SPDX fournit un moyen unifié de structurer, stocker et interroger ces informations. La spécification définit un format non ambigu pour communiquer les métadonnées de tout progiciel. La clé ici est dans ce vocabulaire de « paquet logiciel » : nous ne parlons pas de paquets NPM ou de gemmes Ruby, mais plutôt d’une vue de niveau supérieur du paysage du développement.
Une définition de package SPDX inclut des données telles que le nom, la version, l’auteur et la licence du composant. Les packages peuvent référencer d’autres packages pour définir leurs arborescences de dépendances. Le format prend également en charge les données au niveau du fichier pour décrire le contenu d’un package.
Création de SBOM compatibles SPDX
L’outillage autour de SPDX est encore en train d’émerger. Un projet communautaire de premier plan est le Open Source Software Review Toolkit qui peut générer des métadonnées SPDX à partir des formats de gestionnaire de packages les plus courants. Le générateur SBOM ouvert est une alternative qui se concentre plus étroitement sur la génération de SBOM compatible SPDX.
Vous trouverez également la prise en charge de SPDX dans de nombreux générateurs de listes de dépendances et scanners de vulnérabilité populaires. Une fois que vous avez un fichier au format SPDX, il peut être introduit dans d’autres outils et bibliothèques pour effectuer une analyse plus approfondie.
Le projet SPDX développe des bibliothèques client SPDX pour Java, Python, Go et JavaScript. Ceux-ci faciliteront la consommation de données SPDX dans vos propres applications. Il existe également un site Web qui propose des fonctions d’analyse, de validation et de comparaison SPDX.
Pourquoi tout cela est-il important ?
Les attaques majeures de la chaîne d’approvisionnement ont révélé la fragilité du développement de logiciels modernes. Il est trop facile de se retrouver avec des arborescences de dépendance tentaculaires référençant des dizaines ou des centaines de milliers de packages distincts. Une vulnérabilité dans l’un d’entre eux pourrait menacer votre application, même si le code que vous avez écrit vous-même est étanche.
Les défis des chaînes d’approvisionnement logicielles ont été directement référencés par le décret exécutif américain sur la cybersécurité en mai 2021. Il est désormais impératif que les responsables de l’open source, les utilisateurs en aval et les organisations axées sur les logiciels travaillent pour fournir plus de visibilité sur les composants qui composent les logiciels mondiaux. . Un format commun pour la production, le partage et l’analyse des SBOM est une partie importante de la solution.
L’accréditation SPDX en tant que norme ISO donne à l’industrie un point de référence collectif. C’est une spécification qui pourrait raisonnablement être mandatée comme un livrable requis pour les futurs projets logiciels. Les agences gouvernementales, les industries réglementées et les clients soucieux de la sécurité peuvent exiger des artefacts SPDX afin qu’ils puissent être cohérents dans la manière dont ils auditent et sécurisent leurs chaînes d’approvisionnement.
L’adoption intersectorielle de SPDX permettrait aux organisations d’être plus confiantes dans la sécurité des nouveaux logiciels qu’elles achètent. Pour identifier si les systèmes sont impactés par des vulnérabilités critiques du jour zéro, il faudrait consulter le SBOM, au lieu d’inspecter manuellement les différents formats de gestionnaire de packages utilisés dans un projet.
Alors que les premières versions de la norme existent depuis une décennie, ce n’est que récemment que l’évolution vers les SBOM automatisés, la conformité et l’indexation des dépendances a commencé à prendre de l’ampleur. Devenir une norme ISO pourrait s’avérer être le point de basculement où les développeurs adoptent SPDX à grande échelle.
Conclusion
SPDX est maintenant la façon de définir les chaînes d’approvisionnement en logiciels. C’est un format conçu à partir de zéro pour exprimer les relations entre les packages logiciels. Il peut être utilisé pour produire une nomenclature, valider la conformité de la licence et déterminer la paternité et la propriété.
Alors que l’examen des chaînes d’approvisionnement en logiciels ne fait que s’intensifier, l’écosystème SPDX est quelque chose que les développeurs, les équipes opérationnelles et même les équipes juridiques peuvent s’attendre à voir beaucoup plus au cours des prochaines années. Il fournit un moyen de naviguer dans les relations entre les composants logiciels et les contraintes qui entourent leur utilisation.
Le fait de disposer d’une manière normalisée de fournir ces informations donne à l’industrie un objectif spécifique à viser lors de la création de SBOM et de l’audit des chaînes d’approvisionnement. SPDX résout l’ambiguïté qui prévalait jusqu’à présent, offrant un format de catalogage testé et robuste pour remplacer les index de packages et les feuilles de calcul spécifiques à l’organisation.