Alles over SPDX 3.0
Ingenieurswetenschappen

(Dit bericht is voor het eerst gemaakt in september 2023 en bijgewerkt in april 2024 na de officiële release van SPDX3.0).
SPDX is een van de drie SBOM-specificaties aanbevolen door NTIA/CISA.
Op 16 april heeft het SPDX-team officieel versie 3.0 van SPDX uitgebracht.
In een enorme stap van SPDX2.3, bevat deze versie veel functies die nieuwe SBOM-gebruiksscenario's dekken en bestaande mogelijkheden vereenvoudigen.
Laten we erin duiken.
SPDX Profielen
SPDX 3.0 flexibiliteit is vervat in een nieuwe abstractie genaamd Profiel.
SPDX-profielen beschrijven een specifiek gebruiksdoel voor het SPDX-document. Een beveiligingsprofiel bijvoorbeeld, is bruikbaar door productbeveiligingsspecialisten, terwijl vertegenwoordigers van juridische en compliance-teams een licentieprofiel analyseren.
Daarom kan een SBOM die uitsluitend van toepassing is op een specifiek gebruiksdoel ervoor kiezen om de details die van toepassing zijn op een ander profiel niet in te vullen.

Om dit te bereiken, zijn de SPDX-velden van versie 2.3 (met enkele wijzigingen) verdeeld in drie groepen:
SPDX Kernmodel: Dit model bevat primaire velden zoals de agentinformatie van het document (persoon, organisatie of hulpmiddel), documentelementen en hun relaties, en andere informatie die van toepassing is op het document.
SPDX Softwareprofiel: bevat software-specifieke velden zoals pakketdetails, opgenomen bestanden en afhankelijkheid tussen softwarecomponenten.
SPDX Gebruiksspecifiek profiel: Deze set velden is afhankelijk van het betreffende profiel en bevat informatie die specifiek is voor elk van de zes ondersteunde profielen.
Elk gebruiksprofiel komt met zijn Profiel Conformiteitspunt, die in wezen de vereiste velden voor dat specifieke profiel verklaart.
Een SPDX-document kan meerdere profielen samen bevatten, wat de behoefte vereenvoudigt om meerdere SBOM's in te vullen met verschillende velden voor verschillende belanghebbenden.
Voorbeelden:
Licentieprofiel conformiteit vereist dat alle pakketten het afgeronde licentieveld aanwezig hebben.
SPDX Kernmodel + SPDX Softwareprofiel + Licentieprofiel is functioneel gelijk aan SPDX 2.3.
SPDX Kernmodel + SPDX Softwareprofiel + AI Profiel is een nieuw AI-gebruik dat is gedekt met SPDX 3.0.
SPDX 3.0 begint met zes gebruiksdoelen die worden gedekt met zijn profielen:
Beveiliging, Licentiëring, AI, Gegevens, Build, Lite
Beveiligingsprofiel
Het Beveiligingsprofiel is ontworpen om de ontdekking en openbaarmaking van kwetsbaarheden, hun ernst, impact, risico's op uitbuiting en herstelplannen te communiceren.
Hoewel SPDX 2.3 een mechanisme bood om te koppelen aan externe kwetsbaarheidsdata met behulp van externe referentie-eigenschap, ondersteunt SPDX 3.0 het Beveiligingsprofiel om snel veranderende kwetsbaarheidsdata uit de software-samenstelling die is opgeslagen als Softwareprofiel te embedden.
Het Beveiligingsprofiel bevat kwetsbaarheidselementen om specifieke details te verstrekken, zoals ID, samenvatting, externe referenties, enz., samen met een nieuwe set velden om CVSS2, CVSS3, CVSS4 en SSVC-kwetsbaarheidsbeoordelingen over te brengen.
Het voegt ook velden toe om EPSS of Uitbuitbaarheid te embedden of te koppelen, (vooral nuttig voor het registreren van de uitbuitbaarheid van CISA KEV) en externe beveiligingsinformatie zoals beveiligingsadviezen, verwijzingen naar patches, of enige aangepaste beveiligingsinformatie.
Licentprofiel

Dit profiel is het dichtste bij SPDX2.3 en dekt breed de licentie- en auteursrechtenvelden van SPDX2.3. Het onderliggende model is bijgewerkt om bij het 3.0-model te passen, en in het proces zijn de velden consistent gemaakt over verschillende soorten artefacten — Package, File en Snippets.
SPDX 3.0 voegt ook de mogelijkheid toe om aangepaste licentie-uitzonderingen als licentie toevoegingen toe te voegen.
Voorbeeld: MIT MET AdditionRef-My-Own-Custom-Exception is alleen geldig in SPDX 3.0.
AI-profiel

SPDX 3.0 ondersteunt het bouwen van een SBOM voor AI-toepassingen met het AI-profiel.
Dit profiel omvat inventariscomponenten, afhankelijkheden, andere AI-specifieke verwijzingen, en veiligheids- en ethische overwegingen die verband houden met de toepassing.
Het AI-profiel bevat velden om de eigenschappen en het gedrag van het onderliggende model te onthullen, zoals modelarchitectuur, grootte, vereiste middelen, inclusief computationele en energiegebruik, modelbeperkingen, technieken voor gegevensvoorverwerking van het model, en de verklaarbaarheid van het model.
Het AI-profiel bevat ook veiligheidsoverwegingen, maar gebruikt de algemene risico-evaluatiemethodologie van de EU en de risico-evaluatie van de EU AI-wet.
Gegevensprofiel

Om naast AI te werken, richt het SPDX Data-profiel (in het schema-model Dataset genoemd) zich op velden om attributen en gedrag van de onderliggende trainings- en testgegevens te beschrijven, zoals gegevensverzamelingsprocessen, grootte, gegevensruis, sensoren die de gegevens produceren, beoogd gebruik, bekende vooroordelen, gevoeligheidsindicatoren, methode van anonymisering en vertrouwelijkheid van de gegevens.
Het Data-profiel is bedoeld voor gebruik door datawetenschappers, ingenieurs en governance-officers om het type gegevens dat in gebruik is, de bijbehorende nalevings- en regelgevingsrisico's te begrijpen, en systemen te ontwerpen die veerkrachtig zijn tegen dataverzendtechnieken.
Profiel Opbouwen

Dit is een andere nieuwe set velden om de specifieke informatie van het product over de bouw over te brengen. Het profiel is bedoeld om de beveiliging, reproduceerbaarheid en controleerbaarheid van de builds te verbeteren. Het profiel is geïnspireerd op SLSA en reproduceerbare builds. Het kan details vastleggen zoals build-id, start- en eindtijden, omgeving, argumenten, buildtools en versies, buildstappen in een pipeline en hashes van het artifact, onder andere.
Lichte Profiel

Soms wordt een revisie van een softwarecomponent gegenereerd onder specifieke voorwaarden, zoals - een hotfix of op basis van de voorwaardelijke inschakeling van functies met een wijziging in de onderliggende voorwaarden. Deze potentieel tijdelijke revisies functioneren als een tussenoplossing tussen de reguliere releasecyclus en kunnen daarom gepaard gaan met geldigheidsdata.
Het gebruiksprofiel in SPDX3.0 richt zich op deze specifieke set van gebruikscases door velden te bieden voor het bekendmaken van de bedoelde gebruik, licentievoorwaarden, bouwvoorwaarden, testvoorwaarden en geldigheidsdata. Dit profiel kan ook helpen bij het onderscheiden van interne builds, zoals builds tijdens prototyping en ongebonden testen.
SPDX Vereenvoudigingen
Een van de doelstellingen van SPDX3.0 is om de specificatie te vereenvoudigen en deze uit te breiden naar een meer uitgebreide set van gebruiksgevallen. SPDX-profielen hierboven is een voorbeeld van vereenvoudiging dat een SDPX-document opdeelt in gebruiksgevallen en alleen de waarden vereist die van toepassing zijn op het specifieke profiel (bijv. beveiligingsgebruik gevallen versus licentiegebruik gevallen).
Bovendien zijn er een paar andere wijzigingen aangebracht in SPDX3.0 die gericht zijn op het aanpakken van de tekortkomingen van SPDX2.3:
Veldnaamruimte: SPDX3.0 introduceert een naamruimte om velden te identificeren die specifiek zijn voor een gegeven gebruiksgeval. Bijvoorbeeld, kerngebruik gevallen vallen onder de naamruimte Kern, AI-gebruiksgevallen vallen onder AI, en detaillicentie-gebruiksgevallen vallen onder UitgebreideLicenties. Dit stelt implementators en auditors in staat om zich te concentreren op velden in het gebied van hun gebruiksgeval.
Elementimporten: SPDX 2.3 gebruikt ExternalDocumentReferences om één SPDX-document te verbinden met een ander SPDX-document. Met 3.0 is de functionaliteit uitgebreid om Element externe documenten rechtstreeks te verwijzen met behulp van een combinatie van Naamruimte en Imports. Dit stelt het gebruiksgeval in staat van vaak gegenereerde kleine Element SPDX-documenten die worden verwezen vanuit minder vaak gegenereerde SPDX-metadata-documenten. Een verwezen gebruiksgeval was om een snippet SPDX te genereren met elke pull-verzoek als Element, aangezien het oorspronkelijke repository wordt bijgehouden met een volledige SBOM.
PURL: PURL of pakket-URL is geëlevateerd tot een top-level eigenschap, waardoor componentidentificatie wordt vereenvoudigd.
Agent: Een nieuwe klasse Agent omvat alles wat op een systeem kan handelen, zoals een persoon, organisatie of softwaretools. Daarom worden Maker- en Leverancier-eigenschappen van SPDX 2.3 veilig vervangen door een Agent.
JSON Pluralisatie: SPDX 2.3 had arrays die werden weergegeven als meervoudige strings (bijv. externalRefs). Met 3.0 zal SPDX overstappen op consistente veldnamen tussen RDF en JSON.
Waar kan ik meer leren?
SPDX 3.0 nodigt nog steeds uit tot input en feedback over de specificatie, en de mailinglijst of Github-repository van het SPDX-team is de beste manier om het team te bereiken.
Interlynk onderzoekt en bouwt actief tools voor zowel SPDX als CycloneDX ecosystemen, en we beantwoorden graag eventuele vragen die u heeft. Voel u vrij om contact met ons op te nemen via hello@interlynk.io of via interlynk.io