
Composant GitLab CI pour le scan Trivy
Un composant GitLab CI pour Trivy — le scanner de sécurité tout-en-un couvrant les images de conteneurs, les systèmes de fichiers, les dépôts, les clusters Kubernetes, les SBOM et la conformité des licences. Insérez ces modèles directement dans vos pipelines pour obtenir des analyses reproductibles, des rapports natifs GitLab et des artefacts portables avec pratiquement aucun script 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
Chaque modèle ci-dessous liste ses entrées disponibles et leurs valeurs par défaut telles que définies dans la spécification du composant, suivies d'un exemple minimal fonctionnel.
templates/main.yml| Entrée | Description | Par défaut |
|---|---|---|
job_name | Nom de la tâche CI | "trivy scanning" |
stage | Étape du pipeline | "test" |
image | Image conteneur exécutant Trivy | "ghcr.io/aquasecurity/trivy:0.68.1" |
TRIVY_NEEDED_STAGE | Étape qui doit se terminer avant l'exécution de Trivy | "build" |
TRIVY_SCAN_REMOTE_IMAGE | Image distante à analyser | "" |
TRIVY_SCAN_LOCAL_IMAGES | Chemin vers les entrées tar/OCI (cherche dans . si vide) | "" |
TRIVY_SCANNERS | Analyseurs séparés par des virgules | "vuln,secret,misconfig" |
severity | Gravités à inclure | "CRITICAL,HIGH" |
exit_on_vulnerability | Échouer la tâche si des problèmes sont trouvés | true |
TRIVY_EXTRA_ARGS | Drapeaux CLI supplémentaires | "" |
allow_failure | Autoriser l'échec de la tâche sans faire échouer le pipeline | false |
Exemple
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| Entrée | Description | Par défaut |
|---|---|---|
job_name | Nom de la tâche CI | "trivy:scan:containers" |
stage | Étape du pipeline | "test" |
image | Image conteneur Trivy | "ghcr.io/aquasecurity/trivy:0.68.1" |
TRIVY_SCAN_REMOTE_IMAGE | Référence d'image distante | "" |
TRIVY_SCAN_LOCAL_IMAGES | Répertoire/tar pour les analyses locales | "" |
TRIVY_SCANNERS | Analyseurs activés | "vuln,secret,misconfig" |
TRIVY_IMAGE_SRC | Backend source de l'image (remote/docker/...) | "" |
severity | Gravités | "CRITICAL,HIGH" |
exit_on_vulnerability | Échouer sur correspondance de gravité | true |
TRIVY_IGNORE_UNFIXED | Ignorer les problèmes sans correctif | true |
TRIVY_PKG_TYPES | Types de paquets | "os,library" |
TRIVY_VULN_TYPE | Alias déprécié pour les types de paquets | "" |
TRIVY_TIMEOUT | Délai d'attente de la commande | "10m" |
TRIVY_EXTRA_ARGS | Arguments CLI supplémentaires | "" |
TRIVY_DB_REPOSITORY | Miroir de base de données personnalisé | "" |
TRIVY_JAVA_DB_REPOSITORY | Miroir de base de données Java personnalisé | "" |
TRIVY_SKIP_FILES | Exclusions par glob de fichiers | "" |
TRIVY_SKIP_DIRS | Exclusions de répertoires | "" |
allow_failure | Autoriser l'échec sans faire échouer le pipeline | false |
Exemple
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| Entrée | Description | Par défaut |
|---|---|---|
job_name | Nom de la tâche CI | "trivy:scan:filesystem" |
stage | Étape du pipeline | "test" |
image | Image Trivy | "ghcr.io/aquasecurity/trivy:0.68.1" |
TRIVY_FS_PATH | Fichier ou répertoire à analyser | "." |
TRIVY_SCANNERS | Analyseurs activés | "vuln,secret" |
severity | Gravités | "CRITICAL,HIGH" |
exit_on_vulnerability | Échouer sur correspondance de gravité | true |
TRIVY_IGNORE_UNFIXED | Ignorer les problèmes sans correctif | true |
TRIVY_PKG_TYPES | Types de paquets | "os,library" |
TRIVY_TIMEOUT | Délai d'attente | "10m" |
TRIVY_SKIP_FILES | Glob de fichiers à ignorer | "" |
TRIVY_SKIP_DIRS | Répertoires à ignorer | "" |
TRIVY_EXTRA_ARGS | Arguments CLI supplémentaires | "" |
TRIVY_REPORT_BASENAME | Nom de base de l'artefact | "filesystem-scan" |
allow_failure | Autoriser l'échec de la tâche | false |
Exemple
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| Entrée | Description | Par défaut |
|---|---|---|
job_name | Nom de la tâche | "trivy:scan:rootfs" |
stage | Étape | "test" |
image | Image Trivy | "ghcr.io/aquasecurity/trivy:0.68.1" |
TRIVY_ROOTFS_PATH | Chemin du système de fichiers racine | "/" |
TRIVY_SCANNERS | Analyseurs | "vuln,secret" |
severity | Gravités | "CRITICAL,HIGH" |
exit_on_vulnerability | Échouer la tâche sur constatations | true |
TRIVY_IGNORE_UNFIXED | Ignorer sans correctif | true |
TRIVY_PKG_TYPES | Types de paquets | "os,library" |
TRIVY_TIMEOUT | Délai d'attente | "10m" |
TRIVY_SKIP_FILES | Fichiers à ignorer | "" |
TRIVY_SKIP_DIRS | Répertoires à ignorer | "" |
TRIVY_EXTRA_ARGS | Arguments supplémentaires | "" |
TRIVY_REPORT_BASENAME | Nom de base de l'artefact | "rootfs-scan" |
allow_failure | Autoriser l'échec | false |
Exemple
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