Ein CLI-Tool und eine Go-Bibliothek zum Generieren einer Software-Stückliste (SBOM) aus Container-Images und Dateisystemen. Hervorragend geeignet für die Schwachstellenerkennung bei Verwendung mit einem Scanner wie Grype.
Syft ist ein leistungsstarkes und benutzerfreundliches Open-Source-Tool zum Generieren von Software Bill of Materials (SBOMs) für Container-Images und Dateisysteme. Es bietet detaillierte Einblicke in die Pakete und Abhängigkeiten in Ihrer Software und hilft Ihnen bei der Verwaltung von Schwachstellen, der Einhaltung von Lizenzen und der Sicherheit der Software-Lieferkette.
Die Syft-Entwicklung wird von Anchore gesponsert und unter der Apache-2.0-Lizenz veröffentlicht. Für kommerzielle Supportoptionen mit Syft oder Grype wenden Sie sich bitte an Anchore.
Erstellt SBOMs für Container-Images, Dateisysteme, Archive und mehr, um Pakete und Bibliotheken zu erkennen
Unterstützt die Bildformate OCI, Docker und Singularity
Identifizierung der Linux-Distribution
Funktioniert nahtlos mit Grype (einem schnellen, modernen Schwachstellenscanner)
Kann signierte SBOM-Bescheinigungen mithilfe der In-toto-Spezifikation erstellen
Konvertieren Sie zwischen SBOM-Formaten wie CycloneDX, SPDX und Syfts eigenem Format.
Syft-Binärdateien werden für Linux, macOS und Windows bereitgestellt.
curl -sSfL https://raw.githubusercontent.com/anchore/syft/main/install.sh | sh -s -- -b /usr/local/bin
Skriptoptionen installieren:
-b
: Geben Sie ein benutzerdefiniertes Installationsverzeichnis an (standardmäßig ./bin
).
-d
: Ausführlichere Protokollierungsebenen ( -d
für Debug, -dd
für Trace)
-v
: Überprüfen Sie die Signatur des heruntergeladenen Artefakts vor der Installation (erfordert die Installation von cosign
).
brew install syft
scoop install syft
Die schokoladige Distribution von Syft wird von der Community gepflegt und nicht vom Anchore-Team vertrieben
choco install syft -y
Hinweis : Die Nix-Paketierung von Syft wird von der Community gepflegt. Syft ist seit NixOS 22.05
im Stable-Kanal verfügbar.
nix-env -i syft
... oder probieren Sie es einfach in einer kurzlebigen Nix-Shell aus:
nix-shell -p syft
So generieren Sie eine SBOM für ein Container-Image:
syft
Die obige Ausgabe enthält nur Software, die im Container sichtbar ist (dh die gestauchte Darstellung des Bildes). Um Software aus allen Bildebenen in die SBOM aufzunehmen, unabhängig von ihrer Präsenz im endgültigen Bild, stellen Sie --scope all-layers
bereit:
syft--scope alle Ebenen
Das Ausgabeformat für Syft kann ebenfalls mit der Option -o
(oder --output
) konfiguriert werden:
syft-o
Folgende formats
sind verfügbar:
syft-json
: Verwenden Sie dies, um so viele Informationen wie möglich aus Syft herauszuholen!
syft-text
: Eine zeilenorientierte, menschlich- und maschinenfreundliche Ausgabe.
cyclonedx-xml
: Ein XML-Bericht, der der CycloneDX 1.6-Spezifikation entspricht.
[email protected]
: Ein XML-Bericht, der der CycloneDX 1.5-Spezifikation entspricht.
cyclonedx-json
: Ein JSON-Bericht, der der CycloneDX 1.6-Spezifikation entspricht.
[email protected]
: Ein JSON-Bericht, der der CycloneDX 1.5-Spezifikation entspricht.
spdx-tag-value
: Ein Tag-Wert-formatierter Bericht, der der SPDX 2.3-Spezifikation entspricht.
[email protected]
: Ein Tag-Wert-formatierter Bericht, der der SPDX 2.2-Spezifikation entspricht.
spdx-json
: Ein JSON-Bericht, der dem SPDX 2.3 JSON-Schema entspricht.
[email protected]
: Ein JSON-Bericht, der dem SPDX 2.2 JSON-Schema entspricht.
github-json
: Ein JSON-Bericht, der dem Abhängigkeits-Snapshot-Format von GitHub entspricht.
syft-table
: Eine spaltenförmige Zusammenfassung (Standard).
template
: Ermöglicht dem Benutzer die Angabe des Ausgabeformats. Siehe „Vorlagen verwenden“ weiter unten.
Beachten Sie, dass Flags, die das @ verwenden, auch für frühere Versionen jeder Spezifikation verwendet werden können.
Alpine (apk)
C (Conan)
C++ (Conan)
Dart (Kneipen)
Debian (dpkg)
Dotnet (deps.json)
Objective-C (Kakaopoden)
Elixier (Mischung)
Erlang (rebar3)
Go (go.mod, Go-Binärdateien)
Haskell (Kabale, Stapel)
Java (jar, ear, war, par, sar, nar, native-image)
JavaScript (npm, Garn)
Jenkins-Plugins (jpi, hpi)
Linux-Kernel-Archive (vmlinz)
Linux-Kernel-Module (ko)
Nix (Ausgaben in /nix/store)
PHP (Komponist)
Python (Rad, Ei, Poesie, Anforderungen.txt)
Red Hat (U/min)
Rubin (Edelstein)
Rost (cargo.lock)
Swift (Cocoapods, Swift-Paketmanager)
Wordpress-Plugins
In unserem Wiki finden Sie weitere Details zu folgenden Themen:
Unterstützte Quellen
Dateiauswahl
Ausgenommen Dateipfade
Ausgabeformate
Auswahl des Paketkatalogisierers
Konzepte
Beispiele
Verwendung von Vorlagen
Mehrere Ausgänge
Private Registrierungsauthentifizierung
Lokale Docker-Anmeldeinformationen
Docker-Anmeldeinformationen in Kubernetes
Bescheinigung (experimentell)
Schlüssellose Unterstützung
Unterstützung lokaler privater Schlüssel
Hinzufügen einer SBOM zu einem Bild als Attestierung mit Syft
Konfiguration
Schauen Sie sich unseren Beitragsleitfaden und die Entwicklerdokumente an.
Das Syft-Team hält regelmäßig Online-Community-Meetings ab. Alle sind herzlich eingeladen, mitzumachen und Diskussionsthemen einzubringen.
Überprüfen Sie den Kalender auf den nächsten Besprechungstermin.
Elemente zur Tagesordnung hinzufügen (Treten Sie dieser Gruppe bei, um Schreibzugriff auf die Tagesordnung zu erhalten)
Wir sehen uns dort!