
يشغّل Trivy كإجراء GitHub لفحص صورة حاوية Docker الخاصة بك بحثًا عن الثغرات الأمنية.
[![GitHub Release][release-img]][release] [![GitHub Marketplace][marketplace-img]][marketplace] [![License][license-img]][license]

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'
### فحص خط أنابيب 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
من الممكن تعريف جميع الخيارات في ملف `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
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
- 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 }}
عند تشغيل فحص، قم بتعيين متغيرات البيئة `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
افتراضيًا، يستدعي الإجراء aquasecurity/setup-trivy كخطوة أولى،
والذي يقوم بتثبيت إصدار trivy المحدد عبر الإدخال version. إذا كنت قد ثبّتّ trivy بالفعل بوسائل أخرى،
على سبيل المثال باستدعاء aquasecurity/setup-trivy مباشرة، أو كنت تستدعي هذا الإجراء عدة مرات، فيمكنك استخدام
الإدخال skip-setup-trivy لتعطيل هذه الخطوة.
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: 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
#### تخطي الإعداد عند استدعاء 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
يستخدم 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 }}
لدى 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-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
- name: Run Trivy vulnerability scanner
uses: aquasecurity/[email protected]
with:
scan-type: "fs"
scan-ref: .
format: 'template'
template: "@path/to/my_template.tpl"
#### القوالب الافتراضية
لدى 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"
إذا كان لديك 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
with:
sarif_file: 'trivy-results.sarif'
يمكنك العثور على مثال أكثر تفصيلاً هنا: 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
من الممكن أيضًا فحص مستودعات 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
- 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'
### استخدام 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'
من الممكن أيضًا فحص مستودعات 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
- 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'
**ملاحظة**: إذا كان تكوين 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 لاعتمادياتك وإرسالها إلى مستهلك مثل GitHub Dependency Graph.
ميزة إرسال SBOM إلى GitHub متاحة فقط إذا كان لديك حاليًا GitHub Dependency Graph مفعّلًا في مستودعك.
GITHUB_TOKEN):```yamlname: Generate SBOM on: push: branches: - main
permissions: contents: write
jobs: generate-sbom: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4
- 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
عند فحص الصور، قد ترغب في تحليل 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. كل ما عليك فعله هو تعيين متغيرات البيئة.
يتطلب 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
- 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'
#### 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'
يستخدم 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
- 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'
#### استضافة ذاتية
خادم 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'
من الممكن أيضًا تصفّح نتيجة الفحص في ملخص سير العمل.
هذه الخطوة مفيدة بشكل خاص للمستودعات الخاصة التي لا تملك ترخيص 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 "
terraform' cat trivy.txt echo ''
echo "## التخصيص
أولوية التكوين:
- [المدخلات](#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