
Git diff for SBOMs—CycloneDX, SPDX और Syft दस्तावेज़ों की तुलना करें, छेड़छाड़ का पता लगाएँ और CI को गेट करें।
# sbomlyze
**आपके SBOM के लिए `git diff`।** दो Software Bills of Materials की तुलना करें और देखें कि builds, versions, और releases के बीच क्या बदला।
sbomlyze केवल version strings की तुलना नहीं करता, बल्कि component hashes की तुलना करता है। जब कोई attacker किसी package का version बढ़ाए बिना उसे बदल देता है, तो sbomlyze उसे flag करता है। Generators और vulnerability scanners इसे miss कर देते हैं।
[![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]
[![OpenSSF Best Practices][best-practices-img]][best-practices]
[![License: Apache-2.0][license-img]][license]
[![Downloads][download-img]][download]
[](https://github.com/rezmoss/sbomlyze-go-spdx-demo/pull/2)
यह signal किसी manifest या साधारण component diff से कैसे अलग है, यह देखें
[Manifest diff vs. SBOM diff vs. integrity drift](https://github.com/rezmoss/sbomlyze/blob/main/docs/manifest-vs-sbom-vs-integrity-drift.md) में।
> Generators SBOMs बनाते हैं और scanners CVEs खोजते हैं। sbomlyze आपको बताता है कि दो SBOMs के बीच क्या बदला और क्या उस पर भरोसा करना चाहिए।
> इसे अपने generator के बाद चलाएँ: `syft image:tag -o cyclonedx-json | sbomlyze - --compliance` बिना किसी temporary file के generated SBOM का विश्लेषण और स्कोर करता है। इसे किसी baseline से तुलना करें ताकि drift को classify किया जा सके और आपकी pipeline को gate किया जा सके।
## GitHub Action quickstart
एक checked-in या अलग से generated SBOM की उसके git baseline से तुलना करने के लिए [SBOMlyze Diff from GitHub Marketplace][marketplace] जोड़ें। नीचे दिया गया immutable 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 लिखता है और नीति लागू कर सकता है, अखंडता
विचलन की रिपोर्ट कर सकता है, SARIF अपलोड कर सकता है, या एकल pull-request टिप्पणी
बनाए रख सकता है। इनपुट, आउटपुट, अनुमतियों और सुरक्षा मार्गदर्शन के लिए
[पूर्ण Action संदर्भ](https://github.com/rezmoss/sbomlyze/blob/main/ACTION.md) देखें। पास होने वाले dependency अपडेट और
अवरुद्ध same-version hash परिवर्तन के लिए, सार्वजनिक workflow रन और SARIF
प्रमाण के साथ, [लाइव प्रदर्शन रिपॉज़िटरी](https://github.com/rezmoss/sbomlyze-action-demo)
देखें।
प्रारूप-विशिष्ट dogfood के लिए, सार्वजनिक
[Go + SPDX](https://github.com/rezmoss/sbomlyze-go-spdx-demo),
[Node + CycloneDX](https://github.com/rezmoss/sbomlyze-node-cyclonedx-demo), या
[container](https://github.com/rezmoss/sbomlyze-container-demo) उदाहरण का उपयोग करें। प्रत्येक
में पाँच पुनरुत्पादनीय समीक्षा परिदृश्य हैं।
[10-मिनट बीटा गाइड](https://github.com/rezmoss/sbomlyze/blob/main/BETA.md) चार केंद्रित सक्रियण और सिग्नल
गुणवत्ता प्रश्न एकत्र करता है।
उत्पन्न SBOMs को commit करने की आवश्यकता नहीं है: `baseline: workflow-artifact`
एक सफल default-branch रन से सबसे हाल का मेल खाता artifact प्राप्त करता है। एक
[पिन किया गया Syft साथी workflow](https://github.com/rezmoss/sbomlyze/blob/main/examples/workflows/syft-companion.yml)
जनरेशन और baseline प्रकाशन दिखाता है जबकि SBOMlyze समीक्षा और नीति के लिए
जिम्मेदार बना रहता है।
## sbomlyze क्यों?
कई टूल्स SBOMs उत्पन्न करते हैं। कुछ ही उनकी तुलना करते हैं, और उससे भी कम बताते हैं कि कोई परिवर्तन नियमित है या supply-chain red flag। sbomlyze उस अंतराल को भरता है।
| क्षमता | **sbomlyze** | cyclonedx-cli | sbomqs | syft / trivy |
|---|:---:|:---:|:---:|:---:|
| SBOM-to-SBOM **diff** | ✅ | basic | ❌ | ❌ |
| **Integrity / tamper** drift (hash बिना version बदले बदल गया) | ✅ | ❌ | ❌ | ❌ |
| Dependency-graph diff + transitive depth risk | ✅ | ❌ | ❌ | ❌ |
| **NTIA / CISA / BSI** compliance scoring | ✅ | ❌ | ✅ | ❌ |
| Format conversion (Syft / CycloneDX / SPDX) | ✅ | ✅ | ❌ | partial |
| **TUI + Web UI** explorers | ✅ | ❌ | ❌ | ❌ |
| Policy gate + SARIF / JUnit / Markdown / HTML / Patch | ✅ | partial | partial | partial |
## विशेषताएँ
- **SBOM diffing**: दो SBOMs की तुलना करें और एक नज़र में जोड़े गए, हटाए गए और बदले गए components देखें
- **Drift classification**: version drift को **integrity drift** (hash बिना version परिवर्तन के बदल गया, जो tampering का संकेत देता है) और metadata drift से अलग करें
- **Compliance scoring**: किसी भी SBOM को **NTIA**, **CISA 2025**, और **BSI TR-03183** न्यूनतम तत्वों के विरुद्ध स्कोर करें
- **Dependency graph diff**: transitive dependencies और supply-chain depth को ट्रैक करें
- **Multi-format support**: Syft, CycloneDX, SPDX (JSON)
- **Format conversion**: CycloneDX, SPDX, और Syft प्रारूपों के बीच कनवर्ट करें
- **Strong identity matching**: PURL → CPE → BOM-ref → namespace/name प्राथमिकता
- **Statistics mode**: license, dependency, और integrity मेट्रिक्स के लिए एकल SBOMs का विश्लेषण करें
- **Interactive TUI mode**: कीबोर्ड नेविगेशन और खोज के साथ SBOMs का अन्वेषण करें
- **Web UI mode**: drag-and-drop अपलोड के साथ ब्राउज़र-आधारित SBOM explorer
- **Policy engine**: CI pipelines में drift, license, और compliance-score नियम लागू करें
- **GitHub Marketplace Action**: Job Summary, SARIF, और वैकल्पिक comment आउटपुट के साथ SBOM drift पर pull requests को gate करें
- **Duplicate & collision detection**: एक ही package के कई versions और अस्पष्ट identity matches खोजें
- **Multiple output formats**: Text, JSON, SARIF, JUnit XML, Markdown, HTML, JSON Patch
- **Tolerant parsing**: संरचित warnings के साथ errors पर जारी रखें
## इंस्टॉलेशन
### 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
इंस्टॉल होता है, तो यह रिलीज़ की बिल्ड प्रोवेनेंस भी सत्यापित करता है और यदि
वह सत्यापन सफल नहीं होता है तो विफल हो जाता है।
### Go Install```bash
go install github.com/rezmoss/sbomlyze/cmd/sbomlyze@latest
```
### बाइनरी रिलीज़ से
[GitHub Releases](https://github.com/rezmoss/sbomlyze/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
```
Unsigned 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
# Web UI (opens browser)
sbomlyze -web
# Convert between SBOM formats
sbomlyze convert syft.json --to spdx
sbomlyze convert cdx.json --to syft -o output.json
# JSON output for CI integration
sbomlyze before.json after.json --json
# SARIF output for GitHub Code Scanning
sbomlyze before.json after.json --format sarif
# Markdown report for PR comments
sbomlyze before.json after.json --format markdown
# Apply policy checks
sbomlyze before.json after.json --policy policy.json
```
## उपयोग```
sbomlyze <sbom1|-> [sbom2|-] [options]
sbomlyze convert <sbom|-> --to <format> [-o output]
Modes:
Single file: sbomlyze <sbom> [--json] Show statistics
Interactive: sbomlyze <sbom> -i Interactive explorer
Convert: sbomlyze convert <sbom> --to <fmt> Convert SBOM format
Web server: sbomlyze -web [--port 8080] Web UI explorer
Two files: sbomlyze <sbom1> <sbom2> [...] Show diff
Use `-` in place of one SBOM path to read it from standard input.
Options:
-i, --interactive Interactive TUI explorer
-web, --web Start web UI server
--port <port> Web server port (default 8080)
--json Output in JSON format (shortcut for --format json)
--format <format> Output format: text, json, sarif, junit, markdown, html, patch
--compliance Show NTIA/CISA/BSI compliance scoring
--policy <file> Policy file for CI checks
--strict Fail on parse warnings
--tolerant Continue on parse warnings (default)
--no-pager Disable automatic paging of output
--to <format> Target format for convert: cyclonedx (cdx), spdx, syft
-o, --output <file> Output file for convert (default: stdout)
--version, -v Show version information
--help, -h Show this help message
```
## कमांड्स
### सांख्यिकी मोड (एकल फ़ाइल)
घटकों, लाइसेंसों और निर्भरताओं के बारे में जानकारी प्राप्त करने के लिए किसी SBOM का विश्लेषण करें।```bash
sbomlyze image.json
```
आउटपुट में स्कैन संदर्भ, स्वतः-पहचाने गए मुख्य निष्कर्ष, और आंकड़े शामिल हैं:```
Scan Context:
Tool: syft 1.40.1
Schema: 16.0.18
Scan Scope: all-layers
Source Type: image
Source: alpine:latest
Key Findings:
💻 OS/Distro: Alpine Linux v3.21
📦 Dominated by apk: 71 of 71 packages (100.0%)
📂 8,542 files tracked on filesystem
🔗 Relationships: 71 containment + 64 dependency
📜 License profile: 72% permissive, 20% copyleft
⚠️ Low hash coverage: 0.0% (71 of 71 missing)
🔍 Top catalogers: apkdb-cataloger (71)
📦 SBOM Statistics
==================
Total Components: 71
By Package Type:
apk 71
Licenses:
With license: 71
Without license: 0
Top Licenses:
MIT 17
BSD-3-Clause 8
GPL-2.0-only 8
Integrity:
With hashes: 0
Without hashes: 71
Dependencies:
Components with deps: 65
Total dep relations: 176
```
#### मुख्य निष्कर्ष
sbomlyze स्वचालित रूप से आपके SBOM के बारे में अंतर्दृष्टि उत्पन्न करता है। एकल-फ़ाइल विश्लेषण के लिए, इनमें शामिल हैं:
| निष्कर्ष | विवरण |
|---------|-------------|
| **OS/distro पहचान** | SBOM मेटाडेटा से ऑपरेटिंग सिस्टम या डिस्ट्रो की पहचान करता है |
| **प्रमुख इकोसिस्टम** | रिपोर्ट करता है जब एक पैकेज प्रकार हावी होता है (सभी पैकेजों का >60%) |
| **फ़ाइलसिस्टम फ़ुटप्रिंट** | फ़ाइलसिस्टम पर ट्रैक की गई फ़ाइलों की संख्या |
| **संबंध घनत्व** | containment और dependency-of संबंधों की गणना |
| **स्थान हॉटस्पॉट** | शीर्ष निर्देशिकाएँ जहाँ घटक पाए जाते हैं |
| **लाइसेंस जोखिम प्रोफ़ाइल** | permissive/copyleft/अज्ञात लाइसेंस प्रतिशत का विभाजन |
| **डेटा गुणवत्ता चेतावनियाँ** | अलर्ट करता है जब लाइसेंस (<50%), hash (<50%), या PURL (<80%) कवरेज कम हो |
| **डुप्लिकेट चेतावनियाँ** | डुप्लिकेट घटक समूहों को चिह्नित करता है |
| **Cataloger विभाजन** | घटकों का पता लगाने वाले शीर्ष स्कैनर/catalogers (Syft SBOMs) |
#### कवरेज मेट्रिक्स
सांख्यिकी मोड डेटा गुणवत्ता मूल्यांकन के लिए कवरेज प्रतिशत की गणना करता है:
| मेट्रिक | विवरण |
|--------|-------------|
| **PURL कवरेज** | Package URLs वाले घटकों का प्रतिशत |
| **CPE कवरेज** | CPEs वाले घटकों का प्रतिशत (भेद्यता स्कैनिंग तैयारी) |
| **लाइसेंस कवरेज** | कम से कम एक लाइसेंस वाले घटकों का प्रतिशत |
| **Hash कवरेज** | अखंडता hashes वाले घटकों का प्रतिशत |
#### लाइसेंस वर्गीकरण
लाइसेंस स्वचालित रूप से इनमें वर्गीकृत किए जाते हैं:
| श्रेणी | उदाहरण |
|----------|----------|
| **Copyleft** | GPL, LGPL, AGPL, MPL, EPL, CDDL |
| **Permissive** | MIT, BSD, Apache, ISC, Zlib, Unlicense |
| **सार्वजनिक डोमेन** | सार्वजनिक डोमेन समर्पण |
| **अज्ञात** | अपरिचित या अनुपलब्ध लाइसेंस |
### कन्वर्ट मोड
CycloneDX, SPDX, और Syft JSON प्रारूपों के बीच SBOMs को कन्वर्ट करें। इनपुट प्रारूप स्वतः पहचाना जाता है।```bash
# CycloneDX to SPDX
sbomlyze convert image.cdx.json --to spdx
# Syft to CycloneDX (cdx is an alias for cyclonedx)
sbomlyze convert syft-output.json --to cdx
# SPDX to Syft, writing to a file
sbomlyze convert spdx-output.json --to syft -o converted.json
```
#### समर्थित लक्ष्य प्रारूप
| प्रारूप | `--to` मान | आउटपुट |
|--------|-------------|--------|
| CycloneDX 1.5 | `cyclonedx` या `cdx` | मेटाडेटा, निर्भरताओं और प्रॉपर्टीज़ के साथ CycloneDX JSON |
| SPDX 2.3 | `spdx` | पैकेज, संबंधों और बाहरी संदर्भों के साथ SPDX JSON |
| Syft | `syft` | आर्टिफैक्ट्स, संबंधों, स्रोत और डिस्ट्रो जानकारी के साथ Syft JSON |
#### क्या संरक्षित रहता है
रूपांतरण कंपोनेंट नाम, संस्करण, PURLs, CPEs, लाइसेंस, हैश, आपूर्तिकर्ता जानकारी और निर्भरता संबंधों को संरक्षित रखता है। प्रारूप-विशिष्ट फ़ील्ड (जैसे, Syft भाषा, foundBy, स्थान) CDX में रूपांतरित करते समय CycloneDX प्रॉपर्टीज़ के माध्यम से ले जाए जाते हैं।
### डिफ़ मोड (दो फ़ाइलें)
संस्करणों के बीच क्या बदला यह देखने के लिए दो SBOMs की तुलना करें।```bash
sbomlyze v1.0.json v2.0.json
```
#### डिफ़ अवलोकन
डिफ़ एक साथ-साथ मेटाडेटा तुलना (फ़ाइल नाम, आकार, OS जानकारी, टूल जानकारी, घटक गणना) से शुरू होता है, जिसके बाद उपलब्ध होने पर स्कैन संदर्भ विवरण आता है।
#### आउटपुट```
📊 Drift Summary:
📦 Version drift: 58 components
⚠️ Integrity drift: 1 component (hash changed without version change!)
📝 Metadata drift: 2 components
🔑 Key Findings:
📈 Attack surface: +5 packages (7.0%), +120 files (3.2%)
🚨 2 version downgrades detected: openssl 3.1.4→3.0.2, curl 8.5.0→8.4.0
🔄 56 version upgrades (2 major, 12 minor, 42 patch) among 65 shared packages
⚠️ Integrity drift (1 total): 1 npm (review recommended)
❌ python ecosystem entirely removed (15 → 0 packages)
➕ New ecosystem: golang (8 packages)
✅ Core system packages stable: apk (71) unchanged
+ Added (2):
+ libgcrypt 1.10.3-r0
+ libgpg-error 1.49-r0
- Removed (3):
- libapk 3.0.3-r1
- libgcc 15.2.0-r2
- nghttp3 1.13.1-r0
~ Changed (58):
~ nginx
version: 1.29.4-r1 -> 1.27.3-r1
~ suspicious-pkg ⚠️ [INTEGRITY]
hash[SHA256]: abc123 -> def456
>> Added dependencies:
pkg:apk/alpine/libxslt: +[so:libgcrypt.so.20]
<< Removed dependencies:
pkg:apk/alpine/libcurl: -[so:libnghttp3.so.9]
🔗 New transitive dependencies (3):
+ pkg:npm/lodash (depth 2)
via: [pkg:npm/my-app pkg:npm/express pkg:npm/lodash]
+ pkg:npm/underscore (depth 3)
via: [pkg:npm/my-app pkg:npm/express pkg:npm/lodash pkg:npm/underscore]
📊 New deps by depth:
Depth 2: 1
Depth 3+ (risky): 2 ⚠️
```
#### Diff Key Findings
Diff मोड में, sbomlyze दोनों SBOMs की तुलना करते हुए स्वचालित रूप से समृद्ध अंतर्दृष्टि उत्पन्न करता है:
| Finding | Description |
|---------|-------------|
| **Scan context mismatch** | यदि SBOMs के बीच schema version या scan scope बदल गया हो तो चेतावनी देता है |
| **Attack surface delta** | Package, file, और relationship count में प्रतिशत के साथ परिवर्तन |
| **Vanished/new ecosystems** | Package प्रकार जो पूरी तरह से प्रकट या गायब हो गए |
| **OS/distro migration** | स्कैन के बीच operating system में परिवर्तन का पता लगाता है |
| **Version change analysis** | Upgrades vs downgrades की गणना करता है, परिवर्तनों को major/minor/patch के रूप में वर्गीकृत करता है |
| **Version downgrades** | Downgrades को component विवरण के साथ सुरक्षा संकेत के रूप में चिह्नित करता है |
| **Integrity drift context** | जोखिम मार्गदर्शन के साथ package प्रकार के अनुसार integrity drift का विश्लेषण करता है |
| **Dominant path patterns** | प्रकार और filesystem path के अनुसार केंद्रित परिवर्तन |
| **Removal/addition hotspots** | परिवर्तनों से प्रभावित शीर्ष directories |
| **Stable types** | समान counts वाले package प्रकार (अपरिवर्तित कोर) |
| **License category shifts** | Copyleft/permissive संतुलन में परिवर्तन |
| **Cataloger gaps** | वे scanners जिन्होंने Before में packages पाए लेकिन After में कोई नहीं |
#### Package Samples by Type
जोड़े और हटाए गए components को sample listings के साथ package प्रकार के अनुसार समूहीकृत किया जाता है, जिससे यह देखना आसान हो जाता है कि प्रत्येक ecosystem में क्या बदला।
## Compliance Scoring
किसी भी SBOM को तीन प्रमुख minimum-element frameworks के विरुद्ध स्कोर करें ताकि उस प्रश्न का उत्तर दिया जा सके जो auditors और procurement teams बार-बार पूछते रहते हैं: **"क्या यह SBOM पर्याप्त रूप से पूर्ण है?"**```bash
# Score a single SBOM
sbomlyze image.json --compliance
# Score alongside a diff
sbomlyze before.json after.json --compliance
# As JSON for CI
sbomlyze image.json --compliance --json
```
### मूल्यांकित फ्रेमवर्क
| फ्रेमवर्क | जाँचें | उल्लेखनीय आवश्यकताएँ |
|-----------|--------|----------------------|
| **NTIA न्यूनतम तत्व** (2021) | 7 | नाम, संस्करण, आपूर्तिकर्ता, विशिष्ट ID (PURL/CPE), निर्भरता संबंध, SBOM लेखक, टाइमस्टैम्प |
| **CISA 2025 न्यूनतम तत्व** (अगस्त 2025 ड्राफ्ट) | 10 | NTIA के ऊपर सॉफ़्टवेयर निर्माता, लाइसेंस जानकारी, **कंपोनेंट हैश**, और टूल नाम जोड़ता है |
| **BSI TR-03183-2** (v2.1.0, 2025) | 9 | कंपोनेंट निर्माता संपर्क, **SHA-512 हैश**, SPDX-प्रारूप लाइसेंस, और SBOM निर्माता संपर्क की आवश्यकता होती है |
### स्कोर प्रस्तुति
प्रत्येक फ्रेमवर्क एक प्रतिशत (पास की गई जाँचें / कुल जाँचें) और एक समग्र स्कोर (फ्रेमवर्क में औसत) रिपोर्ट करता है, स्थिति संकेतकों के साथ:
| संकेतक | स्कोर |
|-----------|-------|
| 🟢 | ≥ 90% |
| 🟡 | 70–89% |
| 🟠 | 50–69% |
| 🔴 | < 50% |
JSON आउटपुट (`--compliance --json`) में प्रति-जाँच पास/फेल विवरण के साथ पूरी रिपोर्ट शामिल होती है; HTML प्रारूप अनुपालन रिपोर्ट को रिपोर्ट पृष्ठ में एम्बेड करता है।
### CI में अनुपालन को गेट करना
[policy engine](#policy-engine) के माध्यम से अनुपालन थ्रेशोल्ड लागू करें। कोई भी थ्रेशोल्ड सेट करने पर `--compliance` फ़्लैग के बिना अनुपालन मूल्यांकन ट्रिगर होता है:```json
{
"min_ntia_score": 85,
"min_cisa_score": 70,
"min_bsi_score": 80,
"min_overall_compliance": 75
}
```
| `-s` | `--server` | Server URL (default: `http://localhost:8080`) |
| `-t` | `--token` | API token for authentication |
| `-o` | `--output` | Output format: `json`, `yaml`, `table` |
| `-v` | `--verbose` | Enable verbose logging |
| `-q` | `--quiet` | Suppress non-essential output |
| `-h` | `--help` | Show help message and exit |
### Environment Variables
| Variable | Description |
|----------|-------------|
| `SCANNER_SERVER_URL` | Default server URL |
| `SCANNER_API_TOKEN` | API token |
| `SCANNER_LOG_LEVEL` | Log level (`debug`, `info`, `warn`, `error`) |
| `SCANNER_TIMEOUT` | Request timeout in seconds |
### Examples
```bash
# Scan a single target
scanner scan --target example.com
# Scan multiple targets from a file
scanner scan --file targets.txt --output json
# Use a custom server
scanner --server https://api.example.com --token $SCANNER_API_TOKEN scan --target example.com
```
## Configuration File
The scanner reads configuration from `~/.scanner/config.yaml` by default:
```yaml
server:
url: http://localhost:8080
timeout: 30
auth:
token: your-api-token
output:
format: table
verbose: false
```
## Exit Codes
| Code | Meaning |
|------|---------|
| `0` | Success |
| `1` | General error |
| `2` | Invalid arguments |
| `3` | Authentication failure |
| `4` | Network error |
| `5` | Scan failed |```bash
sbomlyze image.json --policy compliance-policy.json
```
## Dependency Graph Diff
sbomlyze साधारण कंपोनेंट सूची diffs से आगे बढ़कर पूरे dependency graph का विश्लेषण करता है, जिससे transitive dependencies के माध्यम से आने वाले supply-chain जोखिमों का पता लगाया जा सके।
### विशेषताएँ
| विशेषता | विवरण |
|---------|-------------|
| **Edge diff** | जोड़ी/हटाई गई direct dependencies (A, B पर निर्भर करता है) |
| **Transitive reachability** | नई indirect dependencies जो graph के माध्यम से प्रकट होती हैं |
| **Transitive loss tracking** | हटाई गई transitive dependencies |
| **Path tracking** | दिखाता है कि प्रत्येक नई transitive dep तक वास्तव में कैसे पहुँचा जाता है |
| **Depth tracking** | आपके कोड से प्रत्येक नई dep कितने hops दूर है |
| **Risk summary** | Depth 3+ deps को उच्च जोखिम के रूप में चिह्नित किया गया |
### Depth क्यों मायने रखती है
graph में गहराई में आने वाली dependencies:
- ऑडिट और समीक्षा करना कठिन होता है
- अक्सर स्पष्ट अनुमोदन के बिना शामिल कर ली जाती हैं
- supply chain हमलों के सामान्य माध्यम होती हैं (जैसे, event-stream घटना)
depth summary समीक्षा को प्राथमिकता देने में मदद करता है:
| Depth | जोखिम स्तर | विवरण |
|-------|------------|-------------|
| **1** | कम | Direct dependencies (ये आपने चुनी हैं) |
```
---
[Read more](https://github.com/rezmoss/sbomlyze)