Dieses Dokument befindet sich in aktiver Entwicklung und ist noch nicht finalisiert.
Skip to content

8.3 CRA Compliance Checker (cra-check)

Übersicht

cra-check ist ein Zero-Dependency Node.js CLI-Tool zur Prüfung der CRA-Compliance eines Produkts. Es prüft Vorhandensein und Qualität von Compliance-Artefakten — SBOM, VEX, Vulnerability Scans, Sicherheitsrichtlinien und Supportzeitraum.

Verwendung

bash
# Aktuelles Verzeichnis prüfen
npx @bauer-group/cra-check

# GitHub-Repository prüfen (neuestes Release)
npx @bauer-group/cra-check bauer-group/mein-produkt

# JSON-Ausgabe für Automatisierung
npx @bauer-group/cra-check --format json

# CI-Modus (Exit-Code 1 bei Unterschreitung)
npx @bauer-group/cra-check --ci --min-score 70

Modi

Lokaler Modus

Durchsucht das Dateisystem nach CRA-Artefakten:

DateiPrüfung
sbom.cdx.jsonSBOM vorhanden, gültig, Komponentenanzahl
sbom.cdx.json.sig + .certCosign-Signatur vorhanden
vex.openvex.jsonVEX-Dokument, Statements, Triage-Status
vulnerability-report.jsonSchweregrad-Zählung (kritisch/hoch/mittel/niedrig)
SECURITY.mdSicherheitsrichtlinie, CVD-Prozess definiert
cra-config.jsonSupportzeitraum-Definition

Remote-Modus

Ruft Daten über die GitHub API ab — Release-Assets, Signaturen, SECURITY.md.

Ausgabe

  CRA Compliance: mein-produkt v2.3.1
  ══════════════════════════════════════════

  SBOM                ✅ PASS  CycloneDX, 142 Komponenten
  SBOM Signiert       ✅ PASS  Cosign-Signatur + Zertifikat vorhanden
  VEX-Dokument        ✅ PASS  15 Statements (3 bewertet)
  Schwachstellen      ⚠️ WARN  0 kritisch, 2 hoch, 5 mittel, 3 niedrig
  Sicherheitsrichtl.  ✅ PASS  SECURITY.md mit CVD-Prozess
  Supportzeitraum     ✅ PASS  5 Jahre

  Score: 85/100 ████████████████░░░░ PASS

CI/CD-Integration

yaml
- name: 🔍 CRA Compliance Check
  run: npx @bauer-group/cra-check --ci --min-score 70
  env:
    GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Exit-Codes

CodeBedeutung
0Score >= min-score (PASS)
1Score < min-score (FAIL) — nur mit --ci
2Schwerwiegender Fehler

Optionen

OptionStandardBeschreibung
--format <terminal|json>terminalAusgabeformat
--cifalseCI-Modus: Exit-Code bei Fehler
--min-score <n>70Mindest-Score
--github-token <token>GITHUB_TOKENGitHub API-Authentifizierung
--release <tag>latestRelease-Tag für Remote-Modus
--verbosefalseScore-Aufschlüsselung anzeigen

Voraussetzungen

  • Node.js >= 20
  • Keine npm-Abhängigkeiten

Dokumentation lizenziert unter CC BY-NC 4.0 · Code lizenziert unter MIT