コンテナイメージとファイルシステムからソフトウェア部品表 (SBOM) を生成するための CLI ツールと Go ライブラリ。 Grype などのスキャナーと併用すると、脆弱性の検出に優れています。
Syft は、コンテナ イメージとファイル システムのソフトウェア部品表 (SBOM) を生成するための強力で使いやすいオープンソース ツールです。ソフトウェア内のパッケージと依存関係を詳細に可視化し、脆弱性、ライセンス準拠、ソフトウェア サプライ チェーンのセキュリティの管理に役立ちます。
Syft の開発は Anchore によって後援されており、Apache-2.0 ライセンスに基づいてリリースされています。 Syft または Grype の商用サポート オプションについては、Anchore にお問い合わせください。
コンテナイメージ、ファイルシステム、アーカイブなどの SBOM を生成して、パッケージやライブラリを検出します
OCI、Docker、Singularity イメージ形式をサポート
Linux ディストリビューションの識別
Grype (高速で最新の脆弱性スキャナー) とシームレスに連携します。
in-toto仕様を使用して署名付きSBOM証明書を作成可能
CycloneDX、SPDX、Syft 独自の形式などの SBOM 形式の間で変換します。
Syft バイナリは、Linux、macOS、および Windows 用に提供されています。
カール -sSfL https://raw.githubusercontent.com/anchore/syft/main/install.sh | sh -s -- -b /usr/local/bin
インストール スクリプト オプション:
-b
: カスタム インストール ディレクトリを指定します (デフォルトは./bin
)。
-d
: より詳細なログ レベル (デバッグの場合は-d
、トレースの場合は-dd
)
-v
: インストール前にダウンロードしたアーティファクトの署名を検証します ( cosign
インストールする必要があります)
ブリューインストールsyft
スクープインストールsyft
Syft のチョコレートのようなディストリビューションはコミュニティによって管理されており、Anchore チームによって配布されているわけではありません。
チョコインストール syft -y
注: Syft の Nix パッケージ化はコミュニティで保守されています。 Syft は、NixOS 22.05
以降の安定したチャネルで利用できます。
nix-env -i syft
... または、一時的な nix シェルで試してみてください。
nix-shell -p syft
コンテナー イメージの SBOM を生成するには、次の手順を実行します。
syft <画像>
上記の出力には、コンテナ内で表示されるソフトウェア (つまり、画像の潰された表現) のみが含まれています。最終イメージにソフトウェアが存在するかどうかに関係なく、すべてのイメージ レイヤーのソフトウェアを SBOM に含めるには、 --scope all-layers
指定します。
syft--scope all-layers
Syft の出力形式は、 -o
(または--output
) オプションを使用して構成することもできます。
syft-o
利用可能なformats
次のとおりです。
syft-json
: これを使用して、Syft からできるだけ多くの情報を取得します。
syft-text
: 行指向の人間とマシンに優しい出力。
cyclonedx-xml
: CycloneDX 1.6 仕様に準拠した XML レポート。
[email protected]
: CycloneDX 1.5 仕様に準拠した XML レポート。
cyclonedx-json
: CycloneDX 1.6 仕様に準拠した JSON レポート。
[email protected]
: CycloneDX 1.5 仕様に準拠した JSON レポート。
spdx-tag-value
: SPDX 2.3 仕様に準拠したタグ値形式のレポート。
[email protected]
: SPDX 2.2 仕様に準拠したタグ値形式のレポート。
spdx-json
: SPDX 2.3 JSON スキーマに準拠した JSON レポート。
[email protected]
: SPDX 2.2 JSON スキーマに準拠した JSON レポート。
github-json
: GitHub の依存関係スナップショット形式に準拠した JSON レポート。
syft-table
: 列形式のサマリー (デフォルト)。
template
: ユーザーが出力形式を指定できるようにします。以下の「テンプレートの使用」を参照してください。
@ を使用したフラグは、各仕様の以前のバージョンでも使用できることに注意してください。
アルパイン (APK)
C(コナン)
C++ (コナン)
ダーツ(パブ)
Debian (dpkg)
ドットネット (deps.json)
Objective-C (カカオポッド)
エリクサー(ミックス)
Erlang (rebar3)
Go (go.mod、Go バイナリ)
Haskell (陰謀団、スタック)
Java (jar、ear、war、par、sar、nar、ネイティブ イメージ)
JavaScript (npm、糸)
Jenkins プラグイン (jpi、hpi)
Linux カーネル アーカイブ (vmlinz)
Linux カーネル モジュール (ko)
Nix (/nix/store に出力)
PHP(コンポーザー)
Python (ホイール、卵、詩、requirements.txt)
レッドハット (rpm)
ルビー(宝石)
Rust (cargo.lock)
Swift (cocoapod、swift-package-manager)
Wordpress プラグイン
私たちの Wiki には、次のトピックに関する詳細が含まれています。
サポートされているソース
ファイルの選択
ファイルパスを除外する
出力フォーマット
パッケージカタログの選択
コンセプト
例
テンプレートの使用
複数の出力
プライベートレジストリ認証
ローカル Docker 認証情報
Kubernetes の Docker 認証情報
認証 (実験的)
キーレスサポート
ローカル秘密キーのサポート
Syft を使用して SBOM を証明書としてイメージに追加する
構成
私たちの貢献ガイドと開発者ドキュメントをチェックしてください。
Syft チームはオンラインで定期的なコミュニティ ミーティングを開催しています。ディスカッションの議題を持ち込むために、どなたでもご参加いただけます。
次回の会議日についてはカレンダーを確認してください。
アジェンダに項目を追加します (アジェンダへの書き込みアクセス権を得るには、このグループに参加してください)
それではまた会いましょう!