SPDX
devsecopsDéfinition
SPDX (Software Package Data Exchange) est un standard open source de l'ISO (ISO/IEC 5962:2021) développé par la Linux Foundation pour la description et l'échange de métadonnées de licences, de composants, et de vulnérabilités dans des Software Bills of Materials (SBOM). SPDX est l'un des deux formats de SBOM les plus adoptés (avec CycloneDX) et est reconnu par les réglementations américaines (Executive Order 14028 de la Maison Blanche) et européennes (Cyber Resilience Act) comme format standardisé pour la communication des SBOMs. Un document SPDX liste les composants d'un logiciel (packages, fichiers, snippets) avec leurs métadonnées clés : identifiant unique (SPDXID), nom et version, fournisseur, licence (exprimée en SPDX License Expression : MIT AND Apache-2.0, GPL-2.0-or-later), checksum (SHA256 du binaire/archive), et les relations entre composants (Package A DEPENDS_ON Package B). Ces informations permettent aux consommateurs d'un logiciel d'évaluer rapidement l'exposition aux licences copyleft, les risques de vulnérabilités connues, et la chaîne de dépendances complète. SPDX supporte plusieurs formats de sérialisation : TV (tag-value, le format texte original), JSON, YAML, RDF/XML, et depuis SPDX 3.0, un modèle de données enrichi. La compatibilité entre formats et la capacité à convertir automatiquement (via des outils comme spdx-tools) facilitent l'intégration dans des workflows hétérogènes. La génération de SBOMs SPDX peut être automatisée dans les pipelines CI via des outils comme Syft (Anchore), Tern (analyse d'images Docker), fossology (analyse de licences), et les outils natifs de certaines chaînes de build. GitHub génère nativement des SBOM SPDX pour les dépôts via son API de dependency graph.
Structure d'un document SPDX
Un document SPDX comprend : un header (version SPDX, DataLicense CC0-1.0, SPDXID du document, Name, Namespace unique), la liste des Packages (chaque dépendance avec son SPDXID, Name, Version, PackageSupplier, PackageDownloadLocation, FilesAnalyzed, PackageVerificationCode, LicenseConcluded, LicenseDeclared, CopyrightText), et les Relationships (SPDX-TOOL-DESCRIBES le package root, packages CONTAINS ou DEPENDS_ON d'autres packages). Le format tag-value est lisible par un humain, le format JSON est préférable pour l'automatisation.
SPDX License Expressions
Les SPDX License Expressions permettent de décrire précisément les conditions de licence avec des opérateurs logiques : "MIT" (licence MIT seule), "MIT AND Apache-2.0" (les deux s'appliquent), "GPL-2.0-or-later WITH Classpath-exception-2.0" (GPL avec exception classpath), "LicenseRef-commercial" (licence personnalisée référencée). Cette notation standardisée permet l'analyse automatisée des compatibilités de licences et la détection des composants GPL incompatibles avec une distribution commerciale fermée.
Génération automatique avec Syft
Syft (Anchore) génère des SBOMs SPDX à partir d'images Docker, de répertoires, et d'archives : syft alpine:latest -o spdx-json > sbom.spdx.json. L'intégration dans un pipeline CI génère automatiquement le SBOM à chaque build : docker build -t myapp:v1.0 . && syft myapp:v1.0 -o spdx-json > sbom-v1.0.spdx.json. Le SBOM est signé avec Cosign (cosign attach sbom --sbom sbom-v1.0.spdx.json myapp:v1.0) et stocké dans le registre OCI aux côtés de l'image, accessible à la vérification lors du déploiement.
Articles liés
Expert en cybersécurité offensive et intelligence artificielle. Pentest, audit et développement IA sur-mesure.
Services
- Audit Infrastructure
- Audit Kubernetes
- Audit Microsoft 365
- Audit Sécurité Réseau
- Analyse de Risques
- Audit Active Directory
- Audit Application Web
- Audit Cloud (AWS/Azure/GCP)
- Audit Messagerie
- Audit API (OWASP Top 10)
- Audit DevSecOps & CI/CD
- Audit Code Source (SAST)
- Audit Postes de Travail
- Audit Sauvegarde & Résilience
- Audit OT/SCADA (IEC 62443)
- Développement IA
- Formations
Ressources
Projets & Outils
© 2026 Ayi NEDJIMI Consultants. Tous droits réservés. 2.1.7
Un projet cybersécurité ?
Expert dispo · Réponse 24h