
sbomlyze v0.3.6
Git diff لملفات SBOM—قارن مستندات CycloneDX وSPDX وSyft، واكتشف العبث، وتحكم في CI.
sbomlyze
git diff لقوائم SBOM الخاصة بك. قارن بين قائمتين لقائمة مواد البرمجيات (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 تُنشئ القوائم وماسحات الثغرات تبحث عن CVEs. يخبرك sbomlyze بما تغيّر بين قائمتي SBOM وما إذا كان بإمكانك الوثوق بذلك. شغّله بعد المولّد الخاص بك:
syft image:tag -o cyclonedx-json | sbomlyze - --complianceيحلّل قائمة SBOM المولّدة ويقيّمها دون الحاجة إلى ملف مؤقت. قارنها بخط أساس لتصنيف الانحراف وضبط خط أنابيبك.
بدء سريع باستخدام GitHub Action
أضِف [فرق SBOMlyze من GitHub Marketplace][marketplace] لمقارنة قائمة SBOM مُضمّنة أو مولّدة بشكل منفصل مع خط أساس git الخاص بها. قيمة SHA الثابتة أدناه هي الإجراء v0.5.1 المنشور:```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
ينشئ الإجراء ملخص Job Summary افتراضيًا ويمكنه فرض السياسات، والإبلاغ عن انحراف السلامة، ورفع SARIF، أو الحفاظ على تعليق واحد لطلب السحب. راجع [مرجع الإجراء الكامل](https://github.com/rezmoss/sbomlyze/blob/main/ACTION.md) للمدخلات والمخرجات والأذونات وإرشادات الأمان. راجع [مستودع العرض التوضيحي المباشر](https://github.com/rezmoss/sbomlyze-action-demo) لتحديث تبعية ناجح وتغيير hash محجوب بنفس الإصدار، مع تشغيلات سير عمل عامة وأدلة SARIF.
للاستخدام الذاتي الخاص بالصيغة، استخدم المثال العام
[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). يحتوي كل منها على خمسة سيناريوهات مراجعة قابلة للتكرار. يجمع [دليل beta لمدة 10 دقائق](https://github.com/rezmoss/sbomlyze/blob/main/BETA.md) أربعة أسئلة مركّزة حول التفعيل وجودة الإشارة.
لا تحتاج ملفات SBOM الناتجة إلى الالتزام بها (commit): يسترد `baseline: workflow-artifact` أحدث قطعة أثرية مطابقة من تشغيل ناجح للفرع الافتراضي. يُظهر [سير عمل Syft المصاحب المثبّت](https://github.com/rezmoss/sbomlyze/blob/main/examples/workflows/syft-companion.yml) التوليد ونشر الخط الأساسي بينما يظل SBOMlyze مسؤولًا عن المراجعة والسياسة.
## لماذا sbomlyze؟
تولّد العديد من الأدوات ملفات SBOM. القليل منها يقارن بينها، وعدد أقل يخبرك ما إذا كان التغيير روتينيًا أم علامة خطر في سلسلة التوريد. يسدّ sbomlyze هذه الفجوة.
| القدرة | **sbomlyze** | cyclonedx-cli | sbomqs | syft / trivy |
|---|:---:|:---:|:---:|:---:|
| مقارنة **diff** بين SBOM وSBOM | ✅ | أساسي | ❌ | ❌ |
| انحراف **السلامة / العبث** (تغيّر hash دون تغيير الإصدار) | ✅ | ❌ | ❌ | ❌ |
| فرق الرسم البياني للتبعيات + خطر العمق غير المباشر | ✅ | ❌ | ❌ | ❌ |
| تسجيل امتثال **NTIA / CISA / BSI** | ✅ | ❌ | ✅ | ❌ |
| تحويل الصيغة (Syft / CycloneDX / SPDX) | ✅ | ✅ | ❌ | جزئي |
| مستكشفات **TUI + Web UI** | ✅ | ❌ | ❌ | ❌ |
| بوابة السياسة + SARIF / JUnit / Markdown / HTML / Patch | ✅ | جزئي | جزئي | جزئي |
## الميزات
- **مقارنة SBOM**: قارن بين ملفي SBOM وشاهد المكونات المضافة والمحذوفة والمتغيرة في لمحة واحدة
- **تصنيف الانحراف**: ميِّز انحراف الإصدار عن **انحراف السلامة** (تغيّر hash دون تغيير الإصدار، مما يشير إلى العبث) وانحراف البيانات الوصفية
- **تسجيل الامتثال**: قيّم أي SBOM مقابل الحد الأدنى من عناصر **NTIA** و**CISA 2025** و**BSI TR-03183**
- **فرق الرسم البياني للتبعيات**: تتبّع التبعيات غير المباشرة وعمق سلسلة التوريد
- **دعم متعدد الصيغ**: Syft وCycloneDX وSPDX (JSON)
- **تحويل الصيغ**: التحويل بين صيغ CycloneDX وSPDX وSyft
- **مطابقة هوية قوية**: PURL → CPE → BOM-ref → أسبقية namespace/name
- **وضع الإحصاءات**: تحليل ملفات SBOM فردية لمقاييس الترخيص والتبعية والسلامة
- **وضع TUI التفاعلي**: استكشف ملفات SBOM باستخدام التنقل عبر لوحة المفاتيح والبحث
- **وضع Web UI**: مستكشف SBOM قائم على المتصفح مع رفع بالسحب والإفلات
- **محرك السياسات**: فرض قواعد الانحراف والترخيص وتسجيل الامتثال في مسارات CI
- **إجراء GitHub Marketplace**: تحكم في طلبات السحب عبر انحراف SBOM مع Job Summary وSARIF وإخراج تعليق اختياري
- **كشف التكرار والتصادم**: اعثر على إصدارات متعددة من الحزمة نفسها ومطابقات هوية غامضة
- **صيغ إخراج متعددة**: Text وJSON وSARIF وJUnit XML وMarkdown وHTML وJSON Patch
- **تحليل متسامح**: متابعة الأخطاء مع تحذيرات منظمة
## التثبيت
### Homebrew (macOS/Linux)```bash
brew install rezmoss/sbomlyze/sbomlyze
سكربت التثبيت
يقوم سكربت التثبيت بتنزيل الملف الثنائي الصحيح لنظام التشغيل/البنية لديك:```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```bash
go install github.com/rezmoss/sbomlyze/cmd/sbomlyze@latest
من الإصدار الثنائي
قم بتنزيل أحدث إصدار ثنائي من إصدارات GitHub.
ابتداءً من v0.3.7، تُنشر أرشيفات الإصدارات مع تصديقات الأرتيفاكت
الخاصة بـ GitHub. تحقق من التنزيل بشكل مستقل باستخدام:```bash
gh attestation verify ./sbomlyze_0.4.0_Linux_x86_64.tar.gz
--repo rezmoss/sbomlyze
--signer-workflow rezmoss/sbomlyze/.github/workflows/release.yml
تمت إزالة تعليمات مستودعات apt وrpm وapk غير الموقعة حتى
تدعم المستودعات التحقق من التوقيع الأصلي لمدير الحزم.
**مستخدمو macOS:** قم بإزالة علامة العزل بعد التنزيل:```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 [-o output]
