تخطَّ إلى المحتوى

أوامر Snyk

أوامر Snyk CLI الشاملة وسير العمل للفحص الأمني عبر المصادر المفتوحة والأكواد والحاويات والبنية التحتية كأكواد.

التثبيت

npm (Node.js)

# تثبيت عام
npm install -g snyk

# تثبيت في المشروع
npm install --save-dev snyk

# التحقق من التثبيت
snyk --version

macOS (Homebrew)

# التثبيت عبر Homebrew
brew install snyk

# تحديث Snyk
brew upgrade snyk

# التحقق من التثبيت
snyk --version

Windows (Scoop)

# التثبيت عبر Scoop
scoop install snyk

# التحقق من التثبيت
snyk --version

الملف الثنائي المستقل

# تحميل CLI المستقل (Linux/macOS)
curl https://static.snyk.io/cli/latest/snyk-linux -o snyk
chmod +x ./snyk
./snyk --version

# أو macOS
curl https://static.snyk.io/cli/latest/snyk-macos -o snyk
chmod +x ./snyk

المصادقة

المصادقة عبر المتصفح

# فتح المتصفح للمصادقة
snyk auth

# الافتراضي: فتح المتصفح وإنشاء رمز مصادقة
snyk auth --token <token>

طرق رمز API

# المصادقة برمز صريح
snyk auth --token <your-api-token>

# تعيين الرمز عبر متغير البيئة
export SNYK_TOKEN=<your-api-token>
snyk test

# التحقق من المصادقة الحالية
snyk config get api

# تعيين المنظمة
snyk config set org=<org-id>

تسجيل الخروج

# مسح بيانات الاعتماد المخزنة
snyk logout

# مسح جميع بيانات الاعتماد
rm ~/.snyk

فحص المصادر المفتوحة (SCA)

الفحص الأساسي

# فحص المشروع الحالي عن الثغرات
snyk test

# فحص مع الحد الأدنى من المخرجات
snyk test --quiet

# فحص مع عرض معلومات تفصيلية
snyk test --verbose

# فحص ملف معين
snyk test --file=package.json

# فحص بجميع مستويات الثغرات
snyk test --severity-threshold=low

تصفية الحدة

# عرض الثغرات الحرجة فقط
snyk test --severity-threshold=critical

# عرض الثغرات الحرجة والعالية
snyk test --severity-threshold=high

# عرض الثغرات الحرجة والعالية والمتوسطة
snyk test --severity-threshold=medium

# عرض الجميع (حرج وعالي ومتوسط ومنخفض)
snyk test --severity-threshold=low

دعم لغات متعددة

# فحص مشاريع npm/Node.js
snyk test

# فحص مشاريع Python
snyk test --file=requirements.txt

# فحص Java (Maven)
snyk test --file=pom.xml

# فحص Java (Gradle)
snyk test --file=build.gradle

# فحص .NET (NuGet)
snyk test --file=packages.config

# فحص Ruby
snyk test --file=Gemfile.lock

# فحص PHP/Composer
snyk test --file=composer.lock

# فحص Go
snyk test --file=go.mod

مراقبة المشاريع

# إنشاء لقطة من الثغرات للمراقبة
snyk monitor

# مراقبة باسم مخصص
snyk monitor --project-name=my-app

# مراقبة منظمة معينة
snyk monitor --org=<org-id>

# مراقبة مع التصنيفات
snyk monitor --tags=production,critical

فحص الأكواد (SAST)

فحص الأكواد الأساسي

# فحص الأكواد عن الثغرات الأمنية
snyk code test

# فحص مع الحد الأدنى من المخرجات
snyk code test --quiet

# فحص مع المخرجات التفصيلية
snyk code test --verbose

# فحص مجلد معين
snyk code test --scan-unmanaged

تصفية حدة الأكواد

# المشاكل الحرجة فقط
snyk code test --severity-threshold=critical

# المشاكل الحرجة والعالية
snyk code test --severity-threshold=high

# جميع المشاكل
snyk code test --severity-threshold=low

فحص الحاويات

فحص الصور

# فحص صورة Docker عن الثغرات
snyk container test <image-name>

# الفحص مع العلامة
snyk container test myapp:latest

# الفحص من السجل
snyk container test docker.io/node:16

# فحص الصورة المحلية حسب المعرف
snyk container test --image=<image-id>

مراقبة الحاويات

# إنشاء لقطة من ثغرات الحاويات
snyk container monitor <image-name>

# مراقبة مع المنظمة
snyk container monitor <image-name> --org=<org-id>

# مراقبة صور متعددة
snyk container monitor myapp:v1.0
snyk container monitor myapp:v1.1

خيارات متقدمة للحاويات

# عرض جميع الثغرات (بما فيها التي لم يتم إصلاحها)
snyk container test <image> --show-vulnerable-paths

# تضمين ثغرات الصورة الأساسية
snyk container test <image> --detect-scan-errors

# الفحص دون التحميل إلى Snyk
snyk container test <image> --skip-unresolved

فحص البنية التحتية كأكواد (IaC)

فحص Terraform

# فحص ملفات Terraform
snyk iac test

# فحص ملف معين
snyk iac test main.tf

# الفحص مع تصفية الحدة
snyk iac test --severity-threshold=high

# الفحص مع الإطار الزمني
snyk iac test --framework=terraform

# توليد تقرير قابل للقراءة من الإنسان
snyk iac test --report

تنسيقات IaC أخرى

# فحص CloudFormation
snyk iac test --framework=cloudformation template.yaml

# فحص بيانات Kubernetes
snyk iac test --framework=k8s deployment.yaml

# فحص قوالب ARM
snyk iac test --framework=arm

# فحص Dockerfile
snyk iac test Dockerfile

# فحص مخططات Helm
snyk iac test --framework=helm chart/

مراقبة IaC

# مراقبة إعدادات IaC
snyk iac describe

# الحصول على معلومات الامتثال
snyk iac describe --framework=terraform

# عرض الإعدادات التفصيلية
snyk iac describe --nested

الإصلاح والمعالجة

إصلاح الثغرات التلقائي

# إصلاح الثغرات تلقائياً
snyk fix

# محاكاة لمعاينة التغييرات
snyk fix --dry-run

# الإصلاح لحدة معينة
snyk fix --severity-threshold=high

# فرض الكتابة فوق التغييرات الموجودة
snyk fix --force

حماية التبعيات

# تطبيق Snyk protect (إضافة رقع أمنية للتبعيات)
snyk protect

# التحقق من تطبيق الحماية
snyk protect --verbose

# إزالة الحماية
snyk protect --uninstall

تجاهل الثغرات

تجاهل الثغرات المحددة

# تجاهل ثغرة بشكل تفاعلي
snyk ignore

# التجاهل مع سبب محدد وتاريخ انتهاء
snyk ignore --id=<vuln-id> --reason=<reason> --expiry=<date>

# مثال: تجاهل لمدة 30 يوم
snyk ignore --id=SNYK-JS-123456 --expiry=2026-04-30

# تعيين تجاهل دائم
snyk ignore --id=SNYK-JS-123456 --permanent

ملفات السياسة

# إنشاء ملف سياسة .snyk
snyk policy --create

# الاختبار مع السياسة
snyk test --policy-path=.snyk

# عرض السياسة
cat .snyk

# تحديث السياسة
snyk ignore --id=SNYK-JS-123456 --reason="False positive"

توليد SBOM

قائمة المكونات البرمجية

# توليد SBOM بصيغة JSON
snyk sbom

# توليد SBOM لصورة Docker
snyk sbom --format=json <image-name>

# الإخراج إلى ملف
snyk sbom > sbom.json

# توليد صيغة SPDX
snyk sbom --format=spdx

# العرض بصيغة جدول
snyk sbom --format=table

تنسيقات الإخراج

إخراج JSON

# الاختبار والإخراج كـ JSON
snyk test --json > results.json

# طباعة JSON بشكل جميل
snyk test --json-file-output=results.json

# فحص الأكواد كـ JSON
snyk code test --json

إخراج SARIF

# توليد صيغة SARIF (لفحص الأكواد على GitHub)
snyk test --sarif > results.sarif

# SARIF لفحص الأكواد
snyk code test --sarif > code-results.sarif

# حاوية SARIF
snyk container test <image> --sarif > container.sarif

تقارير HTML

# توليد تقرير HTML
snyk test --html > report.html

# فتح في المتصفح
snyk test --html > report.html && open report.html

الإعدادات والتكوينات

أوامر التكوين

# عرض الإعدادات الحالية
snyk config show

# تعيين نقطة نهاية API
snyk config set api=https://api.snyk.io

# تعيين المنظمة
snyk config set org=<org-id>

# الحصول على إعداد معين
snyk config get api

# إلغاء التكوين
snyk config unset org

متغيرات البيئة

# تعيين الرمز عبر متغير البيئة
export SNYK_TOKEN=<your-token>

# تعيين المنظمة
export SNYK_ORG=<org-id>

# تعيين نقطة نهاية API
export SNYK_API=https://api.snyk.io

# تعيين شهادة CA مخصصة
export NODE_EXTRA_CA_CERTS=/path/to/ca.crt

# تعطيل التحقق من SSL (استخدم بحذر)
export NODE_TLS_REJECT_UNAUTHORIZED=0

ملف سياسة .snyk

# ملف .snyk لتجاهل الثغرات
version: v1.25.0
ignore:
  SNYK-JS-123456:
    - '*':
        reason: False positive
        expires: 2026-04-30
  SNYK-PY-789012:
    - '*':
        reason: Not applicable to our use case
        expires: 2026-06-30
patch:
  SNYK-JS-111111:
    - '*':
        patched: '2024-03-15'

التصفية والتنظيم

تصفية الثغرات

# تضمين الثغرات التي لم يتم إصلاحها
snyk test --show-vulnerable-paths

# عرض الثغرات القابلة للإصلاح فقط
snyk test --show-vulnerable-paths=false

# التصفية حسب المشروع
snyk test --project-name=<name>

# التصفية حسب التصنيفات
snyk monitor --tags=team:backend,env:prod

سياق المنظمة

# الاختبار ضمن منظمة محددة
snyk test --org=<org-id>

# تعيين المنظمة الافتراضية
snyk config set org=<org-id>

# عرض معرف المنظمة
snyk org

# قائمة المنظمات
snyk org list

التكامل مع CI/CD

GitHub Actions

# .github/workflows/snyk.yml
name: Snyk Security Scan
on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

jobs:
  snyk:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: snyk/actions/setup@master
      - env:
          SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
        run: snyk test --severity-threshold=high

      - name: Upload SARIF
        uses: github/codeql-action/upload-sarif@v2
        with:
          sarif_file: results.sarif

GitLab CI

# .gitlab-ci.yml
snyk_scan:
  image: snyk/snyk:latest
  script:
    - snyk auth --token $SNYK_TOKEN
    - snyk test --severity-threshold=high --json > results.json
  artifacts:
    reports:
      sast: results.json

Jenkins Pipeline

pipeline {
    agent any
    environment {
        SNYK_TOKEN = credentials('snyk-token')
    }
    stages {
        stage('Snyk Test') {
            steps {
                sh 'npm install -g snyk'
                sh 'snyk auth $SNYK_TOKEN'
                sh 'snyk test --severity-threshold=high --json > results.json'
            }
        }
    }
    post {
        always {
            publishHTML target: [
                reportDir: '.',
                reportFiles: 'results.json',
                reportName: 'Snyk Report'
            ]
        }
    }
}

مجموعات الأوامر المفيدة

سير عمل الفحص الشامل

# 1. المصادقة
snyk auth

# 2. فحص تبعيات المصادر المفتوحة
snyk test --severity-threshold=high

# 3. فحص الأكواد عن المشاكل الأمنية
snyk code test --severity-threshold=high

# 4. فحص الحاويات
snyk container test myapp:latest

# 5. فحص البنية التحتية كأكواد
snyk iac test terraform/

# 6. توليد SBOM
snyk sbom > sbom.json

# 7. إنشاء لقطة مراقبة
snyk monitor --org=<org-id>

سير عمل CI/CD

# تثبيت التبعيات
npm install

# المصادقة
snyk auth --token $SNYK_TOKEN

# تشغيل جميع الفحوصات مع عتبة صارمة
snyk test --severity-threshold=critical --fail-on=all
snyk code test --severity-threshold=critical
snyk container test $DOCKER_IMAGE --severity-threshold=critical

# توليد التقارير
snyk test --json > sca-results.json
snyk code test --sarif > code-results.sarif
snyk container test $IMAGE --json > container.json

# المراقبة المستمرة
snyk monitor --org=$SNYK_ORG --project-name=$CI_PROJECT_NAME

سير عمل الإصلاح والنشر

# اختبار الحالة الحالية
snyk test

# إصلاح الثغرات تلقائياً
snyk fix

# مراجعة التغييرات
git diff

# الاختبار بعد الإصلاح
snyk test

# الالتزام والدفع
git commit -am "chore: fix security vulnerabilities"
git push

التصحيح ومعالجة الأخطاء

وضع التصحيح

# إخراج مفصل للتصحيح
snyk test --verbose

# وضع التصحيح (تسجيل مفصل جداً)
snyk test --debug

# التحقق من المصادقة
snyk auth --debug

# التحقق من الحزم المثبتة
snyk test --print-deps

المشاكل الشائعة

# مسح الذاكرة المؤقتة
rm -rf ~/.snyk

# فرض إعادة المصادقة
snyk logout && snyk auth

# الاختبار دون تحميل النتائج
snyk test --skip-unresolved

# التحقق من إصدار Snyk CLI
snyk --version

# التحديث إلى أحدث إصدار
npm install -g snyk@latest

ملخص الاختبار

# عرض الملخص فقط
snyk test --quiet

# عد الثغرات
snyk test --json | jq '.vulnerabilities | length'

# الحصول على أعلى حدة
snyk test --json | jq '.metadata.severityHeader'

مرجع متغيرات البيئة

المتغيرالغرضمثال
SNYK_TOKENرمز المصادقة APIexport SNYK_TOKEN=abc123
SNYK_ORGمعرف المنظمة الافتراضيexport SNYK_ORG=org-id
SNYK_APIنقطة نهاية API مخصصةexport SNYK_API=https://custom.snyk.io
SNYK_INTEGRATION_NAMEمعرف التكامل في CI/CDexport SNYK_INTEGRATION_NAME=github-actions
NODE_EXTRA_CA_CERTSشهادة CA مخصصةexport NODE_EXTRA_CA_CERTS=/path/ca.crt
HTTP_PROXYإعدادات HTTP proxyexport HTTP_PROXY=http://proxy:8080
HTTPS_PROXYإعدادات HTTPS proxyexport HTTPS_PROXY=https://proxy:8080

أفضل الممارسات

الأمان

  • صادق دائماً برمز API آمن (لا تلتزم بالرموز)
  • استخدم --severity-threshold=critical في CI/CD الإنتاجي
  • حدّث Snyk CLI بانتظام إلى أحدث إصدار
  • راجع وافذمّن الإصلاحات التلقائية قبل الدمج
  • احفظ ملفات سياسة .snyk تحت التحكم في الإصدار
  • استخدم سياسات على مستوى المنظمة لضمان الاتساق
  • راقب الثغرات بشكل مستمر باستخدام snyk monitor

الأداء

  • استخدم علامة --quiet في CI/CD لتقليل الإخراج
  • خزّن التبعيات بين التشغيلات حيث أمكن
  • قم بتشغيل فحوصات الحاويات على علامات محددة وليس على الجميع
  • استخدم --skip-unresolved لتخطي المشاكل التي لا يمكن إصلاحها
  • صفّ حسب الحدة للتركيز على المشاكل التي يمكن تنفيذها
  • فحص المسارات المتأثرة فقط إن أمكن

سير العمل

  • تكامل مع فحوصات PR لمنع دمج الأكواد غير الآمنة
  • استخدم snyk fix لأتمتة الإصلاح
  • راجع قرارات snyk ignore قبل الالتزام
  • استخدم snyk monitor للمراقبة المستمرة
  • إعداد تنبيهات للثغرات الجديدة
  • توثيق الاستثناءات بالأسباب وتواريخ انتهاء الصلاحية
  • مراجعة دورية للثغرات المتجاهلة

الموارد

التوثيق الرسمي

المجتمع والدعم

الأدوات ذات الصلة

  • Docker - تكامل فحص الحاويات
  • Kubernetes - فحص IaC لـ K8s
  • Terraform - أمان البنية التحتية كأكواد

آخر تحديث: 2026-03-30