DevSecOps
Inclusion des templates
include:
- template: Jobs/SAST-IaC.gitlab-ci.yml
- template: Jobs/Container-Scanning.gitlab-ci.yml
- template: Jobs/Secret-Detection.gitlab-ci.yml
Description
Ces templates AutoDevOps fournissent des configurations prédéfinies pour les jobs de sécurité suivant :
- Jobs/SAST-IaC.gitlab-ci.yml : Analyse les fichiers d'infrastructure as code (IaC) pour détecter des erreurs de configuration ou des vulnérabilités.
- Jobs/Container-Scanning.gitlab-ci.yml : Scanne les images de conteneur pour identifier des vulnérabilités connues dans les dépendances ou le système de base.
- Jobs/Secret-Detection.gitlab-ci.yml : Recherche des secrets (mots de passe, clés API, token GitLab, etc) dans le code source, évitant des fuites accidentelles.
Configuration des jobs de sécurité
Container scanning
container_scanning:
rules:
- changes:
- terraform/**
variables:
CS_IMAGE: ghcr.io/open-webui/open-webui
CS_SEVERITY_THRESHOLD: 'MEDIUM'
Le Container Scanning basé sur Trivy est une méthode puissante pour détecter des vulnérabilités dans les conteneurs Docker. Trivy est un outil open-source qui analyse les images de conteneurs pour identifier des failles de sécurité dans les dépendances, bibliothèques, et packages inclus dans ces images.
Fonctionnement de Trivy
Trivy utilise une base de données mise à jour régulièrement (comme la base de données des vulnérabilités CVE) pour scanner :
- Les packages système (ex. : APT, RPM, APK).
- Les dépendances d'applications (ex. : fichiers
requirements.txt
,package.json
). - Les fichiers de configuration (si activé, ex. Dockerfile, fichiers Kubernetes).
Trivy fonctionne en trois étapes principales :
- Téléchargement de la base de données : Trivy télécharge ou met à jour sa base de données locale contenant des informations sur les vulnérabilités connues.
- Analyse de l'image Docker : Trivy inspecte les couches de l'image pour extraire la liste des composants et fichiers.
- Rapport des vulnérabilités :
Trivy compare les composants détectés avec sa base de données et génère un rapport listant :
- Les vulnérabilités trouvées (CVE).
- Leur niveau de sévérité (
CRITICAL
,HIGH
,MEDIUM
, etc.). - Des solutions recommandées (patchs, mises à jour).
Objectif
Ce job analyse les images de conteneurs Docker pour détecter des vulnérabilités connues dans les dépendances ou la configuration.
Détails
- rules : Le job est déclenché uniquement si des fichiers dans le dossier terraform/ sont modifiés.
- CS_IMAGE : Spécifie l'image Docker à scanner (ici, ghcr.io/open-webui/open-webui).
- CS_SEVERITY_THRESHOLD : Définit le seuil minimal de gravité pour signaler une vulnérabilité. Les vulnérabilités avec un niveau de gravité inférieur à MEDIUM seront ignorées.
Utilité
Garantit que les conteneurs déployés ne contiennent pas de vulnérabilités critiques. Réduit les risques liés à l'utilisation de dépendances non sécurisées.
KICS IaC
kics-iac-sast:
rules:
- changes:
- terraform/**
Objectif
Ce job utilise KICS (Keeping Infrastructure as Code Secure) pour analyser les fichiers d'infrastructure as code (IaC), tels que les fichiers Terraform, et détecter des erreurs de configuration ou des vulnérabilités.
Détails
- rules : Ce job est exécuté uniquement pour des modifications dans le dossier terraform/.
Utilité
Vérifie les bonnes pratiques de configuration pour des fichiers IaC. Prévient des configurations dangereuses ou exposées aux attaques.
Secret Detection
secret_detection:
rules:
- changes:
- terraform/**
variables:
SECRETS_ANALYZER_VERSION: "6"
SECRET_DETECTION_HISTORIC_SCAN: "true"
Objectif
Ce job détecte des secrets, comme des clés API ou des mots de passe, dans le code source.
Détails
- rules : Le job s'exécute uniquement si des fichiers dans le dossier terraform/ sont modifiés.
- SECRETS_ANALYZER_VERSION : Spécifie la version de l'outil de détection de secrets (ici, la version 6).
- SECRET_DETECTION_HISTORIC_SCAN: Permet de scanner non seulement les changements récents, mais également les commits précédents pour une analyse exhaustive.
Utilité
Évite les fuites accidentelles de secrets dans le code. Identifie rapidement les failles avant qu'elles ne soient exploitées.
Résumé
Ce pipeline CI/CD GitLab intègre des étapes d'analyse de sécurité essentielles :
Container Scanning : Assure la sécurité des conteneurs Docker avant déploiement. IaC SAST (KICS) : Vérifie la sécurité des configurations d'infrastructure. Secret Detection : Empêche les fuites accidentelles de secrets.
Points forts :
- Approche conditionnelle : Les jobs ne s'exécutent que pour les fichiers pertinents (terraform/), optimisant ainsi les ressources.
- Variables configurables : Permettent de personnaliser les seuils de sensibilité et les versions des outils.
- Sécurité proactive : Aide à détecter et résoudre les vulnérabilités avant le déploiement en production.