Container sind heutzutage der Standard für die Ausführung von Serveranwendungen, daher haben Sie wahrscheinlich viele SBOMs, die Sie auf Dependency Track SaaS übertragen möchten. Glücklicherweise ist die Extraktion von Software, die als Container oder Docker-Container verpackt ist, schnell und super einfach.

Im folgenden Beispiel werden wir die SBOM-Generierung aus einem Docker-Image und deren Übertragung auf Dependency Track SaaS veranschaulichen. Um die SBOM aus jeder Software zu generieren, verwenden Sie eine der in diesem Cheat Sheet beschriebenen Methoden.

Docker SBOM-Übertragung

Um die Übertragung zu automatisieren, müssen Sie die SBOM-Datei mit einem Projekt in Dependency Track verknüpfen. Es gibt mehrere Möglichkeiten, einschließlich der automatischen Erstellung eines neuen Projekts.

Im wahrscheinlichsten Szenario gehen wir davon aus, dass Sie bereits ein Projekt in Dependency Track haben und dessen Liste der Komponenten aktualisieren möchten. Am einfachsten ist es, die SBOM mit der Projekt-UUID von Dependency Track zu verknüpfen.

Das folgende Skript führt die SBOM-Extraktion aus einem lokalen Docker-Registry durch und überträgt sie auf Ihren Dependency Track-Tenant. Sie würden es mit etwas wie extract-sbom.sh alpine:latest 29cd2fb7-db8c-4513-8c6c-ffb4443be67f ausführen. Die Projekt-UUID von Dependency Track, die Sie verwenden möchten, finden Sie in der Objektidentifikation der Projektinformationen.

Natürlich sollten Sie das Skript ändern und Ihre <IhrePräfixDomäne> und <IhrApiKey> in den Zeilen 9 und 10 durch die Werte ersetzen, die Sie nach Bestellung Ihres SaaS-Abonnements erhalten haben.

#!/bin/bash

if [ "$#" -ne 2 ]; then
  echo "$0 <dockerImage> <depTrackProjectUuid>"
  exit -1
fi

# HIER ERSETZEN-------------------------
companyPrefix=<IhrePräfixDomäne>
apiKey=<IhrApiKey>
# ENDE ERSETZEN--------------------------

SCRIPT_PATH=$(dirname -- "$(readlink -f "${BASH_SOURCE}")")
project="$2"
sbom="$(uuidgen).sbom"

echo -n "Extrahiere SBOM..." 
 && $SCRIPT_PATH/syft.sh scan "registry:$1" -o cyclonedx-json > $sbom 
 && echo -ne " erledigt\nSende SBOM..." 
 && curl -X POST -H "X-API-Key: $apiKey" 
         -H 'Content-Type: multipart/form-data; boundary=__X_BOM__' 
         -F "bom=@$sbom" 
         -F "project=$project" 
         "https://$companyPrefix.deptrack.yoursky.blue/api/v1/bom" 
 && echo -e " gesendet\n\nAufräumen..." 
 && rm $sbom

Das obige Skript verwendet nicht mehr den Befehl docker scout sbom, da dieser SBOMs im CycloneDX-Format nicht mehr unterstützt. Stattdessen verwendet es unser Skript syft.sh.

CI/CD plugins

In Ihrer CI/CD können Sie den Übertragungsteil des obenstehenden Skripts problemlos wiederverwenden. Die SBOM-Übertragung kann noch einfacher erfolgen, indem Sie eines der folgenden Open-Source-Plugins verwenden:

Zusätzlich können die folgenden Plugins für andere Automatisierungsszenarien nützlich sein, beispielsweise zur Umsetzung von Richtlinien basierend auf Software-Schwachstellenanalysen:

  • dtapac überprüft Dependency-Track-Ergebnisse und Richtlinienverletzungen über Richtlinien als Code
  • DTrackAuditor kann den CI-Build aufgrund von Schweregraden von Software-Schwachstellen oder Richtlinienverletzungen abbrechen

Weitere mögliche Szenarien

Mit dem oben gezeigten Docker-SBOM-Beispiel haben wir erst an der Oberfläche gekratzt, es gibt viele Automatisierungsszenarien möglich. Es kann Ihnen als Vorlage dienen, um loszulegen. Mit einigen Anpassungen können Sie das SBOM aus anderen Quellen generieren, wie in dem Cheat Sheet beschrieben.

Andere Übertragungsoptionen sind möglich, bitte werfen Sie einen Blick in unsere API-Dokumentation.

Wir helfen Ihnen gerne bei allen Fragen zur SBOM-Übertragung.
Lassen Sie uns wissen, wie wir Ihnen helfen können!

Kontaktieren Sie uns