
GitLab CI-Komponente für Trivy-Scans
Eine GitLab-CI-Komponente für Trivy – den All-in-One-Sicherheitsscanner, der Container-Images, Dateisysteme, Repositories, Kubernetes-Cluster, SBOMs und Lizenz-Compliance abdeckt. Fügen Sie diese Vorlagen direkt in Ihre Pipelines ein, um wiederholbare Scans, GitLab-native Berichte und portable Artefakte mit nahezu keinem Shell-Scripting zu erhalten.
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
Jede unten aufgeführte Vorlage listet ihre verfügbaren Eingaben und Standardwerte auf, wie in der Komponentenspezifikation definiert, gefolgt von einem minimalen funktionierenden Beispiel.
templates/main.yml| Eingabe | Beschreibung | Standard |
|---|---|---|
job_name | Name des CI-Jobs | "trivy scanning" |
stage | Pipeline-Phase | "test" |
image | Container-Image, das Trivy ausführt | "ghcr.io/aquasecurity/trivy:0.68.1" |
TRIVY_NEEDED_STAGE | Phase, die abgeschlossen sein muss, bevor Trivy läuft | "build" |
TRIVY_SCAN_REMOTE_IMAGE | Remote-Image zum Scannen | "" |
TRIVY_SCAN_LOCAL_IMAGES | Pfad zu tar/OCI-Eingaben (sucht ., wenn leer) | "" |
TRIVY_SCANNERS | Kommagetrennte Scanner | "vuln,secret,misconfig" |
severity | Zu berücksichtigende Schweregrade | "CRITICAL,HIGH" |
exit_on_vulnerability | Job fehlschlagen lassen, wenn Probleme gefunden | true |
TRIVY_EXTRA_ARGS | Zusätzliche CLI-Flags | "" |
allow_failure | Job-Fehler erlauben, ohne dass die Pipeline fehlschlägt | false |
Beispiel
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| Eingabe | Beschreibung | Standard |
|---|---|---|
job_name | CI-Job-Name | "trivy:scan:containers" |
stage | Pipeline-Phase | "test" |
image | Trivy-Container-Image | "ghcr.io/aquasecurity/trivy:0.68.1" |
TRIVY_SCAN_REMOTE_IMAGE | Remote-Image-Referenz | "" |
TRIVY_SCAN_LOCAL_IMAGES | Verzeichnis/tar für lokale Scans | "" |
TRIVY_SCANNERS | Aktivierte Scanner | "vuln,secret,misconfig" |
TRIVY_IMAGE_SRC | Image-Quell-Backend (remote/docker/...) | "" |
severity | Schweregrade | "CRITICAL,HIGH" |
exit_on_vulnerability | Bei Schweregrad-Übereinstimmung fehlschlagen | true |
TRIVY_IGNORE_UNFIXED | Probleme ohne Fixes ignorieren | true |
TRIVY_PKG_TYPES | Pakettypen | "os,library" |
TRIVY_VULN_TYPE | Veralteter Alias für Pakettypen | "" |
TRIVY_TIMEOUT | Befehls-Timeout | "10m" |
TRIVY_EXTRA_ARGS | Zusätzliche CLI-Args | "" |
TRIVY_DB_REPOSITORY | Benutzerdefinierter DB-Spiegel | "" |
TRIVY_JAVA_DB_REPOSITORY | Benutzerdefinierter Java-DB-Spiegel | "" |
TRIVY_SKIP_FILES | Ausschlüsse für Dateiglobs | "" |
TRIVY_SKIP_DIRS | Ausschlüsse für Verzeichnisse | "" |
allow_failure | Fehlschlag erlauben, ohne dass die Pipeline fehlschlägt | false |
Beispiel
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| Eingabe | Beschreibung | Standard |
|---|---|---|
job_name | CI-Job-Name | "trivy:scan:filesystem" |
stage | Pipeline-Phase | "test" |
image | Trivy-Image | "ghcr.io/aquasecurity/trivy:0.68.1" |
TRIVY_FS_PATH | Datei oder Verzeichnis zum Scannen | "." |
TRIVY_SCANNERS | Aktivierte Scanner | "vuln,secret" |
severity | Schweregrade | "CRITICAL,HIGH" |
exit_on_vulnerability | Bei Schweregrad-Übereinstimmung fehlschlagen | true |
TRIVY_IGNORE_UNFIXED | Unbehobene Probleme ignorieren | true |
TRIVY_PKG_TYPES | Pakettypen | "os,library" |
TRIVY_TIMEOUT | Timeout | "10m" |
TRIVY_SKIP_FILES | Dateiglobs zum Überspringen | "" |
TRIVY_SKIP_DIRS | Verzeichnisse zum Überspringen | "" |
TRIVY_EXTRA_ARGS | Zusätzliche CLI-Args | "" |
TRIVY_REPORT_BASENAME | Basisname des Artefakts | "filesystem-scan" |
allow_failure | Job-Fehler erlauben | false |
Beispiel
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| Eingabe | Beschreibung | Standard |
|---|---|---|
job_name | Job-Name | "trivy:scan:rootfs" |
stage | Phase | "test" |
image | Trivy-Image | "ghcr.io/aquasecurity/trivy:0.68.1" |
TRIVY_ROOTFS_PATH | Root-Dateisystem-Pfad | "/" |
TRIVY_SCANNERS | Scanner | "vuln,secret" |
severity | Schweregrade | "CRITICAL,HIGH" |
exit_on_vulnerability | Job bei Befunden fehlschlagen lassen | true |
TRIVY_IGNORE_UNFIXED | Unbehobene ignorieren | true |
TRIVY_PKG_TYPES | Pakettypen | "os,library" |
TRIVY_TIMEOUT | Timeout | "10m" |
TRIVY_SKIP_FILES | Zu überspringende Dateien | "" |
TRIVY_SKIP_DIRS | Zu überspringende Verzeichnisse | "" |
TRIVY_EXTRA_ARGS | Zusätzliche Args | "" |
TRIVY_REPORT_BASENAME | Basisname des Artefakts | "rootfs-scan" |
allow_failure | Fehlschlag erlauben | false |
Beispiel
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