Repositori ini adalah rumah bagi berbagai alat baris perintah dan perpustakaan Python yang bertujuan untuk membantu dengan tantangan rantai pasokan perangkat lunak:
sbomnix adalah utilitas yang menghasilkan SBOM yang diberikan derivasi atau jalur keluar.nixgraph membantu meminta dan memvisualisasikan grafik ketergantungan untuk derivasi atau jalur keluar.nixmeta merangkum meta-attribut NixpKGS dari versi NixPKGS yang diberikan.vulnxscan adalah pemindai kerentanan yang menunjukkan penggunaan SBOM dalam menjalankan pemindaian kerentanan.repology_cli dan repology_cve adalah klien baris perintah ke repology.org.nix_outdated adalah utilitas yang menemukan dependensi NIX yang sudah ketinggalan zaman untuk diberikan jalur, mendaftarkan paket yang sudah ketinggalan zaman dalam urutan prioritas berdasarkan berapa banyak paket lain yang bergantung pada paket yang sudah ketinggalan zaman.provenance adalah alat baris perintah untuk menghasilkan file pengesahan sumber SLSA V1.0 yang sesuai dalam format JSON untuk setiap serpihan atau derivasi.Untuk contoh cara menggunakan alat yang disediakan dalam repositori ini untuk mengotomatisasi pemindaian kerentanan harian untuk proyek Nix Flake, lihat: Ghafscan.
SBOM Cyclonedx dan SPDX untuk setiap rilis Tooling SBOMNIX tersedia dalam aset rilis.
Semua alat dalam repositori ini berasal dari kerangka kerja GHAF.
sbomnix membutuhkan alat NIX umum seperti nix dan nix-store . Alat -alat ini diharapkan berada di $PATH .
sbomnix dapat dijalankan sebagai serpihan nix dari repositori tiiuae/sbomnix :
# '--' signifies the end of argument list for `nix`.
# '--help' is the first argument to `sbomnix`
$ nix run github:tiiuae/sbomnix#sbomnix -- --helpatau dari repositori lokal:
$ git clone https://github.com/tiiuae/sbomnix
$ cd sbomnix
$ nix run . # sbomnix -- --help Lihat daftar lengkap target serpihan yang didukung dengan menjalankan nix flake show .
Jika Anda memiliki Nix Flakes diaktifkan, mulailah shell pengembangan:
$ git clone https://github.com/tiiuae/sbomnix
$ cd sbomnix
$ nix develop Anda juga dapat menggunakan nix-shell untuk memasuki shell pengembangan:
$ git clone https://github.com/tiiuae/sbomnix
$ cd sbomnix
$ nix-shell Perlu diingat ini tidak menambahkan berbagai binari titik masuk ke PATH Anda secara langsung. Mereka diproduksi selama pembuatan setuptools.
Saat Anda berada di Devshell, Anda dapat menjalankan berbagai alat baris perintah melalui file EntryPoint secara langsung:
# sbomnix:
$ src/sbomnix/main.py --help
# nixgraph:
$ src/nixgraph/main.py --help
# nixmeta:
$ src/nixmeta/main.py --help
# vulnxscan:
$ src/vulnxscan/vulnxscan_cli.py --help
# repology_cli:
$ src/repology/repology_cli.py --help
# repology_cve:
$ src/repology/repology_cve.py --help
# nix_outdated:
$ src/nixupdate/nix_outdated.py --help
# provenance:
$ src/provenance/main.py --helpPenutupan jalur toko Nix adalah daftar semua jalur toko dependen, secara rekursif, dirujuk oleh jalur toko target. Untuk sebuah paket, penutupan derivasinya mencantumkan semua dependensi pembangunan. Sebagai contoh, untuk program C sederhana, dependensi buildTime mencakup paket untuk bootstrap GCC, StenV, GLIBC, Bash, dll. Pada arsitektur target. Bahkan program Hello-World C sederhana biasanya mencakup lebih dari 150 paket dalam daftar dependensi buildtime. Penting untuk dicatat bahwa menghasilkan dependensi waktu pembangunan di NIX tidak memerlukan membangun target.
Untuk referensi, berikut adalah tautan ke grafik dari contoh program Hello-World C yang mencakup dua lapisan pertama dependensi bangunan: dependensi langsung dan tingkat pertama dependensi transitif: C Hello-World Buildtime, kedalaman = 2.
Ketergantungan runtime adalah subset dari dependensi bangunan. NIX secara otomatis menentukan dependensi runtime dengan memindai jalur output yang dihasilkan (yaitu output build) untuk jalur penyimpanan dependensi waktu. Ini berarti NIX perlu membangun output target terlebih dahulu, sebelum dependensi runtime dapat ditentukan. Untuk referensi, di bawah ini adalah grafik ketergantungan runtime lengkap dari contoh program Hello-World C:
Secara default, jika berlaku, alat -alat dalam repositori ini mengasumsikan dependensi runtime. Ini berarti, misalnya, bahwa kecuali jika ditentukan sebaliknya, sbomnix akan mengeluarkan SBOM termasuk dependensi hanya runtime, grafik ketergantungan runtime output nixgraph , dan vulnxscan dan nix_outdated SCAN Runtime Dependency. Karena NIX perlu membangun output target untuk menentukan dependensi runtime, semua alat dalam repositori ini juga akan membangun (memaksa-realise) output target sebagai bagian dari doa masing-masing alat saat menentukan dependensi runtime. Semua alat yang disebutkan dalam repositori ini juga mendukung bekerja dengan dependensi bangunan alih -alih dependensi runtime dengan bantuan --buildtime baris perintah komando. Seperti disebutkan sebelumnya, menghasilkan dependensi bangunan di NIX tidak memerlukan membangun target. Demikian pula, ketika --buildtime ditentukan, alat dalam repositori ini tidak perlu membangun target yang diberikan.
Contoh penggunaan berfungsi untuk paket yang dibangun, maupun di dalam Devshell.
Perlu diingat di dalam Devshell, panggilan ke sbomnix perlu diganti dengan src/sbomnix/main.py (dan serupa untuk titik masuk lainnya).
Dalam contoh di bawah ini, kami menggunakan paket NIX wget sebagai target contoh. Untuk mencetak wget Out-Path pada sistem lokal Anda, coba:
$ nix eval -f ' <nixpkgs> ' ' wget.outPath '
" /nix/store/8nbv1drmvh588pwiwsxa47iprzlgwx6j-wget-1.21.3 " Secara default sbomnix memindai target yang diberikan dan menghasilkan SBOM termasuk dependensi runtime. PEMBERITAHUAN: Menentukan dependensi runtime target di NIX membutuhkan pembangunan target.
# Target can be specified with flakeref too, e.g.:
# sbomnix .
# sbomnix github:tiiuae/sbomnix
# sbomnix nixpkgs#wget
# Ref: https://nixos.org/manual/nix/stable/command-ref/new-cli/nix3-flake.html#flake-references
$ sbomnix /nix/store/8nbv1drmvh588pwiwsxa47iprzlgwx6j-wget-1.21.3
...
INFO Wrote: sbom.cdx.json
INFO Wrote: sbom.spdx.json
INFO Wrote: sbom.csvOutput utama adalah file SBOM JSON sbom.cdx.json dan sbom.spdx.json dalam format cyclonedx dan spdx.
Secara default sbomnix memindai target yang diberikan untuk dependensi runtime. Anda dapat memberi tahu Sbomnix untuk menentukan dependensi buildTime menggunakan argumen --buildtime . Contoh di bawah ini menghasilkan SBOM termasuk dependensi bangunan. PEMBERITAHUAN: Berbeda dengan dependensi runtime, menentukan dependensi pembangunan tidak memerlukan membangun target.
$ sbomnix /nix/store/8nbv1drmvh588pwiwsxa47iprzlgwx6j-wget-1.21.3 --buildtime sbomnix juga dapat digunakan dengan jalur output (misalnya apa pun yang menghasilkan hasil symlink):
$ sbomnix /path/to/result sbomnix juga mendukung referensi pemindaian serpihan:
$ sbomnix github:NixOS/nixpkgs ? ref=nixos-unstable#wget --buildtime sbomnix menemukan dependensi paket menggunakan nixgraph . Selain itu, nixgraph juga dapat digunakan sebagai alat yang berdiri sendiri untuk memvisualisasikan dependensi paket. Di bawah ini, kami menunjukkan contoh memvisualisasikan paket wget dependensi:
$ nixgraph /nix/store/8nbv1drmvh588pwiwsxa47iprzlgwx6j-wget-1.21.3 --depth=2Yang mengeluarkan grafik ketergantungan sebagai gambar (dengan maxdepth 2):
Untuk lebih banyak contoh tentang permintaan dan memvisualisasikan dependensi paket, lihat: Nixgraph.
Setiap permintaan tarik, pertanyaan, dan laporan kesalahan dipersilakan. Untuk memulai pengembangan, kami sarankan menggunakan Nix Flakes Development Shell:
$ git clone https://github.com/tiiuae/sbomnix
$ cd sbomnix/
# Optionally, install git hooks to check the git commit message
$ ./githooks/install-git-hooks.sh
$ nix develop Jalankan make help untuk Melihat Daftar Target Make yang Didukung. Sebelum mengirim permintaan tarik apa pun, pastikan setidaknya run make pre-push tanpa kegagalan.
Untuk menonaktifkan Nix Devshell, jalankan exit di cangkang Anda. Untuk melihat target serpihan Nix lainnya, jalankan nix flake show .
Proyek ini dilisensikan di bawah lisensi APACHE-2.0-lihat file apache-2.0.txt untuk detailnya.
sbomnix menggunakan pemindai derivasi toko Nix (nix.py dan derivation.py) yang berasal dari Vulnix.