
Statische Webanwendung zur Anzeige von SBOMs und zur Durchführung von bedarfsorientierten Sicherheits-Scans mit osv.dev. Einfach auf GitHub/GitLab Pages bereitstellbar.
Eine einfache, statische Webanwendung zum Anzeigen von Softwareabhängigkeiten aus Software-Stücklisten (SBOM)-Dateien. Als statische Seite kann sie problemlos auf jedem statischen Webhosting-Dienst wie GitLab Pages, GitHub Pages oder Netlify gehostet werden.
trivy image <image> --format=cyclonedx --output=sbom.json --scanners vulngrype <image> --output cyclonedx-json > sbom.jsonDerzeit unterstützt BOM View die Formate CycloneDX und SPDX in JSON. Diese können mit Tools wie syft generiert werden.
Diese Anwendung ist darauf ausgelegt, SBOMs zur Laufzeit dynamisch zu laden. Um eigene SBOMs hinzuzufügen, müssen Sie das Projekt nicht neu erstellen. Befolgen Sie diese Schritte im Stammverzeichnis Ihrer bereitgestellten statischen Website (z. B. dem dist- oder public-Ordner, der von Ihrem Pages-Job bereitgestellt wird).
Erstellen Sie das sboms-Verzeichnis: Falls es nicht bereits existiert, erstellen Sie ein Verzeichnis mit dem Namen sboms.
Fügen Sie Ihre SBOMs hinzu: Kopieren Sie Ihre CycloneDX/SPDX JSON-Dateien in das sboms-Verzeichnis.
Aktualisieren Sie die Indexdatei: Erstellen oder aktualisieren Sie eine Datei namens index.json im sboms-Verzeichnis. Diese Datei teilt der Anwendung mit, welche SBOMs verfügbar sind. Sie muss ein einzelnes JSON-Array von Zeichenfolgen enthalten, wobei jede Zeichenfolge der Dateiname einer SBOM in diesem Verzeichnis ist.
Beispiel: Wenn Sie my-app.json und another-lib.json haben, sollte die index.json wie folgt aussehen:
[
"my-app.json",
"another-lib.json"
]
Die Anwendung ruft dann die index.json ab, um das SBOM-Auswahl-Dropdown zu füllen und die entsprechende Datei zu laden, wenn sie ausgewählt wird.
Nachfolgend finden Sie eine Beispielkonfiguration einer .gitlab-ci.yml, die ein vorab erstelltes Release abruft, SBOMs extrahiert und dynamisch die index.json für die Bereitstellung erstellt.
stages:
- sbom
- deploy
create_sbom:
stage: sbom
image: alpine:3.23.2
before_script:
- apk add syft
script:
- mkdir sboms
- syft alpine:3.19 -o cyclonedx-json=sboms/alpine-cyclone.json
artifacts:
paths:
- sboms
pages:
stage: deploy
image: alpine:3.23.2
before_script:
- apk add curl jq
script:
- curl -L https://github.com/hristiy4n/bom-view/releases/download/v0.4.0/bom-view-v0.4.0-dist.tar.gz | tar zx
- mv dist public
- mkdir public/sboms
- cp sboms/* public/sboms
- |
find sboms -maxdepth 1 -type f -name '*.json' ! -name 'index.json' \
| sed 's|.*/||' \
| sort \
| jq -R . | jq -s . > public/sboms/index.json
needs:
- job: create_sbom
artifacts:
paths:
- public
Ein Live-Beispiel dieser Konfiguration in Aktion finden Sie hier: https://security-dashboard-a9b4f8.gitlab.io/
Ihr endgültiges Bereitstellungsverzeichnis sollte die folgende Struktur aufweisen:
dist/
├── assets/
│ └── ... (CSS- und JS-Dateien)
├── index.html
└── sboms/
├── index.json
├── sbom1.json
├── sbom2.json
└── ...