NIXパッケージ用のCyclonedxソフトウェア材料請求書(SBOM)を自動的に構築します!
ボンボンは、cyclonedx v1.5 sbomsを生成します。
それらがいかなる方法でも準拠していないことがわかった場合は、問題を開いてください!
nix flake init -t github:nikstur/bombonまたは、これを手動でflake.nixにコピーします。
# file: flake.nix
{
inputs = {
nixpkgs . url = "github:NixOS/nixpkgs/nixpkgs-unstable" ;
bombon . url = "github:nikstur/bombon" ;
bombon . inputs . nixpkgs . follows = "nixpkgs" ;
} ;
outputs = { self , nixpkgs , bombon } :
let
system = "x86_64-linux" ;
pkgs = import nixpkgs { inherit system ; } ;
in
{
packages . ${ system } . default = bombon . lib . ${ system } . buildBom pkgs . hello { } ;
} ;
}niv init
niv add nikstur/bombon # file: default.nix
let
sources = import ./nix/sources.nix { } ;
pkgs = import sources . nixpkgs { } ;
bombon = import sources . bombon { inherit pkgs ; } ;
in
bombon . buildBom pkgs . hello { } NIXPKGSの一部の言語生態系(最も顕著な錆びとGO)ベンダーの依存関係。これは、すべての依存関係が独自の導出であるわけではないため、ボンボンは「通常の」nix依存関係のように情報を記録できないことを意味します。ただし、ボンボンは、 bombonVendoredSbomと呼ばれるパススルー派生からのベンダー依存関係について、他のツール( cargo-cyclonedxなど)によって生成されたSBOMを自動的に読み取ることができます。
passthruVendoredSbom.rust関数を使用して、rustパッケージにbombonVendoredSbom passthru派生を追加できます。
myPackageWithSbom = bombon . passthruVendoredSbom . rust myPackage { inherit pkgs ; } ;またはフレークの使用:
myPackageWithSbom = bombon . lib . ${ system } . passthruVendoredSbom . rust myPackage { inherit pkgs ; } ;この新しい派生から構築されたSBOMには、ベンダー依存関係が含まれるようになりました。
buildBom 、属性セットとしてオプションを受け入れます。すべての属性はオプションです:
extraPaths :SBOMについても考慮するストアパスのリスト。これは、参照を破棄する画像を作成するときに役立ちます(例: unsafeDiscardReferencesを使用しても、SBOMにextraPathsを表示したいのです。includeBuildtimeDependencies :buleanフラグは、出力にビルドタイム依存関係を含めます。excludes :最終的なSBOMから除外するストアパスの正規表現パターンのリスト。例:
bombon . lib . ${ system } . buildBom pkgs . hello {
extraPaths = [ pkgs . git ] ;
includeBuildtimeDependencies = true ;
excludes = [ "service" ] ;
} passthruVendoredSbom.rust 、オプションの属性としてincludeBuildtimeDependenciesも受け入れます。
例:
myPackageWithSbom = bombon . passthruVendoredSbom . rust myPackage { inherit pkgs ; includeBuildtimeDependencies = true ; } ; 開発中、NIX REPLは変更をテストする便利で迅速な方法です。 REPLを起動して、NIXPKGSのローカルバージョンをロードします。
nix repl < nixpkgs >REPLの内部では、ボンボンフレークをロードし、興味のあるパッケージのBOMを構築します。
:l .
:b lib.x86_64-linux.buildBom python3 { }
ソースコードのいずれかに変更を加えるたびに、ボンボンフレークを再ロードすることを忘れないでください。
NIXを使用して依存関係を取得する方法は、Nicolas Mattiaのこのブログ記事の影響を強く受けています。