
مكون GitLab CI لفحص Trivy
مكون GitLab CI لأداة Trivy — الماسح الأمني الشامل الذي يغطي صور الحاويات، أنظمة الملفات، المستودعات، مجموعات Kubernetes، قوائم المواد البرمجية (SBOM)، والامتثال للتراخيص. قم بتوصيل هذه القوالب مباشرة في خطوط الأنابيب الخاصة بك للحصول على عمليات فحص قابلة للتكرار، تقارير أصلية في GitLab، وقطع أثرية محمولة دون الحاجة إلى نصوص برمجية تقريبًا.
include:
- component: $CI_SERVER_FQDN/niclas-zone/ci/trivy/main@latest
stages:
- test
include:
- component: $CI_SERVER_FQDN/niclas-zone/ci/trivy/main@latest
inputs:
job_name: "security:remote"
TRIVY_SCAN_REMOTE_IMAGE: "registry.gitlab.com/group/app:latest"
severity: "CRITICAL,HIGH,MEDIUM"
exit_on_vulnerability: true
stages:
- test
include:
- component: $CI_SERVER_FQDN/niclas-zone/ci/trivy/main@latest
inputs:
job_name: "security:local"
TRIVY_SCAN_LOCAL_IMAGES: "dist/"
TRIVY_SCANNERS: "vuln,secret"
exit_on_vulnerability: false
stages:
- test
يسرد كل قالب أدناه مدخلاتها المتاحة والقيم الافتراضية كما هو محدد في مواصفات المكون، متبوعًا بمثال عملي أدنى.
templates/main.ymlمثال
include:
- component: $CI_SERVER_FQDN/niclas-zone/ci/trivy/main@latest
inputs:
job_name: "trivy:basic"
TRIVY_SCAN_REMOTE_IMAGE: "nginx:latest"
templates/target_container.ymlمثال
include:
- component: $CI_SERVER_FQDN/niclas-zone/ci/trivy/target_container@latest
inputs:
job_name: "trivy:containers"
TRIVY_SCAN_REMOTE_IMAGE: "registry.gitlab.com/group/service:latest"
TRIVY_SCANNERS: "vuln,secret"
exit_on_vulnerability: true
templates/target_filesystem.ymlمثال
include:
- component: $CI_SERVER_FQDN/niclas-zone/ci/trivy/target_filesystem@latest
inputs:
TRIVY_FS_PATH: "services/api"
TRIVY_SCANNERS: "vuln,misconfig,secret"
templates/target_rootfs.ymlمثال
include:
- component: $CI_SERVER_FQDN/niclas-zone/ci/trivy/target_rootfs@latest
inputs:
TRIVY_ROOTFS_PATH: "/mnt/root"
TRIVY_SCANNERS: "vuln"
templates/target_repository.ymlمثال
include:
- component: $CI_SERVER_FQDN/niclas-zone/ci/trivy/target_repository@latest
inputs:
TRIVY_REPO_TARGET: "https://github.com/aquasecurity/trivy"
TRIVY_REPO_BRANCH: "main"
templates/target_vm.ymlمثال
include:
- component: $CI_SERVER_FQDN/niclas-zone/ci/trivy/target_vm@latest
inputs:
TRIVY_VM_TARGET: "ami-0123456789abcdef0"
TRIVY_AWS_REGION: "us-east-1"
templates/target_kubernetes.ymlمثال
include:
- component: $CI_SERVER_FQDN/niclas-zone/ci/trivy/target_kubernetes@latest
inputs:
TRIVY_K8S_OBJECT: "namespace/prod"
TRIVY_K8S_REPORT: "summary"
templates/scanner_iac_config.ymlمثال
include:
- component: $CI_SERVER_FQDN/niclas-zone/ci/trivy/scanner_iac_config@latest
inputs:
TRIVY_CONFIG_PATH: "examples/iac/terraform"
severity: "CRITICAL,HIGH,MEDIUM"
templates/scanner_license.ymlمثال
include:
- component: $CI_SERVER_FQDN/niclas-zone/ci/trivy/scanner_license@latest
inputs:
TRIVY_SCAN_LOCAL_IMAGES: "test.tar"
TRIVY_LICENSE_FULL: true
templates/sbom_generate_image.ymlمثال
include:
- component: $CI_SERVER_FQDN/niclas-zone/ci/trivy/sbom_generate_image@latest
inputs:
TRIVY_SBOM_INPUT: "test.tar"
TRIVY_SBOM_FILENAME: "ci-image-sbom.cdx.json"
templates/sbom_generate_repo.ymlمثال
include:
- component: $CI_SERVER_FQDN/niclas-zone/ci/trivy/sbom_generate_repo@latest
inputs:
TRIVY_REPO_TARGET: "."
TRIVY_SBOM_FORMAT: "spdx-json"
templates/sbom_generate_kbom.ymlمثال
include:
- component: $CI_SERVER_FQDN/niclas-zone/ci/trivy/sbom_generate_kbom@latest
inputs:
TRIVY_K8S_TARGET: "namespace/default"
scan_kbom: true
templates/sbom_scan_file.ymlمثال
include:
- component: $CI_SERVER_FQDN/niclas-zone/ci/trivy/sbom_scan_file@latest
inputs:
TRIVY_SBOM_PATH: "artifacts/trivy/ci-image-sbom.cdx.json"
TRIVY_SCANNERS: "vuln,license"
templates/sbom_scan_rekor.ymlمثال
include:
- component: $CI_SERVER_FQDN/niclas-zone/ci/trivy/sbom_scan_rekor@latest
inputs:
TRIVY_SCAN_REMOTE_IMAGE: "registry.gitlab.com/group/app@sha256:..."
TRIVY_REKOR_URL: "https://rekor.sigstore.dev"
| المدخل | الوصف | القيمة الافتراضية |
|---|
job_name | اسم وظيفة CI | "trivy scanning" |
stage | مرحلة خط الأنابيب | "test" |
image | صورة الحاوية التي تشغل Trivy | "ghcr.io/aquasecurity/trivy:0.68.1" |
TRIVY_NEEDED_STAGE | المرحلة التي يجب أن تكتمل قبل تشغيل Trivy | "build" |
TRIVY_SCAN_REMOTE_IMAGE | الصورة عن بعد المراد فحصها | "" |
TRIVY_SCAN_LOCAL_IMAGES | مسار إلى مدخلات tar/OCI (يبحث في . عند الفراغ) | "" |
TRIVY_SCANNERS | الماسحات مفصولة بفواصل | "vuln,secret,misconfig" |
severity | درجات الخطورة المطلوب تضمينها | "CRITICAL,HIGH" |
exit_on_vulnerability | فشل الوظيفة عند العثور على مشكلات | true |
TRIVY_EXTRA_ARGS | علامات CLI إضافية | "" |
allow_failure | السماح بفشل الوظيفة دون فشل خط الأنابيب | false |
| المدخل | الوصف | القيمة الافتراضية |
|---|
job_name | اسم وظيفة CI | "trivy:scan:containers" |
stage | مرحلة خط الأنابيب | "test" |
image | صورة حاوية Trivy | "ghcr.io/aquasecurity/trivy:0.68.1" |
TRIVY_SCAN_REMOTE_IMAGE | مرجع الصورة عن بعد | "" |
TRIVY_SCAN_LOCAL_IMAGES | دليل/tar للفحص المحلي | "" |
TRIVY_SCANNERS | الماسحات المفعلة | "vuln,secret,misconfig" |
TRIVY_IMAGE_SRC | مصدر خلفية الصورة (remote/docker/...) | "" |
severity | درجات الخطورة | "CRITICAL,HIGH" |
exit_on_vulnerability | الفشل عند تطابق درجة الخطورة | true |
TRIVY_IGNORE_UNFIXED | تجاهل المشكلات بدون إصلاحات | true |
TRIVY_PKG_TYPES | أنواع الحزم | "os,library" |
TRIVY_VULN_TYPE | اسم مستعار مهمل لأنواع الحزم | "" |
TRIVY_TIMEOUT | مهلة الأمر | "10m" |
TRIVY_EXTRA_ARGS | وسيطات CLI إضافية | "" |
TRIVY_DB_REPOSITORY | مرآة قاعدة بيانات مخصصة | "" |
TRIVY_JAVA_DB_REPOSITORY | مرآة قاعدة بيانات Java مخصصة | "" |
TRIVY_SKIP_FILES | استثناءات نمط glob للملفات | "" |
TRIVY_SKIP_DIRS | استثناءات الدلائل | "" |
allow_failure | السماح بالفشل دون فشل خط الأنابيب | false |
| المدخل | الوصف | القيمة الافتراضية |
|---|
job_name | اسم وظيفة CI | "trivy:scan:filesystem" |
stage | مرحلة خط الأنابيب | "test" |
image | صورة Trivy | "ghcr.io/aquasecurity/trivy:0.68.1" |
TRIVY_FS_PATH | الملف أو الدليل المراد فحصه | "." |
TRIVY_SCANNERS | الماسحات المفعلة | "vuln,secret" |
severity | درجات الخطورة | "CRITICAL,HIGH" |
exit_on_vulnerability | الفشل عند تطابق درجة الخطورة | true |
TRIVY_IGNORE_UNFIXED | تجاهل المشكلات غير المُصلحة | true |
TRIVY_PKG_TYPES | أنواع الحزم | "os,library" |
TRIVY_TIMEOUT | المهلة | "10m" |
TRIVY_SKIP_FILES | أنماط glob للملفات المراد تخطيها | "" |
TRIVY_SKIP_DIRS | الدلائل المراد تخطيها | "" |
TRIVY_EXTRA_ARGS | وسيطات CLI إضافية | "" |
TRIVY_REPORT_BASENAME | الاسم الأساسي للقطعة الأثرية | "filesystem-scan" |
allow_failure | السماح بفشل الوظيفة | false |
| المدخل | الوصف | القيمة الافتراضية |
|---|
job_name | اسم الوظيفة | "trivy:scan:rootfs" |
stage | المرحلة | "test" |
image | صورة Trivy | "ghcr.io/aquasecurity/trivy:0.68.1" |
TRIVY_ROOTFS_PATH | مسار نظام ملفات الجذر | "/" |
TRIVY_SCANNERS | الماسحات | "vuln,secret" |
severity | درجات الخطورة | "CRITICAL,HIGH" |
exit_on_vulnerability | فشل الوظيفة عند الاكتشافات | true |
TRIVY_IGNORE_UNFIXED | تجاهل غير المُصلح | true |
TRIVY_PKG_TYPES | أنواع الحزم | "os,library" |
TRIVY_TIMEOUT | المهلة | "10m" |
TRIVY_SKIP_FILES | الملفات المراد تخطيها | "" |
TRIVY_SKIP_DIRS | الدلائل المراد تخطيها | "" |
TRIVY_EXTRA_ARGS | وسيطات إضافية | "" |
TRIVY_REPORT_BASENAME | الاسم الأساسي للقطعة الأثرية | "rootfs-scan" |
allow_failure | السماح بالفشل | false |
| المدخل | الوصف | القيمة الافتراضية |
|---|
job_name | اسم الوظيفة | "trivy:scan:repo" |
stage | المرحلة | "test" |
image | صورة Trivy | "ghcr.io/aquasecurity/trivy:0.68.1" |
TRIVY_REPO_TARGET | مسار محلي أو رابط Git | "." |
TRIVY_REPO_BRANCH | الفرع عن بعد | "" |
TRIVY_REPO_COMMIT | هاش الالتزام | "" |
TRIVY_REPO_TAG | اسم العلامة | "" |
TRIVY_SCANNERS | الماسحات | "vuln,secret" |
severity | درجات الخطورة | "CRITICAL,HIGH" |
exit_on_vulnerability | فشل الوظيفة عند الاكتشافات | true |
TRIVY_IGNORE_UNFIXED | تجاهل غير المُصلح | true |
TRIVY_TIMEOUT | المهلة | "10m" |
TRIVY_SKIP_FILES | الملفات المراد تخطيها | "" |
TRIVY_SKIP_DIRS | الدلائل المراد تخطيها | "" |
TRIVY_EXTRA_ARGS | وسيطات إضافية | "" |
TRIVY_REPORT_BASENAME | الاسم الأساسي للقطعة الأثرية | "repo-scan" |
allow_failure | السماح بالفشل | false |
| المدخل | الوصف | القيمة الافتراضية |
|---|
job_name | اسم الوظيفة | "trivy:scan:vm" |
stage | المرحلة | "test" |
image | صورة Trivy | "ghcr.io/aquasecurity/trivy:0.68.1" |
TRIVY_VM_TARGET | مسار محلي أو معرف ami:/ebs: | "" |
TRIVY_AWS_REGION | منطقة AWS لفحص AMI/EBS | "" |
TRIVY_SCANNERS | الماسحات | "vuln" |
severity | درجات الخطورة | "CRITICAL,HIGH" |
exit_on_vulnerability | فشل الوظيفة عند الاكتشافات | true |
TRIVY_IGNORE_UNFIXED | تجاهل غير المُصلح | true |
TRIVY_TIMEOUT | المهلة | "20m" |
TRIVY_EXTRA_ARGS | وسيطات إضافية | "" |
TRIVY_REPORT_BASENAME | الاسم الأساسي للقطعة الأثرية | "vm-scan" |
allow_failure | السماح بالفشل | false |
| المدخل | الوصف | القيمة الافتراضية |
|---|
job_name | اسم الوظيفة | "trivy:scan:k8s" |
stage | المرحلة | "test" |
image | صورة Trivy | "ghcr.io/aquasecurity/trivy:0.68.1" |
TRIVY_K8S_OBJECT | النطاق (cluster, namespace/foo, إلخ) | "" |
TRIVY_K8S_REPORT | تفاصيل التقرير (summary/all) | "summary" |
TRIVY_K8S_KUBECONFIG | مسار kubeconfig مخصص | "" |
TRIVY_K8S_INCLUDE_NAMESPACES | مساحات الأسماء المراد تضمينها | "" |
TRIVY_K8S_EXCLUDE_NAMESPACES | مساحات الأسماء المراد استبعادها | "" |
TRIVY_K8S_INCLUDE_KINDS | الأنواع المراد تضمينها | "" |
TRIVY_K8S_EXCLUDE_KINDS | الأنواع المراد استبعادها | "" |
TRIVY_K8S_SKIP_IMAGES | تخطي فحص صور عبء العمل | false |
TRIVY_K8S_DISABLE_NODE_COLLECTOR | تعطيل جامع العقدة | false |
TRIVY_SCANNERS | الماسحات | "vuln,misconfig,secret" |
severity | درجات الخطورة | "CRITICAL,HIGH" |
exit_on_vulnerability | فشل الوظيفة عند الاكتشافات | true |
TRIVY_IGNORE_UNFIXED | تجاهل غير المُصلح | true |
TRIVY_TIMEOUT | المهلة | "15m" |
TRIVY_K8S_EXTRA_ARGS | وسيطات إضافية | "" |
TRIVY_REPORT_BASENAME | الاسم الأساسي للقطعة الأثرية | "k8s-scan" |
allow_failure | السماح بالفشل | false |
| المدخل | الوصف | القيمة الافتراضية |
|---|
job_name | اسم الوظيفة | "trivy:scan:iac" |
stage | المرحلة | "test" |
image | صورة Trivy | "ghcr.io/aquasecurity/trivy:0.68.1" |
TRIVY_CONFIG_PATH | دليل IaC | "." |
severity | درجات الخطورة | "CRITICAL,HIGH" |
exit_on_vulnerability | الفشل عند الاكتشافات | true |
TRIVY_CONFIG_REPORT | تفاصيل التقرير | "all" |
TRIVY_CONFIG_INCLUDE_NON_FAILURES | تضمين النجاحات | false |
TRIVY_MISCONFIG_SCANNERS | قائمة ماسحات التكوين الخاطئ | "azure-arm,cloudformation,dockerfile,helm,kubernetes,terraform" |
TRIVY_TIMEOUT | المهلة | "10m" |
TRIVY_SKIP_FILES | الملفات المراد تخطيها | "" |
TRIVY_SKIP_DIRS | الدلائل المراد تخطيها | "" |
TRIVY_CONFIG_EXTRA_ARGS | وسيطات إضافية | "" |
TRIVY_REPORT_BASENAME | الاسم الأساسي للقطعة الأثرية | "iac-scan" |
allow_failure | السماح بالفشل | false |
| المدخل | الوصف | القيمة الافتراضية |
|---|
job_name | اسم الوظيفة | "trivy:scan:license" |
stage | المرحلة | "test" |
image | صورة Trivy | "ghcr.io/aquasecurity/trivy:0.68.1" |
TRIVY_SCAN_REMOTE_IMAGE | مرجع الصورة عن بعد | "" |
TRIVY_SCAN_LOCAL_IMAGES | مسار tar/OCI محلي أو نظام ملفات | "" |
TRIVY_SCANNERS | قائمة الماسحات | "license" |
severity | درجات الخطورة | "CRITICAL" |
exit_on_vulnerability | الفشل عند تطابق درجة الخطورة | true |
TRIVY_LICENSE_FULL | تفعيل --license-full | false |
TRIVY_LICENSE_CONFIDENCE | حد الثقة | "0.9" |
TRIVY_LICENSE_IGNORED | التراخيص المراد تجاهلها | "" |
TRIVY_PKG_TYPES | أنواع الحزم | "os,library" |
TRIVY_TIMEOUT | المهلة | "10m" |
TRIVY_EXTRA_ARGS | وسيطات إضافية | "" |
allow_failure | السماح بالفشل | false |
| المدخل | الوصف | القيمة الافتراضية |
|---|
job_name | اسم الوظيفة | "trivy:sbom:image" |
stage | المرحلة | "test" |
image | صورة Trivy | "ghcr.io/aquasecurity/trivy:0.68.1" |
TRIVY_SBOM_IMAGE | مرجع الصورة عن بعد | "" |
TRIVY_SBOM_INPUT | مدخل OCI/tar محلي | "" |
TRIVY_SBOM_FORMAT | تنسيق SBOM | "cyclonedx" |
TRIVY_SBOM_FILENAME | اسم ملف الإخراج | "image-sbom.cdx.json" |
TRIVY_SBOM_EXTRA_ARGS | وسيطات إضافية | "" |
TRIVY_TIMEOUT | المهلة | "10m" |
allow_failure | السماح بالفشل | false |
| المدخل | الوصف | القيمة الافتراضية |
|---|
job_name | اسم الوظيفة | "trivy:sbom:repo" |
stage | المرحلة | "test" |
image | صورة Trivy | "ghcr.io/aquasecurity/trivy:0.68.1" |
TRIVY_REPO_TARGET | مسار أو رابط Git عن بعد | "." |
TRIVY_REPO_BRANCH | الفرع | "" |
TRIVY_REPO_COMMIT | هاش الالتزام | "" |
TRIVY_REPO_TAG | العلامة | "" |
TRIVY_SBOM_FORMAT | التنسيق | "cyclonedx" |
TRIVY_SBOM_FILENAME | اسم ملف الإخراج | "repo-sbom.cdx.json" |
TRIVY_REPO_SCANNERS | الماسحات أثناء إنشاء SBOM | "vuln,secret" |
TRIVY_REPO_EXTRA_ARGS | وسيطات إضافية | "" |
TRIVY_TIMEOUT | المهلة | "10m" |
allow_failure | السماح بالفشل | false |
| المدخل | الوصف | القيمة الافتراضية |
|---|
job_name | اسم الوظيفة | "trivy:sbom:kbom" |
stage | المرحلة | "test" |
image | صورة Trivy | "ghcr.io/aquasecurity/trivy:0.68.1" |
TRIVY_K8S_TARGET | هدف trivy k8s (cluster, namespace/...) | "cluster" |
TRIVY_K8S_CONTEXT | سياق Kubeconfig | "" |
TRIVY_K8S_EXTRA_ARGS | وسيطات إضافية | "" |
TRIVY_SBOM_FILENAME | اسم ملف KBOM | "kbom.cdx.json" |
TRIVY_TIMEOUT | المهلة | "15m" |
scan_kbom | تشغيل فحص الثغرات على KBOM المُنشأ | true |
TRIVY_SBOM_SCANNERS | ماسحات فحص KBOM | "vuln" |
severity | درجات الخطورة لفحص KBOM | "CRITICAL,HIGH" |
exit_on_vulnerability | الفشل عند الاكتشافات | true |
TRIVY_SBOM_SCAN_EXTRA_ARGS | وسيطات إضافية لفحص KBOM | "" |
allow_failure | السماح بالفشل | false |
| المدخل | الوصف | القيمة الافتراضية |
|---|
job_name | اسم الوظيفة | "trivy:scan:sbom" |
stage | المرحلة | "test" |
image | صورة Trivy | "ghcr.io/aquasecurity/trivy:0.68.1" |
TRIVY_SBOM_PATH | مسار ملف SBOM | "artifacts/trivy/image-sbom.cdx.json" |
TRIVY_SBOM_REPORT_BASENAME | الاسم الأساسي للإخراج | "sbom-scan" |
TRIVY_SCANNERS | الماسحات المراد تشغيلها | "vuln,license" |
severity | درجات الخطورة | "CRITICAL,HIGH" |
exit_on_vulnerability | الفشل عند الاكتشافات | true |
TRIVY_SBOM_SCAN_EXTRA_ARGS | وسيطات إضافية | "" |
TRIVY_TIMEOUT | المهلة | "10m" |
allow_failure | السماح بالفشل | false |
| المدخل | الوصف | القيمة الافتراضية |
|---|
job_name | اسم الوظيفة | "trivy:scan:rekor" |
stage | المرحلة | "test" |
image | صورة Trivy | "ghcr.io/aquasecurity/trivy:0.68.1" |
TRIVY_SCAN_REMOTE_IMAGE | الصورة عن بعد الموثقة | "" |
TRIVY_REKOR_URL | نقطة نهاية API Rekor | "" |
TRIVY_SCANNERS | الماسحات | "vuln" |
severity | درجات الخطورة | "CRITICAL,HIGH" |
exit_on_vulnerability | الفشل عند الاكتشافات | true |
TRIVY_IGNORE_UNFIXED | تجاهل غير المُصلح | true |
TRIVY_TIMEOUT | المهلة | "10m" |
TRIVY_EXTRA_ARGS | وسيطات إضافية | "" |
allow_failure | السماح بالفشل | false |