
sbomlyze v0.3.6
Git diff for SBOMs—CycloneDX, SPDX और Syft दस्तावेज़ों की तुलना करें, छेड़छाड़ का पता लगाएँ और CI को गेट करें।
sbomlyze
आपके SBOM के लिए git diff। दो सॉफ़्टवेयर सामग्री बिलों (SBOM) की तुलना करें और देखें कि बिल्ड, संस्करणों और रिलीज़ों के बीच क्या बदला।
sbomlyze घटक हैश की तुलना करता है, केवल संस्करण स्ट्रिंग्स की नहीं। जब कोई हमलावर बिना संस्करण बढ़ाए किसी पैकेज को बदल देता है, तो sbomlyze इसे चिह्नित करता है। जनरेटर और भेद्यता स्कैनर इसे नज़रअंदाज़ कर देते हैं।
[![CI][ci-img]][ci] [![GitHub Marketplace][marketplace-img]][marketplace] [![GitHub Release][release-img]][release] [![Go Report Card][go-report-img]][go-report] [![OpenSSF Scorecard][scorecard-img]][scorecard] [![License: Apache-2.0][license-img]][license] [![Downloads][download-img]][download]
यह संकेत मेनिफेस्ट या सामान्य घटक डिफ़ से क्यों अलग है, यह देखें: मेनिफेस्ट डिफ़ बनाम SBOM डिफ़ बनाम इंटीग्रिटी ड्रिफ्ट।
जनरेटर SBOM बनाते हैं और स्कैनर CVE खोजते हैं। sbomlyze आपको बताता है कि दो SBOM के बीच क्या बदला और क्या आपको उस पर भरोसा करना चाहिए। इसे अपने जनरेटर के बाद चलाएँ:
syft image:tag -o cyclonedx-json | sbomlyze - --complianceबिना किसी अस्थायी फ़ाइल के उत्पन्न SBOM का विश्लेषण और मूल्यांकन करता है। ड्रिफ्ट को वर्गीकृत करने और अपनी पाइपलाइन को गेट करने के लिए इसकी तुलना बेसलाइन से करें।
GitHub Action त्वरित आरंभ
चेक-इन किए गए या अलग से जनरेट किए गए SBOM की उसकी git बेसलाइन से तुलना करने के लिए [GitHub Marketplace से SBOMlyze Diff][marketplace] जोड़ें। नीचे दिया गया अपरिवर्तनीय SHA प्रकाशित v0.5.1 Action है:```yaml
steps:
-
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: fetch-depth: 0
-
uses: rezmoss/sbomlyze@31503690611fda8ebba4ed2bd186eda000442594 # v0.5.1 with: sbom-path: build/sbom.cdx.json
यह Action डिफ़ॉल्ट रूप से एक Job Summary लिखता है और नीति लागू कर सकता है, integrity drift की रिपोर्ट कर सकता है, SARIF अपलोड कर सकता है, या एक एकल pull-request टिप्पणी बनाए रख सकता है। inputs, outputs, permissions और security guidance के लिए [संपूर्ण Action संदर्भ](https://github.com/rezmoss/sbomlyze/blob/main/ACTION.md) देखें। एक सफल निर्भरता अद्यतन और एक अवरुद्ध same-version हैश परिवर्तन के लिए [लाइव प्रदर्शन रिपॉजिटरी](https://github.com/rezmoss/sbomlyze-action-demo) देखें, जिसमें सार्वजनिक workflow runs और SARIF साक्ष्य शामिल हैं।
फ़ॉर्मैट-विशिष्ट dogfood के लिए, सार्वजनिक [Go + SPDX](https://github.com/rezmoss/sbomlyze-go-spdx-demo), [Node + CycloneDX](https://github.com/rezmoss/sbomlyze-node-cyclonedx-demo), या [कंटेनर](https://github.com/rezmoss/sbomlyze-container-demo) उदाहरण का उपयोग करें। प्रत्येक में पाँच reproducible समीक्षा परिदृश्य हैं। [10-मिनट बीटा गाइड](https://github.com/rezmoss/sbomlyze/blob/main/BETA.md) चार केंद्रित सक्रियण और सिग्नल गुणवत्ता प्रश्न एकत्र करता है।
जनरेट किए गए SBOM को commit करने की आवश्यकता नहीं है: `baseline: workflow-artifact` एक सफल default-branch run से सबसे हालिया मेल खाता artifact प्राप्त करता है। एक [पिन किया गया Syft सहयोगी workflow](https://github.com/rezmoss/sbomlyze/blob/main/examples/workflows/syft-companion.yml) जनरेशन और baseline प्रकाशन दिखाता है जबकि SBOMlyze समीक्षा और नीति के लिए ज़िम्मेदार रहता है।
## sbomlyze क्यों?
कई उपकरण SBOM जनरेट करते हैं। कुछ उनकी तुलना करते हैं, और और भी कम आपको बताते हैं कि कोई परिवर्तन नियमित है या supply-chain का red flag। sbomlyze इस अंतर को भरता है।
| क्षमता | **sbomlyze** | cyclonedx-cli | sbomqs | syft / trivy |
|---|:---:|:---:|:---:|:---:|
| SBOM-से-SBOM **diff** | ✅ | बुनियादी | ❌ | ❌ |
| **Integrity / tamper** drift (बिना संस्करण बदले हैश बदला) | ✅ | ❌ | ❌ | ❌ |
| Dependency-graph diff + transitive गहराई जोखिम | ✅ | ❌ | ❌ | ❌ |
| **NTIA / CISA / BSI** compliance स्कोरिंग | ✅ | ❌ | ✅ | ❌ |
| प्रारूप रूपांतरण (Syft / CycloneDX / SPDX) | ✅ | ✅ | ❌ | आंशिक |
| **TUI + Web UI** एक्सप्लोरर | ✅ | ❌ | ❌ | ❌ |
| Policy gate + SARIF / JUnit / Markdown / HTML / Patch | ✅ | आंशिक | आंशिक | आंशिक |
## विशेषताएँ
- **SBOM diffing**: दो SBOM की तुलना करें और एक नज़र में जोड़े गए, हटाए गए और बदले गए घटक देखें
- **Drift वर्गीकरण**: संस्करण drift को **integrity drift** (बिना संस्करण परिवर्तन के हैश बदलना, जो tampering का संकेत है) और metadata drift से अलग करें
- **Compliance स्कोरिंग**: किसी भी SBOM को **NTIA**, **CISA 2025** और **BSI TR-03183** न्यूनतम तत्वों के विरुद्ध स्कोर करें
- **Dependency graph diff**: transitive निर्भरताओं और supply-chain गहराई को ट्रैक करें
- **बहु-प्रारूप समर्थन**: Syft, CycloneDX, SPDX (JSON)
- **प्रारूप रूपांतरण**: CycloneDX, SPDX और Syft प्रारूपों के बीच रूपांतरण करें
- **मजबूत पहचान मिलान**: PURL → CPE → BOM-ref → namespace/name वरीयता
- **सांख्यिकी मोड**: लाइसेंस, निर्भरता और integrity मेट्रिक्स के लिए एकल SBOM का विश्लेषण करें
- **इंटरैक्टिव TUI मोड**: कीबोर्ड नेविगेशन और खोज के साथ SBOM एक्सप्लोर करें
- **Web UI मोड**: drag-and-drop अपलोड के साथ ब्राउज़र-आधारित SBOM एक्सप्लोरर
- **पॉलिसी इंजन**: CI पाइपलाइनों में drift, लाइसेंस और compliance-score नियम लागू करें
- **GitHub Marketplace Action**: Job Summary, SARIF और वैकल्पिक टिप्पणी आउटपुट के साथ SBOM drift पर pull requests को गेट करें
- **डुप्लिकेट और टकराव का पता लगाना**: एक ही पैकेज के कई संस्करण और अस्पष्ट पहचान मिलान खोजें
- **एकाधिक आउटपुट प्रारूप**: Text, JSON, SARIF, JUnit XML, Markdown, HTML, JSON Patch
- **सहिष्णु पार्सिंग**: संरचित चेतावनियों के साथ त्रुटियों पर जारी रखें
## स्थापना
### Homebrew (macOS/Linux)```bash
brew install rezmoss/sbomlyze/sbomlyze
इंस्टॉलर स्क्रिप्ट
इंस्टॉलर स्क्रिप्ट आपके OS/आर्किटेक्चर के लिए सही बाइनरी डाउनलोड करती है:```bash
Install to ./bin
curl -sSfL https://raw.githubusercontent.com/rezmoss/sbomlyze/main/install.sh | sh
Install to /usr/local/bin (requires sudo)
curl -sSfL https://raw.githubusercontent.com/rezmoss/sbomlyze/main/install.sh | sudo sh -s -- -b /usr/local/bin
Install specific version
curl -sSfL https://raw.githubusercontent.com/rezmoss/sbomlyze/main/install.sh | sh -s -- -v 0.4.0
**इंस्टॉलर विकल्प:**
| विकल्प | विवरण |
|--------|-------------|
| `-b <dir>` | स्थापना निर्देशिका (डिफ़ॉल्ट: `./bin`) |
| `-d` | डीबग आउटपुट सक्षम करें |
| `-v <ver>` | विशिष्ट संस्करण स्थापित करें (डिफ़ॉल्ट: नवीनतम) |
इंस्टॉलर हमेशा रिलीज़ चेकसम की पुष्टि करता है। जब कोई संगत GitHub CLI स्थापित होती है, तो यह रिलीज़ की बिल्ड प्रोवेनेंस की भी पुष्टि करता है, और यदि वह सत्यापन सफल नहीं होता है, तो यह विफल होकर बंद हो जाता है (fail closed)।
### Go Install```bash
go install github.com/rezmoss/sbomlyze/cmd/sbomlyze@latest
बाइनरी रिलीज़ से
नवीनतम बाइनरी GitHub Releases से डाउनलोड करें।
v0.3.7 से शुरू करके, रिलीज़ आर्काइव GitHub artifact
attestations के साथ प्रकाशित किए जाते हैं। किसी डाउनलोड को स्वतंत्र रूप से सत्यापित करें:```bash
gh attestation verify ./sbomlyze_0.4.0_Linux_x86_64.tar.gz
--repo rezmoss/sbomlyze
--signer-workflow rezmoss/sbomlyze/.github/workflows/release.yml
Bिना हस्ताक्षर वाले apt, rpm, और apk रिपॉजिटरी निर्देशों को तब तक हटा दिया गया है जब तक कि रिपॉजिटरी पैकेज-मैनेजर-मूल हस्ताक्षर सत्यापन का समर्थन नहीं करतीं।
**macOS उपयोगकर्ता:** डाउनलोड करने के बाद quarantine फ्लैग हटाएँ:```bash
xattr -d com.apple.quarantine ./sbomlyze
chmod +x ./sbomlyze
स्रोत से निर्माण करें```bash
git clone https://github.com/rezmoss/sbomlyze.git cd sbomlyze go build -o sbomlyze ./cmd/sbomlyze
## त्वरित प्रारंभ```bash
# Compare two SBOMs (the headline use case)
sbomlyze before.json after.json
# Analyze a single SBOM
sbomlyze image.json
# Read an SBOM from standard input
syft image:tag -o cyclonedx-json | sbomlyze -
# Use standard input on either side of a diff
syft image:tag -o cyclonedx-json | sbomlyze baseline.json -
# Score an SBOM against NTIA / CISA / BSI minimum elements
sbomlyze image.json --compliance
# Interactive TUI explorer
sbomlyze image.json -i
