
مكون 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| المدخل | الوصف | القيمة الافتراضية |
|---|---|---|
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 |
مثال
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| المدخل | الوصف | القيمة الافتراضية |
|---|---|---|
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 |
مثال
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| المدخل | الوصف | القيمة الافتراضية |
|---|---|---|
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 |
مثال
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| المدخل | الوصف | القيمة الافتراضية |
|---|---|---|
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 |
مثال
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| المدخل | الوصف | القيمة الافتراضية |
|---|---|---|
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 |
مثال
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"