
تطبيق ويب ثابت لعرض قوائم مكونات البرمجيات (SBOMs) وإجراء فحص الثغرات حسب الطلب باستخدام osv.dev. يمكن نشره بسهولة على GitHub/GitLab Pages.
تطبيق ويب ثابت بسيط لعرض تبعيات البرمجيات من ملفات قائمة المواد البرمجية (SBOM). كموقع ثابت، يمكن استضافته بسهولة على أي خدمة استضافة ويب ثابتة، مثل صفحات GitLab أو صفحات GitHub أو Netlify.
trivy image <image> --format=cyclonedx --output=sbom.json --scanners vulngrype <image> --output cyclonedx-json > sbom.jsonحاليًا، يدعم BOM View تنسيقي CycloneDX و SPDX بتنسيق JSON. يمكن إنشاؤها بواسطة أدوات مثل syft.
تم تصميم هذا التطبيق لتحميل قوائم المواد ديناميكيًا في وقت التشغيل. لإضافة قوائم المواد الخاصة بك، لا تحتاج إلى إعادة بناء المشروع. اتبع هذه الخطوات في الدليل الجذر لموقعك الثابت المنشور (على سبيل المثال، مجلد dist أو public الذي يتم تقديمه بواسطة مهمة الصفحات الخاصة بك).
أنشئ دليل sboms: إذا لم يكن موجودًا بالفعل، قم بإنشاء دليل باسم sboms.
أضف قوائم المواد الخاصة بك: انسخ ملفات CycloneDX/SPDX JSON الخاصة بك إلى دليل sboms.
تحديث ملف الفهرس: قم بإنشاء أو تحديث ملف باسم index.json داخل دليل sboms. يخبر هذا الملف التطبيق بقوائم المواد المتاحة. يجب أن يحتوي على مصفوفة JSON واحدة من السلاسل النصية، حيث كل سلسلة هي اسم ملف قائمة المواد في ذلك الدليل.
على سبيل المثال، إذا كان لديك my-app.json و another-lib.json، فيجب أن يبدو ملف index.json على النحو التالي:
[
"my-app.json",
"another-lib.json"
]
سوف يقوم التطبيق بعد ذلك بجلب ملف index.json لملء القائمة المنسدلة لاختيار قائمة المواد وتحميل الملف المقابل عند الاختيار.
فيما يلي مثال على تكوين .gitlab-ci.yml الذي يقوم بجلب إصدار مسبق البناء، واستخراج قوائم المواد، وإنشاء ملف index.json ديناميكيًا للنشر.
stages:
- sbom
- deploy
create_sbom:
stage: sbom
image: alpine:3.23.2
before_script:
- apk add syft
script:
- mkdir sboms
- syft alpine:3.19 -o cyclonedx-json=sboms/alpine-cyclone.json
artifacts:
paths:
- sboms
pages:
stage: deploy
image: alpine:3.23.2
before_script:
- apk add curl jq
script:
- curl -L https://github.com/hristiy4n/bom-view/releases/download/v0.4.0/bom-view-v0.4.0-dist.tar.gz | tar zx
- mv dist public
- mkdir public/sboms
- cp sboms/* public/sboms
- |
find sboms -maxdepth 1 -type f -name '*.json' ! -name 'index.json' \
| sed 's|.*/||' \
| sort \
| jq -R . | jq -s . > public/sboms/index.json
needs:
- job: create_sbom
artifacts:
paths:
- public
يمكنك رؤية مثال حي لهذا التكوين قيد التشغيل هنا: https://security-dashboard-a9b4f8.gitlab.io/
يجب أن يحتوي دليل النشر النهائي على الهيكل التالي:
dist/
├── assets/
│ └── ... (ملفات CSS و JS)
├── index.html
└── sboms/
├── index.json
├── sbom1.json
├── sbom2.json
└── ...