
CLI zum Erzeugen, Analysieren, Zusammenführen, Abgleichen, Validieren, Signieren und Konvertieren von CycloneDX-SBOMs in den Formaten JSON, XML, Protobuf, CSV und SPDX.
______ __ ____ _ __ ________ ____
/ ____/_ _______/ /___ ____ ___ / __ \ |/ / / ____/ / / _/
/ / / / / / ___/ / __ \/ __ \/ _ \/ / / / / / / / / / /
/ /___/ /_/ / /__/ / /_/ / / / / __/ /_/ / | / /___/ /____/ /
\____/\__, /\___/_/\____/_/ /_/\___/_____/_/|_| \____/_____/___/
/____/
Usage:
cyclonedx [command] [options]
Options:
--version Show version information
-?, -h, --help Show help and usage information
Commands:
add Add information to a BOM (currently supports files)
analyze Analyze a BOM file
convert Convert between different BOM formats
diff <from-file> <to-file> Generate a BOM diff
keygen Generates an RSA public/private key pair for BOM signing
merge Merge two or more BOMs
sign Sign a BOM or file
validate Validate a BOM
verify Verify signatures in a BOM
Das CycloneDX-CLI-Tool unterstützt derzeit Analyse, Modifikation, Vergleich, Zusammenführung, Formatkonvertierung, Signierung und Verifizierung von BOMs.
Die Konvertierung wird zwischen CycloneDX XML, JSON, Protobuf, CSV und SPDX JSON v2.3 unterstützt.
Binärdateien können von der Releases-Seite heruntergeladen werden.
Hinweis: Das CycloneDX-CLI-Tool ist für Automatisierungsanwendungsfälle konzipiert. Alle Befehle mit der Option --input-file unterstützen auch die Eingabe über stdin. Ebenso unterstützen alle Befehle mit der Option --output-file die Ausgabe über stdout. Allerdings müssen Sie die Eingabe-/Ausgabeformate angeben.
Zum Beispiel:
cat bom.json | cyclonedx-cli convert --input-format json --output-format xml > bom.xml
files
Add files to a BOM
Usage:
cyclonedx add files [options]
Options:
--input-file <input-file> Input BOM filename.
--no-input Use this option to indicate that there is no input BOM.
--output-file <output-file> Output BOM filename, will write to stdout if no value provided.
--input-format <autodetect|json|protobuf|xml> Specify input file format.
--output-format <autodetect|json|protobuf|xml> Specify output file format.
--base-path <base-path> Base path for directory to process (defaults to current working directory if omitted).
--include <include> Apache Ant style path and file patterns to specify what to include (defaults to all files, separate patterns with a space).
--exclude <exclude> Apache Ant style path and file patterns to specify what to exclude (defaults to none, separate patterns with a space).
Erzeugen einer Quellcode-BOM unter Ausschluss des Git-Repository-Verzeichnisses:
cyclonedx-cli add files --no-input --output-format json --exclude /.git/**
Hinzufügen von Build-Ausgabedateien aus dem Verzeichnis bin zu einer vorhandenen BOM:
cyclonedx-cli add files --input-file bom.json --output-format json --base-path bin
analyze
Analyze a BOM file
Usage:
cyclonedx analyze [options]
Options:
--input-file <input-file> Input BOM filename, will read from stdin if no value provided.
--input-format <autodetect|json|protobuf|xml> Specify input file format.
--output-format <json|text> Specify output format (defaults to text).
--multiple-component-versions Report components that have multiple versions in use.
Bericht über Komponenten, die mehrfach mit unterschiedlichen Versionen enthalten sind:
cyclonedx-cli analyze --input-file sbom.xml --multiple-component-versions
convert
Convert between different BOM formats
Usage:
cyclonedx convert [options]
Options:
--input-file <input-file> Input BOM filename, will read from stdin if no value provided.
--output-file <output-file> Output BOM filename, will write to stdout if no value provided.
--input-format <autodetect|csv|json|protobuf|spdxjson|xml> Specify input file format.
--output-format <autodetect|csv|json|protobuf|spdxjson|xml> Specify output file format.
--output-version <v1_0|v1_1|v1_2|v1_3|v1_4|v1_5|v1_6|v1_7> Specify output BOM specification version. (ignored for CSV and SPDX formats)
Konvertieren vom XML- ins JSON-Format:
cyclonedx-cli convert --input-file sbom.xml --output-file sbom.json
Konvertieren vom XML- ins JSON-Format und Weiterleiten der Ausgabe an weitere Tools:
cyclonedx-cli convert --input-file sbom.xml --output-format json | grep "somthing"
Das CSV-Format ist eine eingeschränkte Darstellung der Komponentenliste einer BOM.
Die Absicht besteht darin, Benutzern eine einfache Möglichkeit zu bieten, BOMs für einfache Anwendungsfälle zu erstellen und zu verarbeiten. Einschließlich einfacher Datenmigrations-Anwendungsfälle.
Die einzigen Pflichtfelder sind die Komponentenfelder name und version. Andere können leer gelassen oder die Spalten weggelassen werden.
Die Konvertierung zwischen SPDX- und CycloneDX-Formaten kann zum Verlust einiger Informationen führen. Die Konvertierungsfunktionalität wird von der Bibliothek CycloneDX.Spdx.Interop bereitgestellt, die Teil des CycloneDX-.NET-Bibliotheksprojekts ist.
Weitere Einzelheiten darüber, welche Informationen verloren gehen, finden Sie auf der Projektseite der CycloneDX-.NET-Bibliothek.
diff
Generate a BOM diff
Usage:
cyclonedx diff <from-file> <to-file> [options]
Arguments:
<from-file> From BOM filename.
<to-file> To BOM filename.
Options:
--from-format <autodetect|json|protobuf|xml> Specify from file format.
--to-format <autodetect|json|protobuf|xml> Specify to file format.
--output-format <json|text> Specify output format (defaults to text).
--component-versions Report component versions that have been added, removed or modified.
Bericht über Komponenten mit Versionsänderungen:
cyclonedx-cli diff sbom-from.xml sbom-to.xml --component-versions
keygen
Generates an RSA public/private key pair for BOM signing
Usage:
cyclonedx keygen [options]
Options:
--private-key-file <private-key-file> Filename for generated private key file (defaults to "private.key")
--public-key-file <public-key-file> Filename for generated public key file (defaults to "public.key")
merge
Merge two or more BOMs
Usage:
cyclonedx merge [options]
Options:
--input-files <input-files> Input BOM filenames (separate filenames with a space).
--output-file <output-file> Output BOM filename, will write to stdout if no value provided.
--input-format <autodetect|json|protobuf|xml> Specify input file format.
--output-format <autodetect|json|protobuf|xml> Specify output file format.
--output-version <v1_0|v1_1|v1_2|v1_3|v1_4|v1_5|v1_6|v1_7> Specify output BOM specification version.
--hierarchical Perform a hierarchical merge.
--group <group> Provide the group of software the merged BOM describes.
--name <name> Provide the name of software the merged BOM describes (required for hierarchical merging).
--version <version> Provide the version of software the merged BOM describes (required for hierarchical merging).
Hinweis: Für eine hierarchische Zusammenführung muss der Gegenstand der BOM in allen BOMs im Metadata-Komponentenelement beschrieben sein.
Zwei BOMs im XML-Format zusammenführen:
cyclonedx-cli merge --input-files sbom1.xml sbom2.xml --output-file sbom_all.xml
Zwei BOMs zusammenführen und die Ausgabe an weitere Tools weiterleiten:
cyclonedx-cli merge --input-files sbom1.xml sbom2.xml --output-format json | grep "something"
Eine BOM oder Datei signieren
bom
Sign the entire BOM document
Usage:
cyclonedx sign bom <bom-file> [options]
Arguments:
<bom-file> BOM filename
Options:
--key-file <key-file> Signing key filename (RSA private key in PEM format, defaults to "private.key")
file
Sign arbitrary files and generate a PKCS1 RSA SHA256 signature file
Usage:
cyclonedx sign file <file> [options]
Arguments:
<file> Filename of the file the signature will be created for
Options:
--key-file <key-file> Signing key filename (RSA private key in PEM format, defaults to "private.key")
--signature-file <signature-file> Filename of the generated signature file (defaults to the filename with ".sig" appended)
validate
Validate a BOM
Usage:
cyclonedx validate [options]
Options:
--input-file <input-file> Input BOM filename, will read from stdin if no value provided.
--input-format <autodetect|json|xml> Specify input file format.
--input-version <v1_0|v1_1|v1_2|v1_3|v1_4|v1_5|v1_6|v1_7> Specify input file specification version (defaults to v1.7)
--fail-on-errors Fail on validation errors (return a non-zero exit code)
BOM validieren und einen Exit-Code ungleich null zurückgeben (praktisch, um einen Build automatisch „abzubrechen“ usw.)
cyclonedx-cli validate --input-file sbom.xml --fail-on-errors
Signaturen für BOMs und Dateien verifizieren
all
Verify all signatures in a BOM
Usage:
cyclonedx verify all <bom-file> [options]
Arguments:
<bom-file> BOM filename
Options:
--key-file <key-file> Public key filename (RSA public key in PEM format, defaults to "public.key")
file
Verifies a PKCS1 RSA SHA256 signature file for an arbitrary file
Usage:
cyclonedx verify file <file> [options]
Arguments:
<file> File the signature file is for
Options:
--key-file <key-file> Public key filename (RSA public key in PEM format, defaults to "public.key")
--signature-file <signature-file> Signature file to be verified (defaults to the filename with ".sig" appended)
Das CycloneDX-CLI-Tool kann auch mit Docker ausgeführt werden: docker run cyclonedx/cyclonedx-cli.
Für Linux und MacOS kann die CLI über das CycloneDX-Homebrew-Tap installiert werden:
brew install cyclonedx/cyclonedx/cyclonedx-cli
Offiziell unterstützte Builds sind für diese Plattformen verfügbar:
Von der Community unterstützte Builds sind für diese Plattformen verfügbar:
.NET-Core-Runtime-Abhängigkeiten sind erforderlich.
Für Windows sollten diese vorinstalliert sein.
Für Ubuntu sind dies libc6 libgcc1 libgssapi-krb5-2 libicu66 libssl1.1 libstdc++6 zlib1g.
gron transformiert JSON in einzelne Zuweisungen, um das Durchsuchen mit grep nach dem Gewünschten zu erleichtern und den absoluten ‚Pfad‘ dorthin zu sehen.
Der Einfachheit halber ist gron im CycloneDX-CLI-Docker-Image enthalten.
Beispielverwendung, die alle Komponentennamen und -versionen auflistet
$ gron bom-1.2.json | grep -E "(components\[[[:digit:]]*\].name)|(components\[[[:digit:]]*\].version)"
json.components[0].name = "tomcat-catalina";
json.components[0].version = "9.0.14";
json.components[1].name = "mylibrary";
json.components[1].version = "1.0.0";
Oder dasselbe mit einer BOM im XML-Format
$ cyclonedx convert --input-file bom.xml --output-format json | gron | grep -E "(components\[[[:digit:]]*\].name)|(components\[[[:digit:]]*\].version)"
json.components[0].name = "tomcat-catalina";
json.components[0].version = "9.0.14";
json.components[1].name = "mylibrary";
json.components[1].version = "1.0.0";
Weitere Einzelheiten zur Verwendung von gron finden Sie auf der gron-Projektseite.
Weitere Einzelheiten zur Verwendung von grep finden Sie auf der grep-Manpage.
Die Erlaubnis zur Änderung und Weiterverbreitung wird unter den Bedingungen der Apache-2.0-Lizenz gewährt. Die vollständige Lizenz finden Sie in der Datei LICENSE.
Pull-Requests sind willkommen. Bitte lesen Sie jedoch zuerst die Beitragsrichtlinien von CycloneDX.
Um die Lösung lokal zu erstellen und zu testen, sollten Sie .NET 8 installiert haben. Standardbefehle wie dotnet build und dotnet test funktionieren.
Es wird allgemein erwartet, dass Pull-Requests relevante Tests enthalten. Für jeden Pull-Request werden die Tests automatisch unter Windows, MacOS und Linux ausgeführt. Build-Warnungen führen dazu, dass der Build fehlschlägt.
Bitte teilen Sie uns mit, wenn Sie Probleme beim Debuggen eines Tests haben, der auf einer Plattform fehlschlägt, auf die Sie keinen Zugriff haben.