
Componente GitLab CI per la scansione Trivy
Un componente CI GitLab per Trivy — lo scanner di sicurezza all-in-one che copre immagini container, filesystem, repository, cluster Kubernetes, SBOM e conformità delle licenze. Collega questi template direttamente alle tue pipeline per ottenere scansioni ripetibili, report nativi GitLab e artefatti portatili con quasi nessuno scripting di shell.
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
Ogni template di seguito elenca i suoi input disponibili e valori predefiniti come definiti nella specifica del componente, seguiti da un esempio funzionante minimale.
templates/main.ymlEsempio
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.ymlEsempio
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.ymlEsempio
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.ymlEsempio
include:
- component: $CI_SERVER_FQDN/niclas-zone/ci/trivy/target_rootfs@latest
inputs:
TRIVY_ROOTFS_PATH: "/mnt/root"
TRIVY_SCANNERS: "vuln"
templates/target_repository.ymlEsempio
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.ymlEsempio
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.ymlEsempio
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.ymlEsempio
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.ymlEsempio
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.ymlEsempio
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.ymlEsempio
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.ymlEsempio
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.ymlEsempio
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.ymlEsempio
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"
| Input | Descrizione | Predefinito |
|---|
job_name | Nome del job CI | "trivy scanning" |
stage | Stadio della pipeline | "test" |
image | Immagine container che esegue Trivy | "ghcr.io/aquasecurity/trivy:0.68.1" |
TRIVY_NEEDED_STAGE | Stadio che deve terminare prima che Trivy venga eseguito | "build" |
TRIVY_SCAN_REMOTE_IMAGE | Immagine remota da scansionare | "" |
TRIVY_SCAN_LOCAL_IMAGES | Percorso agli input tar/OCI (cerca . se vuoto) | "" |
TRIVY_SCANNERS | Scanner separati da virgola | "vuln,secret,misconfig" |
severity | Severità da includere | "CRITICAL,HIGH" |
exit_on_vulnerability | Fallisce il job quando vengono trovati problemi | true |
TRIVY_EXTRA_ARGS | Flag CLI aggiuntivi | "" |
allow_failure | Consenti fallimento job senza far fallire la pipeline | false |
| Input | Descrizione | Predefinito |
|---|
job_name | Nome del job CI | "trivy:scan:containers" |
stage | Stadio della pipeline | "test" |
image | Immagine container Trivy | "ghcr.io/aquasecurity/trivy:0.68.1" |
TRIVY_SCAN_REMOTE_IMAGE | Riferimento immagine remota | "" |
TRIVY_SCAN_LOCAL_IMAGES | Directory/tar per scansioni locali | "" |
TRIVY_SCANNERS | Scanner abilitati | "vuln,secret,misconfig" |
TRIVY_IMAGE_SRC | Backend sorgente immagine (remote/docker/...) | "" |
severity | Severità | "CRITICAL,HIGH" |
exit_on_vulnerability | Fallisce in caso di corrispondenza di severità | true |
TRIVY_IGNORE_UNFIXED | Ignora problemi senza fix | true |
TRIVY_PKG_TYPES | Tipi di pacchetto | "os,library" |
TRIVY_VULN_TYPE | Alias deprecato per tipi di pacchetto | "" |
TRIVY_TIMEOUT | Timeout del comando | "10m" |
TRIVY_EXTRA_ARGS | Argomenti CLI extra | "" |
TRIVY_DB_REPOSITORY | Mirror DB personalizzato | "" |
TRIVY_JAVA_DB_REPOSITORY | Mirror DB Java personalizzato | "" |
TRIVY_SKIP_FILES | Esclusioni di file glob | "" |
TRIVY_SKIP_DIRS | Esclusioni di directory | "" |
allow_failure | Consenti fallimento senza far fallire la pipeline | false |
| Input | Descrizione | Predefinito |
|---|
job_name | Nome del job CI | "trivy:scan:filesystem" |
stage | Stadio della pipeline | "test" |
image | Immagine Trivy | "ghcr.io/aquasecurity/trivy:0.68.1" |
TRIVY_FS_PATH | File o directory da scansionare | "." |
TRIVY_SCANNERS | Scanner abilitati | "vuln,secret" |
severity | Severità | "CRITICAL,HIGH" |
exit_on_vulnerability | Fallisce in caso di corrispondenza di severità | true |
TRIVY_IGNORE_UNFIXED | Ignora problemi senza fix | true |
TRIVY_PKG_TYPES | Tipi di pacchetto | "os,library" |
TRIVY_TIMEOUT | Timeout | "10m" |
TRIVY_SKIP_FILES | File glob da saltare | "" |
TRIVY_SKIP_DIRS | Directory da saltare | "" |
TRIVY_EXTRA_ARGS | Argomenti CLI extra | "" |
TRIVY_REPORT_BASENAME | Nome base artefatto | "filesystem-scan" |
allow_failure | Consenti fallimento job | false |
| Input | Descrizione | Predefinito |
|---|
job_name | Nome job | "trivy:scan:rootfs" |
stage | Stadio | "test" |
image | Immagine Trivy | "ghcr.io/aquasecurity/trivy:0.68.1" |
TRIVY_ROOTFS_PATH | Percorso filesystem root | "/" |
TRIVY_SCANNERS | Scanner | "vuln,secret" |
severity | Severità | "CRITICAL,HIGH" |
exit_on_vulnerability | Fallisce job su risultati | true |
TRIVY_IGNORE_UNFIXED | Ignora senza fix | true |
TRIVY_PKG_TYPES | Tipi di pacchetto | "os,library" |
TRIVY_TIMEOUT | Timeout | "10m" |
TRIVY_SKIP_FILES | File da saltare | "" |
TRIVY_SKIP_DIRS | Directory da saltare | "" |
TRIVY_EXTRA_ARGS | Argomenti extra | "" |
TRIVY_REPORT_BASENAME | Nome base artefatto | "rootfs-scan" |
allow_failure | Consenti fallimento | false |
| Input | Descrizione | Predefinito |
|---|
job_name | Nome job | "trivy:scan:repo" |
stage | Stadio | "test" |
image | Immagine Trivy | "ghcr.io/aquasecurity/trivy:0.68.1" |
TRIVY_REPO_TARGET | Percorso locale o URL Git | "." |
TRIVY_REPO_BRANCH | Branch remoto | "" |
TRIVY_REPO_COMMIT | Hash commit | "" |
TRIVY_REPO_TAG | Nome tag | "" |
TRIVY_SCANNERS | Scanner | "vuln,secret" |
severity | Severità | "CRITICAL,HIGH" |
exit_on_vulnerability | Fallisce job su risultati | true |
TRIVY_IGNORE_UNFIXED | Ignora senza fix | true |
TRIVY_TIMEOUT | Timeout | "10m" |
TRIVY_SKIP_FILES | File da saltare | "" |
TRIVY_SKIP_DIRS | Directory da saltare | "" |
TRIVY_EXTRA_ARGS | Argomenti extra | "" |
TRIVY_REPORT_BASENAME | Nome base artefatto | "repo-scan" |
allow_failure | Consenti fallimento | false |
| Input | Descrizione | Predefinito |
|---|
job_name | Nome job | "trivy:scan:vm" |
stage | Stadio | "test" |
image | Immagine Trivy | "ghcr.io/aquasecurity/trivy:0.68.1" |
TRIVY_VM_TARGET | Percorso locale o identificatore ami:/ebs: | "" |
TRIVY_AWS_REGION | Regione AWS per scansioni AMI/EBS | "" |
TRIVY_SCANNERS | Scanner | "vuln" |
severity | Severità | "CRITICAL,HIGH" |
exit_on_vulnerability | Fallisce job su risultati | true |
TRIVY_IGNORE_UNFIXED | Ignora senza fix | true |
TRIVY_TIMEOUT | Timeout | "20m" |
TRIVY_EXTRA_ARGS | Argomenti extra | "" |
TRIVY_REPORT_BASENAME | Nome base artefatto | "vm-scan" |
allow_failure | Consenti fallimento | false |
| Input | Descrizione | Predefinito |
|---|
job_name | Nome job | "trivy:scan:k8s" |
stage | Stadio | "test" |
image | Immagine Trivy | "ghcr.io/aquasecurity/trivy:0.68.1" |
TRIVY_K8S_OBJECT | Ambito (cluster, namespace/foo, ecc.) | "" |
TRIVY_K8S_REPORT | Dettaglio report (summary/all) | "summary" |
TRIVY_K8S_KUBECONFIG | Percorso kubeconfig personalizzato | "" |
TRIVY_K8S_INCLUDE_NAMESPACES | Namespace da includere | "" |
TRIVY_K8S_EXCLUDE_NAMESPACES | Namespace da escludere | "" |
TRIVY_K8S_INCLUDE_KINDS | Kind da includere | "" |
TRIVY_K8S_EXCLUDE_KINDS | Kind da escludere | "" |
TRIVY_K8S_SKIP_IMAGES | Salta scansione immagini dei workload | false |
TRIVY_K8S_DISABLE_NODE_COLLECTOR | Disabilita collector dei nodi | false |
TRIVY_SCANNERS | Scanner | "vuln,misconfig,secret" |
severity | Severità | "CRITICAL,HIGH" |
exit_on_vulnerability | Fallisce job su risultati | true |
TRIVY_IGNORE_UNFIXED | Ignora senza fix | true |
TRIVY_TIMEOUT | Timeout | "15m" |
TRIVY_K8S_EXTRA_ARGS | Argomenti extra | "" |
TRIVY_REPORT_BASENAME | Nome base artefatto | "k8s-scan" |
allow_failure | Consenti fallimento | false |
| Input | Descrizione | Predefinito |
|---|
job_name | Nome job | "trivy:scan:iac" |
stage | Stadio | "test" |
image | Immagine Trivy | "ghcr.io/aquasecurity/trivy:0.68.1" |
TRIVY_CONFIG_PATH | Directory IaC | "." |
severity | Severità | "CRITICAL,HIGH" |
exit_on_vulnerability | Fallisce su risultati | true |
TRIVY_CONFIG_REPORT | Dettaglio report | "all" |
TRIVY_CONFIG_INCLUDE_NON_FAILURES | Includi superati | false |
TRIVY_MISCONFIG_SCANNERS | Lista scanner misconfig | "azure-arm,cloudformation,dockerfile,helm,kubernetes,terraform" |
TRIVY_TIMEOUT | Timeout | "10m" |
TRIVY_SKIP_FILES | File da saltare | "" |
TRIVY_SKIP_DIRS | Directory da saltare | "" |
TRIVY_CONFIG_EXTRA_ARGS | Argomenti extra | "" |
TRIVY_REPORT_BASENAME | Nome base artefatto | "iac-scan" |
allow_failure | Consenti fallimento | false |
| Input | Descrizione | Predefinito |
|---|
job_name | Nome job | "trivy:scan:license" |
stage | Stadio | "test" |
image | Immagine Trivy | "ghcr.io/aquasecurity/trivy:0.68.1" |
TRIVY_SCAN_REMOTE_IMAGE | Riferimento immagine remota | "" |
TRIVY_SCAN_LOCAL_IMAGES | Percorso tar/OCI locale o filesystem | "" |
TRIVY_SCANNERS | Elenco scanner | "license" |
severity | Severità | "CRITICAL" |
exit_on_vulnerability | Fallisce in caso di corrispondenza di severità | true |
TRIVY_LICENSE_FULL | Abilita --license-full | false |
TRIVY_LICENSE_CONFIDENCE | Soglia di confidenza | "0.9" |
TRIVY_LICENSE_IGNORED | Licenze da ignorare | "" |
TRIVY_PKG_TYPES | Tipi di pacchetto | "os,library" |
TRIVY_TIMEOUT | Timeout | "10m" |
TRIVY_EXTRA_ARGS | Argomenti extra | "" |
allow_failure | Consenti fallimento | false |
| Input | Descrizione | Predefinito |
|---|
job_name | Nome job | "trivy:sbom:image" |
stage | Stadio | "test" |
image | Immagine Trivy | "ghcr.io/aquasecurity/trivy:0.68.1" |
TRIVY_SBOM_IMAGE | Riferimento immagine remota | "" |
TRIVY_SBOM_INPUT | Input OCI/tar locale | "" |
TRIVY_SBOM_FORMAT | Formato SBOM | "cyclonedx" |
TRIVY_SBOM_FILENAME | Nome file output | "image-sbom.cdx.json" |
TRIVY_SBOM_EXTRA_ARGS | Argomenti extra | "" |
TRIVY_TIMEOUT | Timeout | "10m" |
allow_failure | Consenti fallimento | false |
| Input | Descrizione | Predefinito |
|---|
job_name | Nome job | "trivy:sbom:repo" |
stage | Stadio | "test" |
image | Immagine Trivy | "ghcr.io/aquasecurity/trivy:0.68.1" |
TRIVY_REPO_TARGET | Percorso o URL Git remoto | "." |
TRIVY_REPO_BRANCH | Branch | "" |
TRIVY_REPO_COMMIT | Hash commit | "" |
TRIVY_REPO_TAG | Tag | "" |
TRIVY_SBOM_FORMAT | Formato | "cyclonedx" |
TRIVY_SBOM_FILENAME | Nome file output | "repo-sbom.cdx.json" |
TRIVY_REPO_SCANNERS | Scanner durante creazione SBOM | "vuln,secret" |
TRIVY_REPO_EXTRA_ARGS | Argomenti extra | "" |
TRIVY_TIMEOUT | Timeout | "10m" |
allow_failure | Consenti fallimento | false |
| Input | Descrizione | Predefinito |
|---|
job_name | Nome job | "trivy:sbom:kbom" |
stage | Stadio | "test" |
image | Immagine Trivy | "ghcr.io/aquasecurity/trivy:0.68.1" |
TRIVY_K8S_TARGET | Target trivy k8s (cluster, namespace/...) | "cluster" |
TRIVY_K8S_CONTEXT | Contesto kubeconfig | "" |
TRIVY_K8S_EXTRA_ARGS | Argomenti extra | "" |
TRIVY_SBOM_FILENAME | Nome file KBOM | "kbom.cdx.json" |
TRIVY_TIMEOUT | Timeout | "15m" |
scan_kbom | Esegui scansione vulnerabilità sul KBOM generato | true |
TRIVY_SBOM_SCANNERS | Scanner per scansione KBOM | "vuln" |
severity | Severità per scansione KBOM | "CRITICAL,HIGH" |
exit_on_vulnerability | Fallisce su risultati | true |
TRIVY_SBOM_SCAN_EXTRA_ARGS | Argomenti extra per scansione KBOM | "" |
allow_failure | Consenti fallimento | false |
| Input | Descrizione | Predefinito |
|---|
job_name | Nome job | "trivy:scan:sbom" |
stage | Stadio | "test" |
image | Immagine Trivy | "ghcr.io/aquasecurity/trivy:0.68.1" |
TRIVY_SBOM_PATH | Percorso file SBOM | "artifacts/trivy/image-sbom.cdx.json" |
TRIVY_SBOM_REPORT_BASENAME | Nome base output | "sbom-scan" |
TRIVY_SCANNERS | Scanner da eseguire | "vuln,license" |
severity | Severità | "CRITICAL,HIGH" |
exit_on_vulnerability | Fallisce su risultati | true |
TRIVY_SBOM_SCAN_EXTRA_ARGS | Argomenti extra | "" |
TRIVY_TIMEOUT | Timeout | "10m" |
allow_failure | Consenti fallimento | false |
| Input | Descrizione | Predefinito |
|---|
job_name | Nome job | "trivy:scan:rekor" |
stage | Stadio | "test" |
image | Immagine Trivy | "ghcr.io/aquasecurity/trivy:0.68.1" |
TRIVY_SCAN_REMOTE_IMAGE | Immagine remota attestata | "" |
TRIVY_REKOR_URL | Endpoint API Rekor | "" |
TRIVY_SCANNERS | Scanner | "vuln" |
severity | Severità | "CRITICAL,HIGH" |
exit_on_vulnerability | Fallisce su risultati | true |
TRIVY_IGNORE_UNFIXED | Ignora senza fix | true |
TRIVY_TIMEOUT | Timeout | "10m" |
TRIVY_EXTRA_ARGS | Argomenti extra | "" |
allow_failure | Consenti fallimento | false |