CI/CD-Integration
Eine manuell gepflegte SBOM ist in dem Moment veraltet, in dem sie entsteht. Das Multi-Arch-Docker-Image (amd64/arm64) bringt kunnus in jede Pipeline, sodass jedes Release mit einer aktuellen SBOM erscheint.
GitHub Actions
- name: Generate SBOM
env:
# Schlüsselt die serialNumber der SBOM: aufeinanderfolgende Pipeline-Läufe
# bilden so eine Dokumentenserie statt unverbundener Dokumente.
KUNNUS_COMPONENT_ID: ${{ vars.KUNNUS_COMPONENT_ID }}
KUNNUS_COMPONENT_VERSION: ${{ github.ref_name }}
# Trägt Ihre Organisation als SBOM-Autor ein (CISA-Mindestangabe).
KUNNUS_AUTHOR: ${{ vars.KUNNUS_AUTHOR }}
run: |
docker run --rm -v ${{ github.workspace }}:/src \
-e KUNNUS_COMPONENT_ID -e KUNNUS_COMPONENT_VERSION -e KUNNUS_AUTHOR \
ghcr.io/think-ahead-technologies/kunnus-scanner:latest \
sbom repo /src --output /src/sbom.cdx.json
- name: Upload to kunnus platform
env:
KUNNUS_API_KEY: ${{ secrets.KUNNUS_API_KEY }}
KUNNUS_COMPONENT_ID: ${{ vars.KUNNUS_COMPONENT_ID }}
run: |
docker run --rm -v ${{ github.workspace }}:/src \
-e KUNNUS_API_KEY -e KUNNUS_COMPONENT_ID \
ghcr.io/think-ahead-technologies/kunnus-scanner:latest \
upload /src/sbom.cdx.jsonDie drei Identitäts-Variablen machen aus einem Stapel Einzel-SBOMs eine Dokumentenserie, der ein Prüfer folgen kann: KUNNUS_COMPONENT_ID schlüsselt die Seriennummer, KUNNUS_COMPONENT_VERSION benennt das Release, KUNNUS_AUTHOR hält fest, wer den Scanner betrieben hat. Verwenden Sie dieselbe Component-ID wie für kunnus upload. Ohne sie läuft der Scan trotzdem — jeder Lauf bekommt dann nur eine zufällige Seriennummer und einen Platzhalter-Autor.
GitLab CI
sbom:
image:
name: ghcr.io/think-ahead-technologies/kunnus-scanner:latest
entrypoint: [""]
script:
- /kunnus sbom repo . --output sbom.cdx.json
- /kunnus upload sbom.cdx.json
variables:
KUNNUS_API_KEY: $KUNNUS_API_KEY
KUNNUS_COMPONENT_ID: $KUNNUS_COMPONENT_ID
KUNNUS_COMPONENT_VERSION: $CI_COMMIT_REF_NAME
KUNNUS_AUTHOR: $KUNNUS_AUTHOR
artifacts:
paths: [sbom.cdx.json]Exit-Codes: vollständige vs. unvollständige SBOMs
Exit 0 bedeutet: Jeder Extraktor lief sauber durch. Schließt der Scan ab, aber einzelne Plugins sind fehlgeschlagen, wird die SBOM trotzdem geschrieben und kunnus beendet sich mit Exit 1 und einer Liste der fehlgeschlagenen Plugins — die Pipeline kann eine vollständige SBOM von einer mit Lücken unterscheiden, statt Letztere stillschweigend auszuliefern. --verbosity info (oder KUNNUS_VERBOSITY=info) liefert Details pro Plugin.
Upload-Konfiguration
kunnus upload liest seine Flags aus Umgebungsvariablen — KUNNUS_API_KEY (erforderlich), KUNNUS_COMPONENT_ID und KUNNUS_UPLOAD_URL — die natürliche Form für CI-Secrets. Die Server-Antwort geht nach stdout.
gh attestation verify prüfen — SECURITY.md im Repository zeigt wie.