Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
trivy-action — يشغّل Trivy كإجراء GitHub لفحص صورة حاوية Docker الخاصة بك بحثًا عن الثغرات الأمنية. | Kitploit
أدوات/GitHubGitHub/aquasecurity/trivy-action
ماسحات الثغرات الأمنيةأمن الحاوياتتحليل الكودأمن السحابةDevSecOpsكشف الأسرارأمن سلسلة التوريدسوء التكوين
GitHubaquasecurity/trivy-action

trivy-action

يشغّل Trivy كإجراء GitHub لفحص صورة حاوية Docker الخاصة بك بحثًا عن الثغرات الأمنية.

عرض المستودع
1.4k35710منذ 26 أيامتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

Trivy Action

GitHub Action لـ Trivy

[![GitHub Release][release-img]][release] [![GitHub Marketplace][marketplace-img]][marketplace] [![License][license-img]][license]

جدول المحتويات

  • الاستخدام
    • فحص خط أنابيب CI
    • فحص خط أنابيب CI (مع إعدادات ترايفي)
    • ذاكرة التخزين المؤقت
    • إعداد ترايفي
    • فحص ملف Tarball
    • استخدام ترايفي مع القوالب
    • استخدام ترايفي مع فحص كود GitHub
    • استخدام ترايفي لفحص مستودع Git الخاص بك
    • استخدام ترايفي لفحص أدلة rootfs الخاصة بك
    • استخدام ترايفي لفحص البنية التحتية ككود (IaC)
    • استخدام ترايفي لتوليد SBOM
    • استخدام ترايفي لفحص السجل الخاص بك
    • استخدام ترايفي إذا لم تكن ميزة فحص الكود مفعّلة لديك
  • التخصيص
    • المدخلات
    • متغيرات البيئة
  • ملف إعدادات ترايفي
  • الاستخدام

    فحص خط أنابيب CI```yaml

    name: build on: push: branches: - main pull_request: jobs: build: name: Build runs-on: ubuntu-24.04 steps: - name: Checkout code uses: actions/checkout@v4 - name: Build an image from Dockerfile run: docker build -t docker.io/my-organization/my-app:${{ github.sha }} . - name: Run Trivy vulnerability scanner uses: aquasecurity/[email protected] with: image-ref: 'docker.io/my-organization/my-app:${{ github.sha }}' format: 'table' exit-code: '1' ignore-unfixed: true vuln-type: 'os,library' severity: 'CRITICAL,HIGH'

    root@kitploit:~
    ### فحص خط أنابيب CI (مع إعداد Trivy)```yaml
    name: build
    on:
      push:
        branches:
        - main
      pull_request:
    jobs:
      build:
        name: Build
        runs-on: ubuntu-24.04
        steps:
        - name: Checkout code
          uses: actions/checkout@v4
    
        - name: Run Trivy vulnerability scanner in fs mode
          uses: aquasecurity/[email protected]
          with:
            scan-type: 'fs'
            scan-ref: '.'
            trivy-config: trivy.yaml
    

    في هذه الحالة، trivy.yaml هو إعداد YAML يتم تضمينه كجزء من المستودع. تتوفر معلومات مفصلة على موقع Trivy الإلكتروني، لكن مثال على ذلك كما يلي:```yaml format: json exit-code: 1 severity: CRITICAL secret: config: config/trivy/secret.yaml

    root@kitploit:~
    من الممكن تعريف جميع الخيارات في ملف `trivy.yaml`. يُترك تحديد الخيارات الفردية عبر الإجراء لأغراض التوافق مع الإصدارات السابقة. يلزم تعريف ما يلي لأنه لا يمكن تعريفه عبر ملف الإعدادات:
    - `scan-ref`: إذا كنت تستخدم عمليات الفحص `fs, repo`.
    - `image-ref`: إذا كنت تستخدم فحص `image`.
    - `scan-type`: لتحديد نوع الفحص، مثل `image`, `fs`, `repo`، إلخ.
    
    #### ترتيب الأولوية للخيارات
    يستخدم Trivy [Viper](https://github.com/spf13/viper) الذي يحدد ترتيب أولويات معرّف للخيارات. الترتيب كالتالي:
    - علامة GitHub Action
    - متغير البيئة
    - ملف الإعدادات
    - الافتراضي
    
    ### ذاكرة التخزين المؤقت
    يحتوي الإجراء على وظيفة مدمجة للتخزين المؤقت والاستعادة لـ [قاعدة بيانات الثغرات](https://github.com/aquasecurity/trivy-db) و[قاعدة بيانات جافا](https://github.com/aquasecurity/trivy-java-db) و[حزمة الفحوصات](https://github.com/aquasecurity/trivy-checks) إذا تم تنزيلها أثناء الفحص.
    يتم تخزين ذاكرة التخزين المؤقت في دليل `$GITHUB_WORKSPACE/.cache/trivy` افتراضيًا.
    يتم استعادة ذاكرة التخزين المؤقت قبل بدء الفحص وحفظها بعد انتهاء الفحص.
    
    يستخدم [actions/cache](https://github.com/actions/cache) داخليًا ولكنه يتطلب إعدادات تكوين أقل.
    مدخل `cache` اختياري، والتخزين المؤقت مفعّل افتراضيًا.
    
    #### تعطيل التخزين المؤقت
    إذا كنت تريد تعطيل التخزين المؤقت، اضبط مدخل `cache` على `false`، لكننا نوصي بإبقائه مفعّلاً لتجنب مشكلات الحد من المعدل.```yaml
        - name: Run Trivy scanner without cache
          uses: aquasecurity/[email protected]
          with:
            scan-type: 'fs'
            scan-ref: '.'
            cache: 'false'
    

    تحديث التخزين المؤقت في الفرع الافتراضي

    يرجى ملاحظة أن هناك قيودًا على الوصول إلى التخزين المؤقت بين الفروع في GitHub Actions. افتراضيًا، يمكن لسير العمل الوصول إلى التخزين المؤقت الذي تم إنشاؤه في الفرع الحالي أو الفرع الافتراضي (عادةً main أو master) واستعادته. إذا كنت بحاجة إلى مشاركة التخزين المؤقت عبر الفروع، فقد تحتاج إلى إنشاء تخزين مؤقت في الفرع الافتراضي واستعادته في الفرع الحالي.

    لتحسين سير العمل لديك، يمكنك إعداد مهمة مجدولة (cron job) لتحديث التخزين المؤقت في الفرع الافتراضي بانتظام. يتيح ذلك للفحوصات اللاحقة استخدام قاعدة البيانات المخزنة مؤقتًا دون تنزيلها مرة أخرى.```yaml

    Note: This workflow only updates the cache. You should create a separate workflow for your actual Trivy scans.

    In your scan workflow, set TRIVY_SKIP_DB_UPDATE=true and TRIVY_SKIP_JAVA_DB_UPDATE=true.

    name: Update Trivy Cache

    on: schedule: - cron: '0 0 * * *' # Run daily at midnight UTC workflow_dispatch: # Allow manual triggering

    jobs: update-trivy-db: runs-on: ubuntu-latest steps: - name: Setup oras uses: oras-project/setup-oras@v1

    root@kitploit:~
      - name: Get current date
        id: date
        run: echo "date=$(date +'%Y-%m-%d')" >> $GITHUB_OUTPUT
    
      - name: Download and extract the vulnerability DB
        run: |
          mkdir -p $GITHUB_WORKSPACE/.cache/trivy/db
          oras pull ghcr.io/aquasecurity/trivy-db:2
          tar -xzf db.tar.gz -C $GITHUB_WORKSPACE/.cache/trivy/db
          rm db.tar.gz
    
      - name: Download and extract the Java DB
        run: |
          mkdir -p $GITHUB_WORKSPACE/.cache/trivy/java-db
          oras pull ghcr.io/aquasecurity/trivy-java-db:1
          tar -xzf javadb.tar.gz -C $GITHUB_WORKSPACE/.cache/trivy/java-db
          rm javadb.tar.gz
    
      - name: Cache DBs
        uses: actions/cache/save@v4
        with:
          path: ${{ github.workspace }}/.cache/trivy
          key: cache-trivy-${{ steps.date.outputs.date }}
    
    root@kitploit:~
    عند تشغيل فحص، قم بتعيين متغيرات البيئة `TRIVY_SKIP_DB_UPDATE` و`TRIVY_SKIP_JAVA_DB_UPDATE` لتخطي عملية التنزيل.```yaml
        - name: Run Trivy scanner without downloading DBs
          uses: aquasecurity/[email protected]
          with:
            scan-type: 'image'
            scan-ref: 'myimage'
          env:
            TRIVY_SKIP_DB_UPDATE: true
            TRIVY_SKIP_JAVA_DB_UPDATE: true
    

    إعداد Trivy

    افتراضيًا، يستدعي الإجراء aquasecurity/setup-trivy كخطوة أولى، والذي يقوم بتثبيت إصدار trivy المحدد عبر الإدخال version. إذا كنت قد ثبّتّ trivy بالفعل بوسائل أخرى، على سبيل المثال باستدعاء aquasecurity/setup-trivy مباشرة، أو كنت تستدعي هذا الإجراء عدة مرات، فيمكنك استخدام الإدخال skip-setup-trivy لتعطيل هذه الخطوة.

    إعداد Trivy يدويًا```yaml

    name: build on: push: branches: - main pull_request: jobs: build: name: Build runs-on: ubuntu-24.04 steps: - name: Checkout code uses: actions/checkout@v4

    root@kitploit:~
    - name: Manual Trivy Setup
      uses: aquasecurity/[email protected]
      with:
        cache: true
        version: v0.72.0
    
    - name: Run Trivy vulnerability scanner in repo mode
      uses: aquasecurity/[email protected]
      with:
        scan-type: 'fs'
        ignore-unfixed: true
        format: 'sarif'
        output: 'trivy-results.sarif'
        severity: 'CRITICAL'
        skip-setup-trivy: true
    
    root@kitploit:~
    #### تخطي الإعداد عند استدعاء Trivy Action عدة مرات
    حالة استخدام شائعة أخرى هي عندما يستدعي بناء هذا الإجراء عدة مرات، وفي هذه الحالة يمكننا تعيين `skip-setup-trivy` إلى 
    `true` في الاستدعاءات اللاحقة على سبيل المثال.```yaml
    name: build
    
    on:
      push:
        branches:
          - main
      pull_request:
    
    jobs:
      test:
        runs-on: ubuntu-latest
        permissions:
          contents: read
        steps:
          - name: Check out Git repository
            uses: actions/checkout@v4
    
          # The first call to the action will invoke setup-trivy and install trivy
          - name: Generate Trivy Vulnerability Report
            uses: aquasecurity/[email protected]
            with:
              scan-type: "fs"
              output: trivy-report.json
              format: json
              scan-ref: .
              exit-code: 0
    
          - name: Upload Vulnerability Scan Results
            uses: actions/upload-artifact@v4
            with:
              name: trivy-report
              path: trivy-report.json
              retention-days: 30
    
          - name: Fail build on High/Criticial Vulnerabilities
            uses: aquasecurity/[email protected]
            with:
              scan-type: "fs"
              format: table
              scan-ref: .
              severity: HIGH,CRITICAL
              ignore-unfixed: true
              exit-code: 1
              # On a subsequent call to the action we know trivy is already installed so can skip this
              skip-setup-trivy: true
    

    استخدم رمزًا غير افتراضي لتثبيت Trivy

    يستخدم GitHub Enterprise Server (GHES) رمز github.token غير صالح لخادم https://github.com. لذلك، لا يمكنك تثبيت Trivy باستخدام إجراء setup-trivy.

    لإصلاح هذه المشكلة، تحتاج إلى استبدال الرمز المميز لـ setup-trivy باستخدام إدخال token-setup-trivy:```yaml - name: Run Trivy scanner without cache uses: aquasecurity/[email protected] with: scan-type: 'fs' scan-ref: '.' token-setup-trivy: ${{ secrets.GITHUB_PAT }}

    root@kitploit:~
    لدى GitHub أيضًا [create-github-app-token](https://github.com/actions/create-github-app-token) لحالات مماثلة.
    
    ### فحص Tarball```yaml
    name: build
    on:
      push:
        branches:
        - main
      pull_request:
    jobs:
      build:
        name: Build
        runs-on: ubuntu-24.04
        steps:
        - name: Checkout code
          uses: actions/checkout@v4
    
        - name: Generate tarball from image
          run: |
            docker pull <your-docker-image>
            docker save -o vuln-image.tar <your-docker-image>
    
        - name: Run Trivy vulnerability scanner in tarball mode
          uses: aquasecurity/[email protected]
          with:
            input: /github/workspace/vuln-image.tar
            severity: 'CRITICAL,HIGH'
    

    استخدام Trivy مع القوالب

    يدعم الإجراء [قوالب Trivy][trivy-templates].

    استخدم مدخل template لتحديد المسار (تذكر أن تسبق المسار بـ @) إلى ملف القالب.```yaml name: build on: push: branches: - main pull_request: jobs: build: name: Build runs-on: ubuntu-24.04 steps: - name: Checkout code uses: actions/checkout@v4

    root@kitploit:~
      - name: Run Trivy vulnerability scanner
        uses: aquasecurity/[email protected]
        with:
          scan-type: "fs"
          scan-ref: .
          format: 'template'
          template: "@path/to/my_template.tpl"
    
    root@kitploit:~
    #### القوالب الافتراضية
    لدى Trivy [قوالب افتراضية][trivy-default-templates].
    
    افتراضيًا، يقوم `setup-trivy` بتثبيتها في دليل `$HOME/.local/bin/trivy-bin/contrib`.```yaml
    name: build
    on:
      push:
        branches:
          - main
      pull_request:
    jobs:
      build:
        name: Build
        runs-on: ubuntu-24.04
        steps:
          - name: Checkout code
            uses: actions/checkout@v4
    
          - name: Run Trivy vulnerability scanner
            uses: aquasecurity/[email protected]
            with:
              scan-type: "fs"
              scan-ref: .
              format: 'template'
              template: "@$HOME/.local/bin/trivy-bin/contrib/html.tpl"
    

    استخدام Trivy مع GitHub Code Scanning

    إذا كان لديك GitHub code scanning متاحًا، يمكنك استخدام Trivy كأداة فحص كما يلي:```yaml name: build on: push: branches: - main pull_request: jobs: build: name: Build runs-on: ubuntu-24.04 permissions: contents: read # Required to checkout and read repo files security-events: write # Required to upload SARIF files to Security tab steps: - name: Checkout code uses: actions/checkout@v4

    root@kitploit:~
      - name: Build an image from Dockerfile
        run: |
          docker build -t docker.io/my-organization/my-app:${{ github.sha }} .
    
      - name: Run Trivy vulnerability scanner
        uses: aquasecurity/[email protected]
        with:
          image-ref: 'docker.io/my-organization/my-app:${{ github.sha }}'
          format: 'sarif'
          output: 'trivy-results.sarif'
    
      - name: Upload Trivy scan results to GitHub Security tab
        uses: github/codeql-action/upload-sarif@v4
        with:
          sarif_file: 'trivy-results.sarif'
    
    root@kitploit:~
    يمكنك العثور على مثال أكثر تفصيلاً هنا: https://github.com/aquasecurity/trivy-sarif-demo/blob/master/.github/workflows/scan.yml
    
    إذا كنت تريد رفع نتائج SARIF إلى GitHub Code scanning حتى عند وجود رمز خروج غير صفري من فحص Trivy، يمكنك إضافة ما يلي إلى خطوة الرفع الخاصة بك:```yaml
    name: build
    on:
      push:
        branches:
          - main
      pull_request:
    jobs:
      build:
        name: Build
        runs-on: ubuntu-24.04
        permissions:
          contents: read          # Required to checkout and read repo files
          security-events: write  # Required to upload SARIF files to Security tab
        steps:
          - name: Checkout code
            uses: actions/checkout@v4
    
          - name: Build an image from Dockerfile
            run: |
              docker build -t docker.io/my-organization/my-app:${{ github.sha }} .
    
          - name: Run Trivy vulnerability scanner
            uses: aquasecurity/[email protected]
            with:
              image-ref: 'docker.io/my-organization/my-app:${{ github.sha }}'
              format: 'sarif'
              output: 'trivy-results.sarif'
    
          - name: Upload Trivy scan results to GitHub Security tab
            uses: github/codeql-action/upload-sarif@v4
            if: always()
            with:
              sarif_file: 'trivy-results.sarif'
    

    انظر هذا لمزيد من التفاصيل: https://docs.github.com/en/actions/learn-github-actions/expressions#always

    استخدام Trivy لفحص مستودع Git الخاص بك

    من الممكن أيضًا فحص مستودعات Git الخاصة بك باستخدام فحص المستودعات المدمج في Trivy. يمكن أن يكون هذا مفيدًا إذا كنت تريد تشغيل Trivy كفحص في وقت البناء لكل PR يُفتح في مستودعك. يساعدك هذا في تحديد الثغرات الأمنية المحتملة التي قد تُدخل مع كل PR.

    إذا كان لديك فحص أكواد GitHub متاحًا، يمكنك استخدام Trivy كأداة فحص على النحو التالي:```yaml name: build on: push: branches: - main pull_request: jobs: build: name: Build runs-on: ubuntu-24.04 permissions: contents: read # Required to checkout and read repo files security-events: write # Required to upload SARIF files to Security tab steps: - name: Checkout code uses: actions/checkout@v4

    root@kitploit:~
      - name: Run Trivy vulnerability scanner in repo mode
        uses: aquasecurity/[email protected]
        with:
          scan-type: 'fs'
          ignore-unfixed: true
          format: 'sarif'
          output: 'trivy-results.sarif'
          severity: 'CRITICAL'
    
      - name: Upload Trivy scan results to GitHub Security tab
        uses: github/codeql-action/upload-sarif@v4
        with:
          sarif_file: 'trivy-results.sarif'
    
    root@kitploit:~
    ### استخدام Trivy لفحص أدلة rootfs الخاصة بك
    من الممكن أيضًا فحص أدلة rootfs باستخدام ميزة الفحص المدمجة في Trivy. قد يكون هذا مفيدًا إذا كنت تريد تشغيل Trivy كفحص في وقت البناء لكل PR يتم فتحه في مستودعك. يساعدك هذا في تحديد الثغرات الأمنية المحتملة التي قد يتم إدخالها مع كل PR.
    
    إذا كان [فحص كود GitHub](https://docs.github.com/en/github/finding-security-vulnerabilities-and-errors-in-your-code/about-code-scanning) متاحًا لديك، يمكنك استخدام Trivy كأداة فحص على النحو التالي:```yaml
    name: build
    on:
      push:
        branches:
          - main
      pull_request:
    jobs:
      build:
        name: Build
        runs-on: ubuntu-24.04
        permissions:
          contents: read          # Required to checkout and read repo files
          security-events: write  # Required to upload SARIF files to Security tab
        steps:
          - name: Checkout code
            uses: actions/checkout@v4
    
          - name: Run Trivy vulnerability scanner with rootfs command
            uses: aquasecurity/[email protected]
            with:
              scan-type: 'rootfs'
              scan-ref: 'rootfs-example-binary'
              ignore-unfixed: true
              format: 'sarif'
              output: 'trivy-results.sarif'
              severity: 'CRITICAL'
    
          - name: Upload Trivy scan results to GitHub Security tab
            uses: github/codeql-action/upload-sarif@v4
            with:
              sarif_file: 'trivy-results.sarif'
    

    استخدام Trivy لفحص البنية التحتية ككود

    من الممكن أيضًا فحص مستودعات IaC الخاصة بك باستخدام فحص المستودعات المدمج في Trivy. يمكن أن يكون هذا مفيدًا إذا أردت تشغيل Trivy كفحص في وقت البناء لكل PR يتم فتحه في مستودعك. يساعدك هذا في تحديد الثغرات المحتملة التي قد يتم إدخالها مع كل PR. إذا كان لديك GitHub code scanning متاحًا، يمكنك استخدام Trivy كأداة فحص كما يلي:```yaml name: build on: push: branches: - main pull_request: jobs: build: name: Build runs-on: ubuntu-24.04 permissions: contents: read # Required to checkout and read repo files security-events: write # Required to upload SARIF files to Security tab steps: - name: Checkout code uses: actions/checkout@v4

    root@kitploit:~
      - name: Run Trivy vulnerability scanner in IaC mode
        uses: aquasecurity/[email protected]
        with:
          scan-type: 'config'
          hide-progress: true
          format: 'sarif'
          output: 'trivy-results.sarif'
          exit-code: '1'
          severity: 'CRITICAL,HIGH'
    
      - name: Upload Trivy scan results to GitHub Security tab
        if: always()
        uses: github/codeql-action/upload-sarif@v4
        with:
          sarif_file: 'trivy-results.sarif'
    
    root@kitploit:~
    **ملاحظة**: إذا كان تكوين Terraform الخاص بك يحتوي على وحدات خاصة، فقم بإعداد Git للمصادقة مع المستودع الذي يستضيفها.
    يمكن القيام بذلك عن طريق إضافة خطوة في سير عمل CI الخاص بك تعمل على إعداد الوصول، على سبيل المثال باستخدام رمز وصول شخصي (PAT) أو مفاتيح SSH:```yaml
    - name: Configure Git for private modules
      run: |
        git config --global url."https://$GITHUB_USER:[email protected]/".insteadOf "https://github.com/"
      env:
        GITHUB_USER: ${{ github.actor }}
        PRIVATE_REPO_TOKEN: ${{ secrets.PRIVATE_REPO_TOKEN }}
    

    يضمن هذا أن يتمكن Trivy من تنزيل الوحدات الخاصة.

    استخدام Trivy لإنشاء SBOM

    من الممكن أن يقوم Trivy بإنشاء SBOM لاعتمادياتك وإرسالها إلى مستهلك مثل GitHub Dependency Graph.

    ميزة إرسال SBOM إلى GitHub متاحة فقط إذا كان لديك حاليًا GitHub Dependency Graph مفعّلًا في مستودعك.

    لإرسال النتائج إلى GitHub Dependency Graph، ستحتاج إلى إنشاء GitHub PAT أو استخدام رمز وصول التثبيت الخاص بـ GitHub (يُعرف أيضًا باسم GITHUB_TOKEN):```yaml

    name: Generate SBOM on: push: branches: - main

    GITHUB_TOKEN authentication, add only if you're not going to use a PAT

    permissions: contents: write

    jobs: generate-sbom: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4

    root@kitploit:~
      - name: Run Trivy in GitHub SBOM mode and submit results to Dependency Graph
        uses: aquasecurity/[email protected]
        with:
          scan-type: 'fs'
          format: 'github'
          output: 'dependency-results.sbom.json'
          scan-ref: '.'
          github-pat: ${{ secrets.GITHUB_TOKEN }} # or ${{ secrets.github_pat_name }} if you're using a PAT
    
    root@kitploit:~
    عند فحص الصور، قد ترغب في تحليل JSON الناتج الفعلي لأن GitHub Dependency لا تعرض كل التفاصيل مثل مسار الملف لكل تبعية على سبيل المثال.
    
    يمكنك رفع التقرير كـ artifact وتنزيله، على سبيل المثال باستخدام [إجراء upload-artifact](https://github.com/actions/upload-artifact):```yaml
    ---
    name: Generate SBOM
    on:
      push:
        branches:
        - main
    
    ## GITHUB_TOKEN authentication, add only if you're not going to use a PAT
    permissions:
      contents: write
    
    jobs:
      generate-sbom:
        runs-on: ubuntu-latest
        steps:
          - name: Scan image in a private registry
            uses: aquasecurity/[email protected]
            with:
              image-ref: "private_image_registry/image_name:image_tag"
              scan-type: image
              format: 'github'
              output: 'dependency-results.sbom.json'
              github-pat: ${{ secrets.GITHUB_TOKEN }} # or ${{ secrets.github_pat_name }} if you're using a PAT
              severity: "MEDIUM,HIGH,CRITICAL"
              scanners: "vuln"
            env:
              TRIVY_USERNAME: "image_registry_admin_username"
              TRIVY_PASSWORD: "image_registry_admin_password"
    
          - name: Upload trivy report as a Github artifact
            uses: actions/upload-artifact@v4
            with:
              name: trivy-sbom-report
              path: '${{ github.workspace }}/dependency-results.sbom.json'
              retention-days: 20 # 90 is the default
    

    استخدام Trivy لفحص السجل الخاص بك

    من الممكن أيضًا فحص السجل الخاص بك باستخدام فحص الصور المدمج في Trivy. كل ما عليك فعله هو تعيين متغيرات البيئة.

    سجل Docker Hub

    يتطلب Docker Hub تعيين TRIVY_USERNAME و TRIVY_PASSWORD. لا تحتاج إلى تعيين متغيرات البيئة عند التنزيل من مستودع عام.```yaml name: build on: push: branches: - main pull_request: jobs: build: name: Build runs-on: ubuntu-24.04 permissions: contents: read # Required to checkout and read repo files security-events: write # Required to upload SARIF results to the GitHub Security tab steps: - name: Checkout code uses: actions/checkout@v4

    root@kitploit:~
      - name: Run Trivy vulnerability scanner
        uses: aquasecurity/[email protected]
        with:
          image-ref: 'docker.io/my-organization/my-app:${{ github.sha }}'
          format: 'sarif'
          output: 'trivy-results.sarif'
        env:
          TRIVY_USERNAME: Username
          TRIVY_PASSWORD: Password
    
      - name: Upload Trivy scan results to GitHub Security tab
        uses: github/codeql-action/upload-sarif@v4
        with:
          sarif_file: 'trivy-results.sarif'
    
    root@kitploit:~
    #### AWS ECR (Elastic Container Registry)
    يستخدم Trivy AWS SDK. لا تحتاج إلى تثبيت أداة سطر الأوامر `aws`.
    يمكنك استخدام [متغيرات البيئة الخاصة بـ AWS CLI][env-var].
    
    [env-var]: https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-envvars.html%60%60%60yaml
    name: build
    on:
      push:
        branches:
          - main
      pull_request:
    jobs:
      build:
        name: Build
        runs-on: ubuntu-24.04
        permissions:
          contents: read          # Required to checkout and read repo files
          security-events: write  # Required to upload SARIF files to Security tab
        steps:
          - name: Checkout code
            uses: actions/checkout@v4
    
          - name: Run Trivy vulnerability scanner
            uses: aquasecurity/[email protected]
            with:
              image-ref: 'aws_account_id.dkr.ecr.region.amazonaws.com/imageName:${{ github.sha }}'
              format: 'sarif'
              output: 'trivy-results.sarif'
            env:
              AWS_ACCESS_KEY_ID: key_id
              AWS_SECRET_ACCESS_KEY: access_key
              AWS_DEFAULT_REGION: us-west-2
    
          - name: Upload Trivy scan results to GitHub Security tab
            uses: github/codeql-action/upload-sarif@v4
            with:
              sarif_file: 'trivy-results.sarif'
    

    GCR (Google Container Registry)

    يستخدم Trivy Google Cloud SDK. لا تحتاج إلى تثبيت أمر gcloud.

    إذا كنت تريد استخدام مستودع المشروع الهدف، يمكنك تعيينه عبر GOOGLE_APPLICATION_CREDENTIALS.```yaml name: build on: push: branches: - main pull_request: jobs: build: name: Build runs-on: ubuntu-24.04 permissions: contents: read # Required to checkout and read repo files security-events: write # Required to upload SARIF files to Security tab steps: - name: Checkout code uses: actions/checkout@v4

    root@kitploit:~
      - name: Run Trivy vulnerability scanner
        uses: aquasecurity/[email protected]
        with:
          image-ref: 'docker.io/my-organization/my-app:${{ github.sha }}'
          format: 'sarif'
          output: 'trivy-results.sarif'
        env:
          GOOGLE_APPLICATION_CREDENTIALS: /path/to/credential.json
    
      - name: Upload Trivy scan results to GitHub Security tab
        uses: github/codeql-action/upload-sarif@v4
        with:
          sarif_file: 'trivy-results.sarif'
    
    root@kitploit:~
    #### استضافة ذاتية
    خادم BasicAuth يحتاج إلى `TRIVY_USERNAME` و`TRIVY_PASSWORD`.
    إذا كنت تريد استخدام المنفذ 80، استخدم NonSSL `TRIVY_NON_SSL=true````yaml
    name: build
    on:
      push:
        branches:
          - main
      pull_request:
    jobs:
      build:
        name: Build
        runs-on: ubuntu-24.04
        permissions:
          contents: read          # Required to checkout and read repo files
          security-events: write  # Required to upload SARIF files to Security tab
        steps:
          - name: Checkout code
            uses: actions/checkout@v4
    
          - name: Run Trivy vulnerability scanner
            uses: aquasecurity/[email protected]
            with:
              image-ref: 'docker.io/my-organization/my-app:${{ github.sha }}'
              format: 'sarif'
              output: 'trivy-results.sarif'
            env:
              TRIVY_USERNAME: Username
              TRIVY_PASSWORD: Password
    
          - name: Upload Trivy scan results to GitHub Security tab
            uses: github/codeql-action/upload-sarif@v4
            with:
              sarif_file: 'trivy-results.sarif'
    

    استخدام Trivy إذا لم يكن فحص الكود مفعّلاً

    من الممكن أيضًا تصفّح نتيجة الفحص في ملخص سير العمل.

    هذه الخطوة مفيدة بشكل خاص للمستودعات الخاصة التي لا تملك ترخيص GitHub Advanced Security.```yaml

    • name: Run Trivy scanner uses: aquasecurity/[email protected] with: scan-type: config hide-progress: true output: trivy.txt

    • name: Publish Trivy Output to Summary run: | if [[ -s trivy.txt ]]; then { echo "### Security Output" echo "

      Click to expand" echo "" echo 'terraform' cat trivy.txt echo '' echo "
      " } >> $GITHUB_STEP_SUMMARY fi

    root@kitploit:~
    ## التخصيص
    
    أولوية التكوين:
    - [المدخلات](#inputs)
    - [متغيرات البيئة](#environment-variables)
    - [ملف إعداد Trivy](#trivy-config-file)
    - القيم الافتراضية
    
    
    ### inputs
    
    يمكن استخدام المدخلات التالية كمفاتيح `step.with`:
    
    | الاسم                         | النوع    | الافتراضي                            | الوصف                                                                                                                                                      |
    |------------------------------|---------|------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------|
    | `scan-type`                  | String  | `image`                            | نوع الفحص، مثل `image` أو `fs`                                                                                                                                  |
    | `input`                      | String  |                                    | مرجع Tar، مثل `alpine-latest.tar`                                                                                                                          |
    | `image-ref`                  | String  |                                    | مرجع الصورة، مثل `alpine:3.10.2`                                                                                                                            |
    | `scan-ref`                   | String  | `/github/workspace/`               | مرجع الفحص، مثل `/github/workspace/` أو `.`                                                                                                                 |
    | `format`                     | String  | `table`                            | تنسيق الإخراج (`table`, `json`, `template`, `sarif`, `cyclonedx`, `spdx`, `spdx-json`, `github`, `cosign-vuln`)                                                  |
    | `template`                   | String  |                                    | قالب الإخراج (`@$HOME/.local/bin/trivy-bin/contrib/gitlab.tpl`, `@$HOME/.local/bin/trivy-bin/contrib/junit.tpl`)                                              |
    | `tf-vars`                    | String  |                                    | المسار إلى ملف متغيرات Terraform                                                                                                                                 |
    | `output`                     | String  |                                    | حفظ النتائج إلى ملف                                                                                                                                           |
    | `exit-code`                  | String  | `0`                                | رمز الخروج عند العثور على الثغرات المحددة                                                                                                               |
    | `ignore-unfixed`             | Boolean | false                              | تجاهل الثغرات غير المُصححة/غير المُعالجة                                                                                                                         |
    | `vuln-type`                  | String  | `os,library`                       | أنواع الثغرات (os,library)                                                                                                                                 |
    | `severity`                   | String  | `UNKNOWN,LOW,MEDIUM,HIGH,CRITICAL` | درجات خطورة الثغرات التي سيتم فحصها وعرضها                                                                                                       |
    | `skip-dirs`                  | String  |                                    | قائمة مفصولة بفواصل بالدلائل التي يتم تخطي اجتيازها                                                                                                   |
    | `skip-files`                 | String  |                                    | قائمة مفصولة بفواصل بالملفات التي يتم تخطي اجتيازها                                                                                                         |
    | `cache-dir`                  | String  | `$GITHUB_WORKSPACE/.cache/trivy`   | دليل التخزين المؤقت. ملاحظة: لا يمكن ضبط هذه القيمة عبر `trivy.yaml`.                                                                                          |
    | `timeout`                    | String  | `5m0s`                             | مدة مهلة الفحص                                                                                                                                            |
    | `ignore-policy`              | String  |                                    | تصفية الثغرات باستخدام لغة OPA rego                                                                                                                    |
    | `hide-progress`              | String  | `false`                            | إخفاء شريط التقدم ومخرجات السجل                                                                                                                             |
    | `list-all-pkgs`              | String  |                                    | إخراج جميع الحزم بغض النظر عن وجود الثغرات                                                                                                                  |
    | `scanners`                   | String  | `vuln,secret`                      | قائمة مفصولة بفواصل بمسائل الأمان المراد اكتشافها (`vuln`,`secret`,`misconfig`,`license`)                                                                   |
    | `trivyignores`               | String  |                                    | قائمة مفصولة بفواصل بالمسارات النسبية داخل المستودع إلى ملف واحد أو أكثر من ملفات `.trivyignore`، أو ملف `.trivyignore.yaml` واحد.                          |
    | `trivy-config`               | String  |                                    | المسار إلى ملف إعداد trivy.yaml                                                                                                                                        |
    | `github-pat`                 | String  |                                    | رمز مصادقة لتمكين إرسال نتائج فحص SBOM إلى GitHub Dependency Graph. يمكن أن يكون إما GitHub Personal Access Token (PAT) أو GITHUB_TOKEN          |
    | `limit-severities-for-sarif` | Boolean | false                              | بشكل افتراضي يفرض تنسيق *SARIF* إخراج جميع الثغرات بغض النظر عن درجات الخطورة المُعدة. لتجاوز هذا السلوك اضبط هذه المعلمة على **true**   |
    | `docker-host`                | String  |                                    | بشكل افتراضي يتم تعيينه إلى `unix://var/run/docker.sock`، ولكن يمكن تحديثه للمساعدة مع البنية التحتية المعتمدة على الحاويات (يُشترط `unix:/` أو بادئة أخرى) |
    | `version`                    | String  | `v0.72.0`                          | إصدار Trivy المراد استخدامه، مثل `latest` أو `v0.72.0`                                                                                                                 |
    | `skip-setup-trivy`           | Boolean | false                              | تخطي استدعاء إجراء `setup-trivy` لتثبيت `trivy`                                                                                                         |
    | `token-setup-trivy`          | Boolean |                                    | استبدال `github.token` المستخدم بواسطة `setup-trivy` لسحب مستودع `trivy`                                                                                 |
    
    ### متغيرات البيئة
    يمكنك استخدام [متغيرات بيئة Trivy][trivy-env] لتعيين الخيارات الضرورية (بما في ذلك العلامات غير المدعومة بواسطة [المدخلات](#inputs)، مثل `--secret-config`).
    
    **ملاحظة:** في بعض الإصدارات الأقدم من الإجراء كان هناك خلل يتسبب في تسرب المدخلات من استدعاء واحد للإجراء 
    إلى الاستدعاءات اللاحقة للإجراء. قد يؤدي هذا إلى عدم إنتاج سير العمل الذي يستدعي الإجراء عدة مرات، مثل تشغيل 
    عمليات فحص متعددة، أو نفس عمليات الفحص بتنسيقات إخراج مختلفة، للمخرجات المطلوبة. يمكنك معرفة ما إذا كان الأمر
    كذلك من خلال الاطلاع على معلومات خطوة GitHub Actions، إذا كان قسم `env` المعروض في مخرجات Actions يحتوي على 
    متغيرات بيئة `TRIVY_*` لم تقم بتعيينها صراحةً، فقد تكون متأثرًا بهذا الخلل ويجب عليك 
    الترقية إلى أحدث إصدار من الإجراء.
    
    ### ملف إعداد Trivy
    عند استخدام [المدخلات](#inputs) `trivy-config`، يمكنك تعيين الخيارات باستخدام [ملف إعداد Trivy][trivy-config] (بما في ذلك العلامات غير المدعومة بواسطة [المدخلات](#inputs)، مثل `--secret-config`).
    
    [release]: https://github.com/aquasecurity/trivy-action/releases/latest
    [release-img]: https://img.shields.io/github/release/aquasecurity/trivy-action.svg?logo=github
    [marketplace]: https://github.com/marketplace/actions/aqua-security-trivy
    [marketplace-img]: https://img.shields.io/badge/marketplace-trivy--action-blue?logo=github
    [license]: https://raw.githubusercontent.com/aquasecurity/trivy-action/master/LICENSE
    [license-img]: https://img.shields.io/github/license/aquasecurity/trivy-action
    [trivy-env]: https://aquasecurity.github.io/trivy/latest/docs/configuration/#environment-variables
    [trivy-config]: https://aquasecurity.github.io/trivy/latest/docs/references/configuration/config-file/
    [trivy-templates]: https://aquasecurity.github.io/trivy/latest/docs/configuration/reporting/#template
    [trivy-default-templates]: https://aquasecurity.github.io/trivy/latest/docs/configuration/reporting/#template
    
    تنزيل الأداة