أمان التبعيات والحاويات
Snyk: فحص التبعيات في CI/CD
3 دقيقة للقراءة
Snyk هي أداة SCA الأكثر تبنياً، معروفة بتجربة المطور وقاعدة بيانات الثغرات الشاملة.
نظرة عامة على Snyk
| الميزة | الوصف |
|---|---|
| اللغات | JavaScript، Python، Java، Go، Ruby، .NET، PHP، Scala |
| مديرو الحزم | npm، pip، Maven، Gradle، Go modules، Bundler، NuGet |
| CI/CD | GitHub، GitLab، Bitbucket، Jenkins، Azure DevOps |
| المستوى المجاني | 200 اختبار/شهر للمشاريع مفتوحة المصدر |
التثبيت
# تثبيت Snyk CLI
npm install -g snyk
# أو عبر Homebrew
brew install snyk
# المصادقة (ينشئ ~/.config/configstore/snyk.json)
snyk auth
الاستخدام الأساسي
# اختبار الدليل الحالي
snyk test
# اختبار بيان محدد
snyk test --file=package.json
# اختبار مع عتبة الخطورة
snyk test --severity-threshold=high
# الإخراج بـ JSON لمعالجة CI
snyk test --json > snyk-results.json
فهم مخرجات Snyk
Testing /app...
✗ High severity vulnerability found in lodash
Description: Prototype Pollution
Info: https://snyk.io/vuln/SNYK-JS-LODASH-567746
Introduced through: express@4.17.1 > lodash@4.17.15
From: express@4.17.1 > lodash@4.17.15
Fixed in: lodash@4.17.21
Remediation: Upgrade to lodash@4.17.21
Organization: your-org
Package manager: npm
Target file: package.json
Project name: my-app
Tested 156 dependencies for known vulnerabilities
Found 3 vulnerabilities (1 high, 2 medium)
تكامل CI/CD
GitHub Actions
# .github/workflows/snyk.yml
name: Snyk Security Scan
on:
push:
branches: [main]
pull_request:
jobs:
snyk:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run Snyk to check for vulnerabilities
uses: snyk/actions/node@master
env:
SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
with:
args: --severity-threshold=high
- name: Upload Snyk results to GitHub
uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: snyk.sarif
GitLab CI
# .gitlab-ci.yml
snyk:
image: snyk/snyk:node
stage: test
script:
- snyk auth $SNYK_TOKEN
- snyk test --severity-threshold=high
allow_failure: false
مراقبة التبعيات
ما وراء الفحوصات لمرة واحدة، Snyk يراقب الثغرات الجديدة:
# إضافة المشروع لمراقبة Snyk
snyk monitor
# المراقبة مع اسم مشروع مخصص
snyk monitor --project-name="production-api"
# مراقبة منظمة محددة
snyk monitor --org=my-team
PRs الإصلاح الآلي
Snyk يمكنه إنشاء طلبات سحب تلقائياً لإصلاح الثغرات:
# إعدادات تكامل Snyk GitHub
auto_remediation:
enabled: true
strategy: patch # أو 'upgrade'
branch_prefix: snyk-fix/
هذا ينشئ PRs مثل:
snyk-fix/upgrade-lodash-4.17.21snyk-fix/patch-SNYK-JS-LODASH-567746
تجاهل الإيجابيات الخاطئة
# تجاهل ثغرة محددة
snyk ignore --id=SNYK-JS-LODASH-567746 --reason="غير قابل للاستغلال في سياقنا"
# ينشئ ملف سياسة .snyk
# .snyk
version: v1.25.0
ignore:
SNYK-JS-LODASH-567746:
- '*':
reason: غير قابل للاستغلال - المدخلات معقمة
expires: 2025-06-01T00:00:00.000Z
امتثال الرخص
Snyk أيضاً يتحقق من مشاكل الرخص:
# التحقق من الرخص
snyk test --show-vulnerable-paths=all
# الفشل على رخص محددة
snyk test --license-policy="high-risk-licenses"
| الرخصة | مستوى المخاطر | السياسة الشائعة |
|---|---|---|
| MIT | منخفض | السماح |
| Apache-2.0 | منخفض | السماح |
| GPL-3.0 | عالي | الحظر (فيروسي) |
| AGPL-3.0 | حرج | الحظر |
| تجاري | متفاوت | المراجعة |
بعد ذلك، سنستكشف أمان الحاويات مع Trivy. :::