Aller au contenu principal
Expert Cybersécurité & IAv9.0
Centres de ressources conformité
Besoin d'un accompagnement expert ?
Devis personnalisé sous 24h — audit, conformité, incident
Checklists Sécurité — Audit & Durcissement
Formats disponibles
📄 PDF 📊 Excel 🌐 Web

11 checklists professionnelles couvrant 2 200+ points de contrôle. Téléchargement gratuit, aucune inscription.

SPDX

devsecops

Dé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

Un projet cybersécurité ?

Expert dispo · Réponse 24h

Devis