
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.ymlBeispiel
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.ymlBeispiel
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.ymlBeispiel
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.ymlBeispiel
include:
- component: $CI_SERVER_FQDN/niclas-zone/ci/trivy/target_rootfs@latest
inputs:
TRIVY_ROOTFS_PATH: "/mnt/root"
TRIVY_SCANNERS: "vuln"
templates/target_repository.ymlBeispiel
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.ymlBeispiel
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.ymlBeispiel
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.ymlBeispiel
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.ymlBeispiel
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.ymlBeispiel
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.ymlBeispiel
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.ymlBeispiel
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.ymlBeispiel
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.ymlBeispiel
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"
| 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 |
| 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 |
| 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 |
| 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 |
| Eingabe | Beschreibung | Standard |
|---|
job_name | Job-Name | "trivy:scan:repo" |
stage | Phase | "test" |
image | Trivy-Image | "ghcr.io/aquasecurity/trivy:0.68.1" |
TRIVY_REPO_TARGET | Lokaler Pfad oder Git-URL | "." |
TRIVY_REPO_BRANCH | Remote-Branch | "" |
TRIVY_REPO_COMMIT | Commit-Hash | "" |
TRIVY_REPO_TAG | Tag-Name | "" |
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_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 | "repo-scan" |
allow_failure | Fehlschlag erlauben | false |
| Eingabe | Beschreibung | Standard |
|---|
job_name | Job-Name | "trivy:scan:vm" |
stage | Phase | "test" |
image | Trivy-Image | "ghcr.io/aquasecurity/trivy:0.68.1" |
TRIVY_VM_TARGET | Lokaler Pfad oder ami:/ebs:-Bezeichner | "" |
TRIVY_AWS_REGION | AWS-Region für AMI/EBS-Scans | "" |
TRIVY_SCANNERS | Scanner | "vuln" |
severity | Schweregrade | "CRITICAL,HIGH" |
exit_on_vulnerability | Job bei Befunden fehlschlagen lassen | true |
TRIVY_IGNORE_UNFIXED | Unbehobene ignorieren | true |
TRIVY_TIMEOUT | Timeout | "20m" |
TRIVY_EXTRA_ARGS | Zusätzliche Args | "" |
TRIVY_REPORT_BASENAME | Basisname des Artefakts | "vm-scan" |
allow_failure | Fehlschlag erlauben | false |
| Eingabe | Beschreibung | Standard |
|---|
job_name | Job-Name | "trivy:scan:k8s" |
stage | Phase | "test" |
image | Trivy-Image | "ghcr.io/aquasecurity/trivy:0.68.1" |
TRIVY_K8S_OBJECT | Bereich (cluster, namespace/foo, etc.) | "" |
TRIVY_K8S_REPORT | Berichtsdetail (summary/all) | "summary" |
TRIVY_K8S_KUBECONFIG | Benutzerdefinierter Kubeconfig-Pfad | "" |
TRIVY_K8S_INCLUDE_NAMESPACES | Einzuschließende Namespaces | "" |
TRIVY_K8S_EXCLUDE_NAMESPACES | Auszuschließende Namespaces | "" |
TRIVY_K8S_INCLUDE_KINDS | Einzuschließende Arten | "" |
TRIVY_K8S_EXCLUDE_KINDS | Auszuschließende Arten | "" |
TRIVY_K8S_SKIP_IMAGES | Workload-Image-Scans überspringen | false |
TRIVY_K8S_DISABLE_NODE_COLLECTOR | Node-Collector deaktivieren | false |
TRIVY_SCANNERS | Scanner | "vuln,misconfig,secret" |
severity | Schweregrade | "CRITICAL,HIGH" |
exit_on_vulnerability | Job bei Befunden fehlschlagen lassen | true |
TRIVY_IGNORE_UNFIXED | Unbehobene ignorieren | true |
TRIVY_TIMEOUT | Timeout | "15m" |
TRIVY_K8S_EXTRA_ARGS | Zusätzliche Args | "" |
TRIVY_REPORT_BASENAME | Basisname des Artefakts | "k8s-scan" |
allow_failure | Fehlschlag erlauben | false |
| Eingabe | Beschreibung | Standard |
|---|
job_name | Job-Name | "trivy:scan:iac" |
stage | Phase | "test" |
image | Trivy-Image | "ghcr.io/aquasecurity/trivy:0.68.1" |
TRIVY_CONFIG_PATH | IaC-Verzeichnis | "." |
severity | Schweregrade | "CRITICAL,HIGH" |
exit_on_vulnerability | Bei Befunden fehlschlagen | true |
TRIVY_CONFIG_REPORT | Berichtsdetail | "all" |
TRIVY_CONFIG_INCLUDE_NON_FAILURES | Erfolge einschließen | false |
TRIVY_MISCONFIG_SCANNERS | Liste der Misconfig-Scanner | "azure-arm,cloudformation,dockerfile,helm,kubernetes,terraform" |
TRIVY_TIMEOUT | Timeout | "10m" |
TRIVY_SKIP_FILES | Zu überspringende Dateien | "" |
TRIVY_SKIP_DIRS | Zu überspringende Verzeichnisse | "" |
TRIVY_CONFIG_EXTRA_ARGS | Zusätzliche Args | "" |
TRIVY_REPORT_BASENAME | Basisname des Artefakts | "iac-scan" |
allow_failure | Fehlschlag erlauben | false |
| Eingabe | Beschreibung | Standard |
|---|
job_name | Job-Name | "trivy:scan:license" |
stage | Phase | "test" |
image | Trivy-Image | "ghcr.io/aquasecurity/trivy:0.68.1" |
TRIVY_SCAN_REMOTE_IMAGE | Remote-Image-Referenz | "" |
TRIVY_SCAN_LOCAL_IMAGES | Lokaler tar/OCI- oder Dateisystem-Pfad | "" |
TRIVY_SCANNERS | Scanner-Liste | "license" |
severity | Schweregrade | "CRITICAL" |
exit_on_vulnerability | Bei Schweregrad-Übereinstimmung fehlschlagen | true |
TRIVY_LICENSE_FULL | --license-full aktivieren | false |
TRIVY_LICENSE_CONFIDENCE | Konfidenzschwelle | "0.9" |
TRIVY_LICENSE_IGNORED | Lizenz-Liste zum Ignorieren | "" |
TRIVY_PKG_TYPES | Pakettypen | "os,library" |
TRIVY_TIMEOUT | Timeout | "10m" |
TRIVY_EXTRA_ARGS | Zusätzliche Args | "" |
allow_failure | Fehlschlag erlauben | false |
| Eingabe | Beschreibung | Standard |
|---|
job_name | Job-Name | "trivy:sbom:image" |
stage | Phase | "test" |
image | Trivy-Image | "ghcr.io/aquasecurity/trivy:0.68.1" |
TRIVY_SBOM_IMAGE | Remote-Image-Referenz | "" |
TRIVY_SBOM_INPUT | Lokaler OCI/tar-Eingang | "" |
TRIVY_SBOM_FORMAT | SBOM-Format | "cyclonedx" |
TRIVY_SBOM_FILENAME | Ausgabedateiname | "image-sbom.cdx.json" |
TRIVY_SBOM_EXTRA_ARGS | Zusätzliche Args | "" |
TRIVY_TIMEOUT | Timeout | "10m" |
allow_failure | Fehlschlag erlauben | false |
| Eingabe | Beschreibung | Standard |
|---|
job_name | Job-Name | "trivy:sbom:repo" |
stage | Phase | "test" |
image | Trivy-Image | "ghcr.io/aquasecurity/trivy:0.68.1" |
TRIVY_REPO_TARGET | Pfad oder Remote-Git-URL | "." |
TRIVY_REPO_BRANCH | Branch | "" |
TRIVY_REPO_COMMIT | Commit-Hash | "" |
TRIVY_REPO_TAG | Tag | "" |
TRIVY_SBOM_FORMAT | Format | "cyclonedx" |
TRIVY_SBOM_FILENAME | Ausgabedateiname | "repo-sbom.cdx.json" |
TRIVY_REPO_SCANNERS | Scanner während der SBOM-Erstellung | "vuln,secret" |
TRIVY_REPO_EXTRA_ARGS | Zusätzliche Args | "" |
TRIVY_TIMEOUT | Timeout | "10m" |
allow_failure | Fehlschlag erlauben | false |
| Eingabe | Beschreibung | Standard |
|---|
job_name | Job-Name | "trivy:sbom:kbom" |
stage | Phase | "test" |
image | Trivy-Image | "ghcr.io/aquasecurity/trivy:0.68.1" |
TRIVY_K8S_TARGET | trivy k8s-Ziel (cluster, namespace/...) | "cluster" |
TRIVY_K8S_CONTEXT | Kubeconfig-Kontext | "" |
TRIVY_K8S_EXTRA_ARGS | Zusätzliche Args | "" |
TRIVY_SBOM_FILENAME | KBOM-Dateiname | "kbom.cdx.json" |
TRIVY_TIMEOUT | Timeout | "15m" |
scan_kbom | Schwachstellenscan auf generiertem KBOM ausführen | true |
TRIVY_SBOM_SCANNERS | Scanner für KBOM-Scan | "vuln" |
severity | Schweregrade für KBOM-Scan | "CRITICAL,HIGH" |
exit_on_vulnerability | Bei Befunden fehlschlagen | true |
TRIVY_SBOM_SCAN_EXTRA_ARGS | Zusätzliche Args für KBOM-Scan | "" |
allow_failure | Fehlschlag erlauben | false |
| Eingabe | Beschreibung | Standard |
|---|
job_name | Job-Name | "trivy:scan:sbom" |
stage | Phase | "test" |
image | Trivy-Image | "ghcr.io/aquasecurity/trivy:0.68.1" |
TRIVY_SBOM_PATH | Pfad zur SBOM-Datei | "artifacts/trivy/image-sbom.cdx.json" |
TRIVY_SBOM_REPORT_BASENAME | Ausgabebasisname | "sbom-scan" |
TRIVY_SCANNERS | Auszuführende Scanner | "vuln,license" |
severity | Schweregrade | "CRITICAL,HIGH" |
exit_on_vulnerability | Bei Befunden fehlschlagen | true |
TRIVY_SBOM_SCAN_EXTRA_ARGS | Zusätzliche Args | "" |
TRIVY_TIMEOUT | Timeout | "10m" |
allow_failure | Fehlschlag erlauben | false |
| Eingabe | Beschreibung | Standard |
|---|
job_name | Job-Name | "trivy:scan:rekor" |
stage | Phase | "test" |
image | Trivy-Image | "ghcr.io/aquasecurity/trivy:0.68.1" |
TRIVY_SCAN_REMOTE_IMAGE | Bestätigtes Remote-Image | "" |
TRIVY_REKOR_URL | Rekor-API-Endpunkt | "" |
TRIVY_SCANNERS | Scanner | "vuln" |
severity | Schweregrade | "CRITICAL,HIGH" |
exit_on_vulnerability | Bei Befunden fehlschlagen | true |
TRIVY_IGNORE_UNFIXED | Unbehobene ignorieren | true |
TRIVY_TIMEOUT | Timeout | "10m" |
TRIVY_EXTRA_ARGS | Zusätzliche Args | "" |
allow_failure | Fehlschlag erlauben | false |