SPDX und CycloneDX: ein SBOM-Format auswählen
Sytance · Aktualisiert
SPDX und CycloneDX beschreiben beide Softwarekomponenten und ihre Beziehungen. Die Wahl hängt davon ab, welche Informationen der Empfänger benötigt und welche Versionen seine Werkzeuge verarbeiten können. Eine Formatvereinbarung umfasst daher auch die Festlegung von Version, Kodierung und Pflichtfeldern.
Der Informationsbedarf des Empfängers
Für einen Firmwarelieferanten, der einem Hersteller eine SBOM sendet, können andere Anforderungen gelten als für ein Team, das sie in einen Schwachstellenmanagementdienst lädt. Die unterstützten Versionen und Kodierungen des Empfängers bestimmen, welche Dateien er verarbeiten kann. Eine repräsentative Datei hilft, diese Unterstützung zu bestätigen.
Halten Sie die erforderlichen Informationen schriftlich fest, darunter die Produktidentität, Komponentenkennungen, Beziehungen, Lizenzen und Angaben zu Schwachstellen oder Herkunft. Wenn der Empfänger nur einen Teil eines Formats unterstützt, ist zu klären, ob die ausgelassenen Felder den Zweck des Austauschs beeinträchtigen.
Spezifikationsversionen und Toolunterstützung
SPDX 2.3 und SPDX 3.0.1 sind getrennte veröffentlichte Spezifikationen. SPDX 3.0.1 verwendet ein Modell mit Profilen, darunter eine Software-SBOM-Klasse. Es darf nicht angenommen werden, dass ein Verbraucher, der SPDX-2.3-JSON akzeptiert, auch ein 3.x-Dokument verarbeiten kann.
Die Übersicht der CycloneDX-Spezifikation führt Version 1.7 auf. Ihr Objektmodell umfasst Komponenten, Dienste, Abhängigkeitsbeziehungen und Schwachstelleninformationen. Ein Ersteller kann eine aktuelle Spezifikation unterstützen, während ein nachgelagertes Importwerkzeug nur eine frühere Version unterstützt.
| Angaben zum Austausch | SPDX-Beispiel | CycloneDX-Beispiel |
|---|---|---|
| Version | 2.3 oder 3.0.1 | 1.7 |
| Dokumentidentität | Versionsspezifisches Dokumentmodell | Seriennummer und BOM-Version |
| Abhängigkeiten | Typisierte Beziehungen | Abhängigkeitsgraph |
| Validierung | Regeln für die ausgewählte Version | Schema für die ausgewählte Version |
Beziehungen und Lizenzfelder
In SPDX 2.3 beschreibt CONTAINS eine Enthaltenseinsbeziehung und DEPENDS_ON eine Abhängigkeit. Dass sich ein Paket in einem Archiv befindet, ist etwas anderes, als wenn ein anderes Paket es zum Erstellen oder Ausführen benötigt. Bewahren Sie beim Import den Beziehungstyp und seine Richtung.
SPDX 2.3 unterscheidet außerdem zwischen einer deklarierten und einer festgestellten Lizenz. Die Erklärung eines Lieferanten und die Schlussfolgerung eines Analysten dürfen nicht unbemerkt im selben Feld zusammengeführt werden. Ein Empfangswerkzeug muss diese Unterscheidung beibehalten, wenn sie für die Prüfung relevant ist.
Prüfen Sie bei CycloneDX den Abhängigkeitsgraphen und die Komponentenverweise in der ausgewählten Version. Eine flache Komponentenliste kann nach einer Konvertierung weiterhin lesbar sein, zugleich aber die Pfade verlieren, die zur Untersuchung der Produktnutzung einer Komponente erforderlich sind.
Konvertierte Informationen prüfen
Eine kleine Testdatei kann zeigen, welche Informationen bei einer Konvertierung verloren gehen. Nehmen Sie ein Produkt, eine direkte Abhängigkeit und eine indirekte Abhängigkeit auf. Zwei Versionen derselben Komponente, ein Lizenz-Ausdruck und ein ausdrücklich als unbekannt gekennzeichnetes Feld helfen, mehr als nur die Annahme der Datei zu prüfen.
- Validieren Sie die Originaldatei anhand der angegebenen Spezifikationsversion.
- Importieren Sie die Datei in das Empfangswerkzeug und prüfen Sie das Zielprodukt.
- Vergleichen Sie Komponentenidentitäten, Versionen und die Richtung der Beziehungen.
- Prüfen Sie die Lizenzfelder und die Darstellung unbekannter Informationen.
- Exportieren Sie die Datei erneut, falls unterstützt, und vergleichen Sie anschließend die Bedeutung statt der Dateiformatierung.
Ein Format für die Bereitstellung auswählen
Wenn ein Kunde SPDX 2.3 verlangt, stellen Sie diese Version mit den vereinbarten Feldern bereit und bewahren Sie den umfangreicheren Quelldatensatz auf, falls bei der Konvertierung andere Daten verloren gehen. Verarbeitet der Empfangsprozess bereits CycloneDX und bleibt der benötigte Graph erhalten, verwenden Sie die unterstützte CycloneDX-Version.
Benötigen Kunden beide Formate, pflegen und testen Sie die Feldzuordnungen zwischen ihnen. Dokumentieren Sie Informationen, die bei der Konvertierung verloren gehen oder in Erweiterungen verschoben werden. Die Konvertierung muss die Daten gemäß der Zielspezifikation umwandeln.
Prüfen Sie nach dem Import, ob der Empfänger die Informationen weiterhin wie vorgesehen verwenden kann. Bei der Schwachstellenanalyse muss dazu gehören, von einer Komponente aus die Produkte und Releases zu finden, in denen sie verwendet wird.