Een CRA-conforme SBOM genereren: tools, formaten, CI/CD

Praktische gids voor het genereren van een SBOM voor CRA-compliance: open-source tools, formaatkeuze en geautomatiseerde pipeline-integratie.

CRA Evidence Team Gepubliceerd 5 februari 2026 Bijgewerkt 26 juni 2026
Een gebouwd artefact gescand tot een SBOM-document met een componentenlijst, vervolgens doorgevoerd in doorlopende monitoring
In dit artikel

De CRA vereist een Software Bill of Materials. Elk concurrerend artikel vertelt u dit. Geen enkel laat u zien hoe u er een genereert.

Deze gids behandelt open-source tools, formaatkeuze en CI/CD-integratie zonder vendor lock-in.

Samenvatting

  • De CRA vereist machineleesbare SBOM's die "ten minste top-level dependencies" omvatten
  • Aanbevolen formaten: CycloneDX 1.4+ of SPDX 2.3+ (per BSI TR-03183)
  • Open-source tools: Syft (images/bestandssystemen), Trivy (containers), cdxgen (broncode)
  • SBOM-generatie integreren in CI/CD voor automatische updates
  • Kwaliteit telt: minimumvelden omvatten pakketnaam, versie, leverancier, hash, licentie

CI/CD SBOM-pipeline

Automatiseer alle zes stappen zodat elke release een verse, ondertekende SBOM oplevert.

1
Code

Een commit activeert de pipeline bij een merge naar main of bij een versietag-push.

InputBroncode + lockfiles

2
Bouwen

Containerimage of binary samengesteld uit vergrendelde afhankelijkheden.

InputGebouwd artefact

3
Genereren

Syft, Trivy of cdxgen scant het artefact en produceert een CycloneDX- of SPDX-bestand.

Outputsbom.cdx.json

4
Ondertekenen

Cosign ondertekent het SBOM-bestand en produceert een sigstore-bundel met de handtekening en het certificaat.

Outputsbom.cdx.json.sigstore.json

5
Opslaan

SBOM gearchiveerd in CI-artefacten of geüpload naar CRA Evidence naast de release-tag.

Output10 jaar bewaard

6
Bewaken

Opgeslagen SBOM opnieuw gescand op nieuwe CVE's; waarschuwingen worden gegenereerd wanneer nieuwe kwetsbaarheden overeenkomen met componenten.

DoorlopendKwetsbaarheidswaarschuwingen

Wat de CRA daadwerkelijk vereist

Begin met wat de verordening zegt. Bijlage I, Deel II van de CRA vereist dat fabrikanten:

"kwetsbaarheden en componenten in producten met digitale elementen vaststellen en documenteren, onder meer door een softwarestuklijst op te stellen in een algemeen gebruikt en machineleesbaar formaat waarin ten minste de afhankelijkheden van de producten op het hoogste niveau worden aangegeven"

Kernpunten:

  • Machineleesbaar formaat: Geen PDF, geen spreadsheet, maar gestructureerde data
  • Minimaal top-level dependencies: Het minimum, meer is beter
  • Niet verplicht openbaar: Verstrekt aan autoriteiten op verzoek
  • Moet worden bijgewerkt: Bij elke release, patch of componentwijziging

De CRA schrijft geen specifiek formaat voor, maar standaardiseringsinitiatieven wijzen duidelijk naar CycloneDX en SPDX.

De SBOM maakt deel uit van de CRA technische documentatie onder Bijlage VII. Fabrikanten moeten die documentatie opstellen voordat een product op de markt wordt gebracht en beschikbaar houden voor markttoezichtautoriteiten gedurende ten minste 10 jaar na het in de handel brengen, of voor de ondersteuningsperiode, afhankelijk van welke termijn langer is (Artikel 13, lid 13). Een SBOM die lokaal is opgeslagen zonder koppeling aan een specifieke productrelease voldoet daar niet aan. Deze moet opvraagbaar, geversioned en gekoppeld zijn aan de productversie die zij beschrijft.

Formaatkeuze: CycloneDX vs. SPDX

Twee formaten domineren het SBOM-landschap. Beide zijn acceptabel voor CRA-compliance.

CycloneDX

Oorsprong: OWASP-project, beveiligingsgericht Huidige versie: 1.6 (1.4+ aanbevolen voor CRA) Beste voor: Beveiligings- en kwetsbaarheidsbeheer

Sterke punten:

  • Native VEX-ondersteuning (Vulnerability Exploitability eXchange)
  • Ontworpen voor beveiligingsgebruiksscenario's
  • Lichtere specificatie, eenvoudiger te implementeren
  • Sterk tools-ecosysteem
  • Directe CVE-/kwetsbaarheidskoppeling

JSON-voorbeeld:

{
  "bomFormat": "CycloneDX",
  "specVersion": "1.5",
  "version": 1,
  "components": [
    {
      "type": "library",
      "name": "lodash",
      "version": "4.17.21",
      "purl": "pkg:npm/lodash@4.17.21",
      "hashes": [
        {
          "alg": "SHA-256",
          "content": "cc6d..."
        }
      ],
      "licenses": [
        {
          "license": {
            "id": "MIT"
          }
        }
      ]
    }
  ]
}

SPDX

Oorsprong: Linux Foundation, licentie-compliance-gericht Huidige versie: 2.3 (ISO/IEC 5962:2021-norm) Beste voor: Licentie-compliance en juridische review

Sterke punten:

  • ISO internationale norm
  • Uitgebreide licentie-expressiesyntax
  • Sterk in open-source compliance-contexten
  • Langere staat van dienst
  • Beter voor complexe licentiescenario's

JSON-voorbeeld:

{
  "spdxVersion": "SPDX-2.3",
  "dataLicense": "CC0-1.0",
  "SPDXID": "SPDXRef-DOCUMENT",
  "name": "my-application",
  "packages": [
    {
      "SPDXID": "SPDXRef-Package-lodash",
      "name": "lodash",
      "versionInfo": "4.17.21",
      "downloadLocation": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
      "licenseConcluded": "MIT",
      "checksums": [
        {
          "algorithm": "SHA256",
          "checksumValue": "cc6d..."
        }
      ]
    }
  ]
}

Welk formaat kiezen?

Gebruiksscenario Aanbeveling
Primaire focus is beveiliging/kwetsbaarheden CycloneDX
Primaire focus is licentie-compliance SPDX
VEX-integratie nodig CycloneDX
Onderneming met bestaande SPDX-tooling SPDX
Duitse markt (BSI TR-03183) Beide (beide aanbevolen)
Nieuw beginnen, geen voorkeur CycloneDX (eenvoudiger, beveiligingsgericht)

Voor CRA-compliance werkt elk formaat. Kies er één en wees consistent.

Open-source SBOM-generatietools

Geen vendor lock-in vereist. Deze tools zijn gratis, open-source en productieklaar.

Syft (Anchore)

Beste voor: Containerimages, bestandssystemen, archieven Licentie: Apache 2.0 Uitvoerformaten: CycloneDX, SPDX, Syft JSON

Installatie:

# Linux/macOS
curl -sSfL https://raw.githubusercontent.com/anchore/syft/main/install.sh | sh -s -- -b /usr/local/bin

# Homebrew
brew install syft

# Docker
docker pull anchore/syft

Gebruiksvoorbeelden:

# Containerimage scannen
syft alpine:latest -o cyclonedx-json > sbom.cdx.json

# Map scannen
syft dir:/pad/naar/project -o cyclonedx-json > sbom.cdx.json

# Archief scannen
syft /pad/naar/archief.tar.gz -o spdx-json > sbom.spdx.json

# Scannen met specifieke catalogiseerders (bijv. alleen Python)
syft dir:. -o cyclonedx-json --select-catalogers python

Ondersteunde ecosystemen: Python, Node.js, Ruby, Java, Go, Rust, PHP, .NET en meer.

Trivy (Aqua Security)

Beste voor: Containerimages met ingebouwde kwetsbaarheidscontext Licentie: Apache 2.0 Uitvoerformaten: CycloneDX, SPDX plus kwetsbaarheidsrapporten

Installatie:

# Linux (Debian/Ubuntu)
sudo apt-get install trivy

# macOS
brew install trivy

# Docker
docker pull aquasec/trivy

Gebruiksvoorbeelden:

# SBOM genereren vanuit containerimage
trivy image --format cyclonedx --output sbom.cdx.json alpine:latest

# SBOM genereren vanuit bestandssysteem
trivy fs --format cyclonedx --output sbom.cdx.json /pad/naar/project

# SBOM genereren met kwetsbaarheidsinfo
trivy image --format cyclonedx --output sbom.cdx.json \
  --scanners vuln nginx:latest

Voordeel: Trivy kan SBOM's genereren en kwetsbaarheden scannen in één stap.

cdxgen (CycloneDX)

Beste voor: Broncodeanalyse in veel talen Licentie: Apache 2.0 Uitvoerformaat: CycloneDX

Installatie:

# npm (vereist Node.js)
npm install -g @cyclonedx/cdxgen

# Docker
docker pull ghcr.io/cyclonedx/cdxgen

Gebruiksvoorbeelden:

# Huidige map scannen
cdxgen -o sbom.json

# Specifiek projecttype scannen
cdxgen -t python -o sbom.json

# Scannen met diepe afhankelijkheidsresolutie
cdxgen --deep -o sbom.json

# Specifieke map scannen
cdxgen -o sbom.json /pad/naar/project

Ondersteunde talen: JavaScript, Python, Java, Go, Rust, PHP, Ruby, .NET, C/C++ en meer.

Toolsvergelijking

Functie Syft Trivy cdxgen
Containerimages Uitstekend Uitstekend Goed
Broncode Goed Goed Uitstekend
Bestandssysteemscanning Uitstekend Goed Goed
Kwetsbaarheidsscanning Nee (gebruik Grype) Ja Nee
CycloneDX-uitvoer Ja Ja Ja
SPDX-uitvoer Ja Ja Nee
Snelheid Snel Gemiddeld Gemiddeld
Taaldekking Zeer breed Breed Zeer breed

Aanbeveling: Begin met Syft voor de meeste gebruiksscenario's. Voeg Trivy toe als u geïntegreerde kwetsbaarheidsscanning nodig heeft. Gebruik cdxgen voor complexe broncodeprojecten.

Firmware en embedded apparaten

De bovenstaande tools werken goed voor containers en pakketbeheerders. Voor firmware en embedded apparaten (het primaire CRA-doelwit) is de aanpak anders.

Firmware-images zijn binaire bestanden, geen pakketregisters. De standaard eerste stap is het extraheren van het bestandssysteem:

# Bestandssysteem extraheren uit firmware-image
binwalk -Me firmware.bin

# Syft uitvoeren op het geëxtraheerde bestandssysteem
syft dir:_firmware.bin.extracted/squashfs-root -o cyclonedx-json > sbom.cdx.json

Gebruik binwalk -Me (recursieve extractie) in plaats van -e voor geneste of gecomprimeerde images. De dekking is lager dan bij containerimages. Gestripte binaire bestanden verliezen symboolinformatie en Syft herkent mogelijk niet alle componenten.

Voor binaire analyse van gecompileerde componenten bieden BLint, cve-bin-tool of EMBA diepere inspectie. Proprietary SDK's en gesloten-source bibliotheken in firmware vereisen doorgaans handmatige SBOM-vermeldingen. Documenteer de leverancier, versie en bron-URL.

CI/CD-integratie

Handmatige SBOM-generatie schaalt niet. Integreer het in uw buildpipeline.

GitHub Actions

name: SBOM-generatie

on:
  push:
    branches: [main]
  release:
    types: [published]

jobs:
  sbom:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      id-token: write   # vereist voor keyless ondertekening met Cosign
    steps:
      - name: Code uitchecken
        uses: actions/checkout@v4

      - name: Containerimage bouwen
        run: |
          docker build -t myapp:${{ github.sha }} .

      - name: Syft installeren
        run: |
          curl -sSfL https://raw.githubusercontent.com/anchore/syft/main/install.sh | sh -s -- -b /usr/local/bin

      - name: SBOM genereren vanuit gebouwd image
        run: |
          syft myapp:${{ github.sha }} -o cyclonedx-json > sbom.cdx.json

      - name: Cosign installeren
        uses: sigstore/cosign-installer@v3

      - name: SBOM ondertekenen (keyless)
        run: |
          cosign sign-blob sbom.cdx.json --bundle sbom.cdx.json.sigstore.json --yes

      - name: SBOM en handtekening uploaden als artefacten
        uses: actions/upload-artifact@v4
        with:
          name: sbom
          path: |
            sbom.cdx.json
            sbom.cdx.json.sigstore.json
          retention-days: 90

      # Optioneel: uploaden naar CRA Evidence voor langdurige compliance-opslag
      - name: Uploaden naar CRA Evidence
        if: github.event_name == 'release'
        env:
          CRA_EVIDENCE_TOKEN: ${{ secrets.CRA_EVIDENCE_TOKEN }}
        run: |
          curl -X POST https://api.craevidence.com/api/v1/ci/sbom \
            -H "Authorization: Bearer $CRA_EVIDENCE_TOKEN" \
            -F "file=@sbom.cdx.json" \
            -F "product_id=${{ vars.PRODUCT_ID }}" \
            -F "version=${{ github.ref_name }}"

Let op: Het CI-artefact (retention-days: 90) is voor het gemak van ontwikkelaars, niet voor compliance. Voor CRA-conforme bewaring van 10 jaar uploadt u bij elke release naar een speciale langetermijnopslag. Zie de sectie Bewaring hieronder.

GitLab CI

generate-sbom:
  stage: build
  image: anchore/syft:latest
  script:
    - syft dir:. -o cyclonedx-json > sbom.cdx.json
  artifacts:
    paths:
      - sbom.cdx.json
    expire_in: 90 days
  rules:
    - if: $CI_COMMIT_BRANCH == "main"
    - if: $CI_COMMIT_TAG

Jenkins

pipeline {
    agent any

    stages {
        stage('SBOM genereren') {
            steps {
                sh '''
                    curl -sSfL https://raw.githubusercontent.com/anchore/syft/main/install.sh | sh -s -- -b .
                    ./syft dir:. -o cyclonedx-json > sbom.cdx.json
                '''
            }
        }

        stage('SBOM archiveren') {
            steps {
                archiveArtifacts artifacts: 'sbom.cdx.json', fingerprint: true
            }
        }
    }
}

Docker Build-integratie

SBOM genereren tijdens Docker build:

# Multi-stage build met SBOM-generatie
FROM node:20 AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build

# SBOM genereren in buildstage
FROM anchore/syft:latest AS sbom
COPY --from=builder /app /app
RUN syft dir:/app -o cyclonedx-json > /sbom.cdx.json

# Eindimage
FROM node:20-slim
COPY --from=builder /app/dist /app
COPY --from=sbom /sbom.cdx.json /app/sbom.cdx.json
CMD ["node", "/app/index.js"]

SBOM ondertekenen

De CRA schrijft het ondertekenen van SBOM's niet voor, maar een handtekening bewijst dat de SBOM niet is gewijzigd na het genereren. Zakelijke inkoopteams en aangemelde instanties verwachten steeds vaker een verifieerbare handtekening naast het SBOM-bestand.

Cosign (onderdeel van het Sigstore-project) is de standaard tool:

# Cosign installeren
brew install cosign

# Een SBOM-bestand ondertekenen. Produceert een bundel met de handtekening en het certificaat
cosign sign-blob sbom.cdx.json --bundle sbom.cdx.json.sigstore.json

# Later verifiëren
cosign verify-blob sbom.cdx.json --bundle sbom.cdx.json.sigstore.json \
  --certificate-identity <uw-identiteit> \
  --certificate-oidc-issuer <uw-issuer>

Sla sbom.cdx.json en sbom.cdx.json.sigstore.json samen op. De bundel bevat de handtekening, het ondertekeningscertificaat en de Rekor-transparantielogvermelding. Iedereen met de bundel kan de SBOM verifiëren zonder u te contacteren.

Voor CI/CD ondersteunt Cosign keyless ondertekening via de OIDC-identiteit van de pipeline (GitHub Actions, GitLab CI). Geen sleutels om te beheren. Het GitHub Actions-voorbeeld hierboven bevat dit al: de job heeft de machtiging id-token: write nodig en sign-blob gebruikt --yes om zonder interactieve prompt te werken. Cosign 2.0 en later maakt keyless ondertekening de standaard, zodat de oude markering COSIGN_EXPERIMENTAL niet langer nodig is.

Doorlopende monitoring

Een ondertekende, opgeslagen SBOM is niet het eindpunt. Nieuwe kwetsbaarheden worden bekend voor componenten die bij de release schoon waren. De opgeslagen SBOM moet op schema opnieuw worden gescand zodat die CVE's zichtbaar worden.

Grype leest een bestaande SBOM direct, zodat de herscan de oorspronkelijke bouwomgeving niet nodig heeft:

name: SBOM-herscan

on:
  schedule:
    - cron: "0 6 * * 1"  # Wekelijks, maandag 06:00 UTC

jobs:
  rescan:
    runs-on: ubuntu-latest
    steps:
      - name: Opgeslagen SBOM ophalen
        env:
          SBOM_URL: ${{ vars.SBOM_URL }}
        run: |
          curl -sSfL -o sbom.cdx.json "$SBOM_URL"

      - name: Grype installeren
        run: |
          curl -sSfL https://raw.githubusercontent.com/anchore/grype/main/install.sh | sh -s -- -b /usr/local/bin

      - name: SBOM scannen op nieuwe CVE's
        run: |
          grype sbom:./sbom.cdx.json

CRA Evidence voert deze herscan automatisch uit voor elke geüploade SBOM en waarschuwt u wanneer een nieuwe CVE overeenkomt met een component. Dat dekt dezelfde behoefte zonder een geplande job.

SBOM-kwaliteit: voldoen aan TR-03183

De Duitse BSI Technische Richtlijn TR-03183 breidt de NTIA-minimumelementen uit. Hoewel niet wettelijk verplicht in de hele EU, garandeert het volgen van TR-03183 hoge SBOM-kwaliteit.

Vereiste velden

Veld Vereist door Opmerkingen
Componentnaam NTIA + TR-03183 Pakketidentificatie
Versie NTIA + TR-03183 Exacte versiereeks
Leverancier NTIA + TR-03183 Leverancier of beheerder
Unieke identifier NTIA + TR-03183 PURL aanbevolen
Afhankelijkheidsrelatie NTIA + TR-03183 Direct vs. transitief
Auteur van SBOM NTIA + TR-03183 Wie de SBOM heeft gemaakt
Tijdstempel NTIA + TR-03183 Wanneer SBOM is gemaakt
Hashwaarden TR-03183 Minimaal SHA-256
Licentie TR-03183 SPDX-licentie-ID
Bronrepository TR-03183 VCS-URL indien beschikbaar

SBOM-kwaliteit valideren

Gebruik deze tools om uw SBOM te controleren:

# CycloneDX-formaat valideren
npm install -g @cyclonedx/cyclonedx-cli
cyclonedx validate --input-file sbom.cdx.json

# Controleren op minimumvelden met jq
jq '.components[] | select(.version == null or .purl == null)' sbom.cdx.json

# Componenten met hashes tellen
jq '[.components[] | select(.hashes != null)] | length' sbom.cdx.json

SBOM-kwaliteit verbeteren

Als uw SBOM gegevens mist:

  1. Gebruik lockfiles: package-lock.json, Pipfile.lock, go.sum bevatten meer metadata
  2. Scan gebouwde artefacten: Completer dan alleen broncodescans
  3. Combineer tools: Verschillende tools vinden verschillende componenten
  4. Handmatige vermeldingen toevoegen: Voor commerciële of interne componenten

SBOM's actueel houden

Een SBOM is een momentopname. Deze moet worden bijgewerkt om bruikbaar te blijven.

Wanneer opnieuw genereren

  • Bij elke release (major, minor, patch)
  • Na afhankelijkheidsupdates
  • Na beveiligingspatches
  • Als de buildconfiguratie verandert

Versioneringsstrategie

product-v1.0.0-sbom.cdx.json
product-v1.0.1-sbom.cdx.json
product-v1.1.0-sbom.cdx.json

Of gebruik tijdstempels:

product-sbom-2026-01-15T10-30-00Z.cdx.json

Bewaring

Bewaring van 10 jaar is een wettelijke verplichting

Artikel 13, lid 13 verplicht fabrikanten de technische documentatie beschikbaar te houden voor markttoezichtautoriteiten gedurende ten minste 10 jaar na het in de handel brengen van het product, of voor de ondersteuningsperiode, afhankelijk van welke termijn langer is. De SBOM maakt deel uit van die documentatie, zodat dezelfde termijn van toepassing is.

Het CI-artefact (90 dagen in de bovenstaande voorbeelden) is voor het gemak van ontwikkelaars, niet voor compliance. De eis van 10 jaar vereist een speciale langetermijnopslag. CRA Evidence is daarvoor ontwikkeld: geversioned SBOM-opslag met kwetsbaarheidsherscan en export van technische bestanden, gekoppeld aan elke productrelease.

Wie de opslag zelf wil beheren, kan elke grote objectopslag gebruiken mits de juiste instellingen zijn geconfigureerd:

Objectopslag In te schakelen opties
Amazon S3 Versiebeheer, levenscyclusbeleid, Object Lock, toegangscontroles
Azure Blob Storage Onveranderbaarheidsbeleid, toegangslaagbeheer
Google Cloud Storage Bewaarbeleid, objectversiebeheer

Een levenscyclusbeleid alleen is niet voldoende. De opslag moet ook versiebeheer, toegangscontroles en bij voorkeur onveranderlijkheid ondersteunen om aan auditvereisten te voldoen.

Veelgemaakte fouten

Eenmalige SBOM-generatie

Probleem: Eenmalig een SBOM aanmaken en nooit bijwerken.

Oplossing: SBOM-generatie automatiseren in CI/CD. Elke build moet een verse SBOM produceren.

Ontbrekende transitive dependencies

Probleem: SBOM vermeldt alleen directe afhankelijkheden, niet geneste pakketten.

Oplossing: Gebruik lockfiles, scan gebouwde artefacten, schakel opties voor diep scannen in.

Onjuiste formaatversie

Probleem: CycloneDX 1.3 gebruiken terwijl TR-03183 1.4+ aanbeveelt.

Oplossing: Controleer de uitvoerversie van uw tool. Houd tools regelmatig up-to-date.

Geen hashwaarden

Probleem: Componenten zonder cryptografische hashes kunnen niet worden geverifieerd.

Oplossing: Zorg dat uw tool hashes opneemt. Syft en Trivy voegen SHA-256-hashes toe als ze de componentbestanden kunnen lezen.

Handmatig aanmaken

Probleem: Handmatig SBOM's opstellen is foutgevoelig en onhoudbaar.

Oplossing: Altijd automatiseren. Handmatige vermeldingen alleen voor componenten die tools niet kunnen detecteren.

Interne componenten negeren

Probleem: Alleen open-source afhankelijkheden documenteren, niet de eigen code.

Oplossing: Interne componenten moeten ook worden gedocumenteerd. Voeg ze handmatig toe of configureer tools op de juiste manier.

SBOM-implementatiechecklist

Formaatkeuze
  • CycloneDX 1.4+ of SPDX 2.3+ gekozen.
  • JSON-formaat geselecteerd (machineleesbaar, geen PDF of spreadsheet).
  • Formaatkeuze gedocumenteerd voor het team.

Elk formaat voldoet aan de CRA. BSI TR-03183 beveelt beide aan. Formaat wijzigen na de eerste release is kostbaar; kies dus voor die eerste release.

Tooling
  • Primaire tool geselecteerd: Syft, Trivy of cdxgen.
  • Tool lokaal geïnstalleerd en getest met een echt artefact.
  • Uitvoer gevalideerd tegen het CycloneDX- of SPDX-schema.

Kies de tool die past bij het artefact. De toolsvergelijkingstabel hierboven toont de beste keuze voor containers, broncodebomen en firmware-images.

CI/CD-integratie
  • SBOM-generatie toegevoegd aan de buildpipeline.
  • Artefacten opgeslagen met passend bewaarbeleid.
  • Generatie getriggerd bij elke release-tag, niet alleen bij pushes naar main.

Een release zonder bijbehorende SBOM is vanaf dag één een compliance-gat. Koppel generatie aan de pipeline zodat de stap niet kan worden overgeslagen.

Kwaliteitsborging
  • Alle componenten bevatten naam, versie en leverancier.
  • Hashwaarden aanwezig voor elk component (minimaal SHA-256).
  • Licentie-informatie opgenomen met SPDX-licentie-identificatoren.
  • Transitive dependencies vastgelegd, niet alleen directe.
  • PURL-identifiers gebruikt voor elk pakket.

Voer cyclonedx validate uit en controleer op ontbrekende hashes met jq '[.components[] | select(.hashes == null)] | length'.

Operationeel
  • SBOM geversioned en benoemd naast de productrelease die zij beschrijft.
  • Historische SBOM's gearchiveerd met een bewaarbeleid van 10 jaar.
  • Proces gedocumenteerd zodat elk teamlid op verzoek opnieuw kan genereren.

Bewaring is een wettelijke verplichting, geen huishouding. Bewaar elke historische SBOM gekoppeld aan de release die zij beschrijft voor de volledige periode.

CRA Evidence (optioneel)
  • API-token geconfigureerd in CI-secrets.
  • SBOM-upload geautomatiseerd bij release via CLI of API.
  • TR-03183-kwaliteitsscoring bekeken na de eerste upload.

CRA Evidence automatiseert kwetsbaarheidsherscan, kwaliteitsscoring en export van technische bestanden met geïntegreerde SBOM's.

Veelgestelde vragen

Schrijft de CRA een specifiek SBOM-formaat voor?

Nee. De CRA vereist een machineleesbaar formaat maar schrijft CycloneDX of SPDX niet bij naam voor. Beide voldoen aan de verordening. BSI TR-03183 beveelt CycloneDX 1.4+ of SPDX 2.3+ uitdrukkelijk aan, en elk geeft u een verdedigbare keuze bij auditors. Kies er één en gebruik het consistent bij alle releases.

Moet ik transitive dependencies opnemen?

De CRA-tekst zegt "ten minste top-level dependencies". Dat is het wettelijke minimum. BSI TR-03183 beveelt volledige transitieve dekking aan, en dat is wat autoriteiten en klanten in de praktijk steeds vaker verwachten. Gebouwde artefacten scannen in plaats van bronmanifesten is de eenvoudigste manier om de volledige afhankelijkheidsboom automatisch vast te leggen.

Moet de SBOM openbaar worden gemaakt?

Nee. De CRA schrijft geen openbaarmaking voor. U moet de SBOM op verzoek kunnen verstrekken aan markttoezichtautoriteiten. Delen met klanten of openbaar publiceren is optioneel en een commerciële beslissing. Veel fabrikanten verstrekken SBOM's aan zakelijke klanten als onderdeel van inkoop.

Hoe vaak moet ik de SBOM bijwerken?

De CRA stelt geen vaste termijn. Elke productversie moet een actuele SBOM hebben. In de praktijk betekent dat opnieuw genereren bij elke release, na afhankelijkheidsupdates, na beveiligingspatches en bij wijzigingen in de buildconfiguratie. SBOM-generatie automatiseren in CI/CD maakt dit automatisch in plaats van een handmatige stap die u kunt vergeten.

Volstaat een package.json of requirements.txt?

Nee. Bronmanifesten zijn geen SBOM's. Een CRA-conforme SBOM moet in een machineleesbaar gestructureerd formaat zijn (CycloneDX of SPDX), cryptografische hashes bevatten voor elk component en het gebouwde artefact weerspiegelen in plaats van alleen de broncodeboom. Een package.json vermeldt beoogde afhankelijkheden; een CycloneDX-SBOM van een gescand containerimage documenteert wat er daadwerkelijk is meegeleverd.

Hoe lang moet ik SBOM's bewaren?

Fabrikanten moeten de technische documentatie bewaren gedurende ten minste 10 jaar na het in de handel brengen van het product, of voor de ondersteuningsperiode, afhankelijk van welke termijn langer is. De SBOM maakt deel uit van die documentatie, zodat de bewaartermijn ook daarop van toepassing is. *(Artikel 13, lid 13.)*

Wat als een component geen PURL of hash heeft?

Voeg het handmatig toe. Tools missen commerciële SDK's, proprietary bibliotheken en interne componenten die niet in publieke pakketregisters staan. Een handmatige SBOM-vermelding is geldig onder de CRA. Een niet-gedocumenteerd component is dat niet. Voor componenten waarvoor u geen hash kunt berekenen, documenteert u minimaal de bronlocatie en versiereeks en noteert u de lacune in uw technisch dossier.

Volgende stappen

Wat te doen

  1. Kies nu een formaat. Neem CycloneDX 1.5 voor nieuwe projecten. Installeer Syft en voer het uit op uw hoofdrepository of containerimage. Een werkende SBOM in 15 minuten is nuttiger dan een perfecte formaatkeuze die een week duurt.
  2. Voeg SBOM-generatie toe aan uw CI/CD-pipeline. Gebruik de GitHub Actions-, GitLab CI- of Jenkins-voorbeelden hierboven. Sla de uitvoer op als release-artefact zodat elke versie een bijbehorende SBOM heeft vanaf het moment dat deze wordt geleverd.
  3. Valideer de kwaliteit. Voer cyclonedx validate uit en controleer of elk component een hash en een PURL heeft. Componenten zonder hashes voldoen niet aan de TR-03183-norm en zullen auditors niet overtuigen.
  4. Koppel aan kwetsbaarheidsscanning. Upload uw SBOM naar CRA Evidence of voer Grype erop uit. Een SBOM die nooit wordt gescand geeft u compliance-papierwerk, geen beveiligingspositie.
  5. Plan nu voor bewaring van 10 jaar. Stel levenscyclusbeleid voor artefacten in voordat u drie jaar aan releases hebt zonder dat beleid. Achteraf bewaarregels toepassen is lastig en soms onmogelijk.

Vereisten: Begrijp wat de CRA vereist voor SBOM's in onze SBOM-vereistengids.

Kwaliteit: Valideer uw SBOM aan de hand van de BSI TR-03183-norm.

VEX: Voeg kwetsbaarheidscontext toe aan uw SBOM met VEX-documenten.


Dit artikel is uitsluitend bedoeld ter informatie en vormt geen juridisch advies. Raadpleeg voor specifieke compliancebegeleiding een gekwalificeerde juridisch adviseur met kennis van EU-productregelgeving.

CRA SBOM
Share

Is de CRA van toepassing op uw product?

Beantwoord 6 eenvoudige vragen om te ontdekken of uw product onder de EU Verordening cyberweerbaarheid valt. Ontvang uw resultaat in minder dan 2 minuten.

Klaar om CRA-conformiteit te bereiken?

Begin met het beheren van uw SBOMs en compliance-documentatie met CRA Evidence.

Diepgaande analyse van CRA-onderwerpen

Doorlopende gidsen over de eisen, processen en rollen uit de EU-cyberweerbaarheidsverordening (CRA).