Évaluations & Projet Certifiant : M1 DevOps - CI/CD¶
Établissement : Sup de Vinci
Promotion : Mastère DevOps — M1 (Promotion 2026-2027)
Titre RNCP : RNCP 40165 - Bloc 5 (option) : Piloter l'alignement stratégique entre architectures et DevSecOps
Contribution certifiante : Section "Industrialisation et sécurisation des pipelines" pour le Dossier écrit individuel du Bloc 5 (MSPR 4.1).
Volume horaire : 28 heures (4 journées de 7 heures)
Modalités Globales de Validation & Barème¶
L'évaluation de ce module est conçue pour valoriser à la fois l'appropriation personnelle des concepts d'ingénierie et la capacité à concevoir et défendre en équipe une usine logicielle sécurisée répondant aux exigences strictes d'une PSSI :
pie title Répartition de la note finale du module (100%)
"QCM Individuel Wayground (40 questions)" : 50
"Projet Certifiant MSPR & Soutenance Orale" : 50 | Épreuve | Format | Durée | Pondération | Objectif pédagogique |
|---|---|---|---|---|
| 1. QCM Individuel (Wayground) | En ligne (individuel) | 40 min | 50% (/20) | Vérifier l'acquisition personnelle des concepts vus en cours et en TP. |
| 2. Projet Certifiant MSPR & Soutenance | Binôme (2 étudiants) | 25 min | 50% (/20) | Démontrer l'industrialisation complète d'une usine logicielle et prouver en direct le blocage d'une non-conformité sur le dépôt modèle SecurePay API. |
1. Guide de l'Évaluation QCM (50%)¶
Informations Pratiques sur l'Épreuve
- Date de passage : Jour 4 au matin
- Plateforme : Wayground (un code d'accès vous sera fourni par l'intervenant).
- Format : 40 questions (25 à choix unique et 15 à choix multiples / Checkbox dont 10 à deux réponses et 5 à trois réponses), de 30 à 60 secondes par question.
- Conditions : Épreuve individuelle, sans documents ni accès externe.
Philosophie de l'Épreuve¶
Ce questionnaire n'est pas un test de mémorisation théorique : il évalue vos réflexes d'ingénieurs DevOps / Platform face à des situations concrètes d'architecture, de configuration et de production.
Référentiel des 8 Domaines de Révision¶
Pour vous préparer efficacement, voici la cartographie des sujets abordés, tous directement issus de vos manipulations lors des travaux pratiques :
1. Fondations CI/CD & GitLab CI
- Ordonnancement des pipelines : Déclaration et séquencement des
stages:, exécution parallèle des jobs d'un même stage. - Cache vs Artifacts : Différence d'usage cruciale (optimisation best-effort pour accélérer les dépendances
node_modulesvs transmission garantie de fichiers distribuables entre stages). - Runners & Sélecteurs : Typologie des runners (partagés vs dédiés), ciblage par
tags:, exécuteurs conteneurisés. - Variables de CI : Utilisation des variables masquées (
Masked) et protégées (Protected), règles de filtrage dans les logs. - Gestion des échecs : Rôle de la directive
allow_failure: truepour les contrôles non bloquants. - Stratégie de branching : Principes du Trunk-Based Development (branches courtes, intégration continue quotidienne, Feature Flags) vs Git Flow.
2. Conteneurisation Industrielle & Docker dans la CI
- Multi-stage Builds : Pourquoi et comment isoler l'étape de compilation (outils lourds, devDependencies) de l'image de production finale.
- Images de base minimales : Intérêt de choisir des images Alpine ou Distroless (réduction drastique de la surface d'attaque et des CVE).
- Sécurité du runtime conteneur : Principe de moindre privilège et déclaration systématique d'un utilisateur non privilégié (
USER non-root). - Isolation Docker en CI : Risques d'évasion de conteneur liés au montage du socket
/var/run/docker.sockpar rapport à des approches isolées (dind / k8s). - Mise en cache BuildKit : Optimisation des builds sur des runners éphémères via
--cache-from. - Variables de registre : Exploitation de
$CI_REGISTRY_IMAGEet$CI_COMMIT_SHORT_SHA.
3. Pyramide des Tests & Feedback Loop
- Pyramide des tests : Pourquoi les tests unitaires doivent être majoritaires et exécutés en premier (Fail Fast).
- Services éphémères : Démarrage de bases de données ou de caches avec la directive
services:(PostgreSQL, Redis). - Rapports natifs dans GitLab : Export au format JUnit XML (
artifacts:reports:junit) pour visualiser l'état des tests dans les Merge Requests. - Couverture de code (Code Coverage) : Signification de la métrique, configuration du badge et seuils minimaux.
- Exécution conditionnelle : Utilisation de la directive moderne
rules:et du filtrechanges:.
4. Shift Left & Détection de Secrets
- Philosophie Shift Left : Pourquoi corriger une faille au plus tôt (dès le commit) coûte jusqu'à 100 fois moins cher qu'en production.
- Détection des secrets avec Gitleaks : Détection basée sur les regex de signatures connues et le calcul d'entropie de Shannon.
- Pre-commit hooks vs Pipeline CI : Barrière locale préventive (
pre-commit) complétée par la barrière bloquante de la CI. - Procédure de remédiation : Révocation et rotation immédiate de tout secret committé (un nouveau commit masquant le secret ne suffit jamais).
- Gestion moderne des secrets : Chiffrement asymétrique avec Mozilla SOPS ou injection dynamique via HashiCorp Vault.
5. Analyse Statique de Sécurité (SAST) & Clean Code
- Fonctionnement du SAST : Analyse à froid sur arbres syntaxiques (AST) sans exécution.
- SonarQube / Semgrep : Fichier
sonar-project.propertieset analyse des flux de données non assainis. - Quality Gate bloquante : Rôle contractuel de la Quality Gate et interruption du pipeline si de nouvelles vulnérabilités apparaissent.
- Linter vs SAST : Vérification formelle de style et syntaxe (Linter) vs détection de faiblesses exploitables CWE (SAST).
- Gestion des faux positifs : Procédure formelle de justification et validation traçable pour audit PSSI.
6. Software Composition Analysis (SCA) & Vulnérabilités Conteneurs
- SCA vs SAST : Audit des dépendances open source tierces et de leurs CVE publiques vs code source propriétaire.
- Scan de conteneurs avec Trivy : Audit de sécurité des images Docker (
trivy image). - Seuils bloquants : Utilisation du drapeau d'échec (
--exit-code 1 --severity CRITICAL). - SBOM (Software Bill of Materials) : Rôle, valeur pour la traçabilité de la supply chain et standards (CycloneDX, SPDX).
- Mise à jour continue : Rôle d'outils comme Renovate ou Dependabot, et gestion d'exceptions via
.trivyignore.
7. Analyse Dynamique (DAST) & Concepts IAST
- Fonctionnement du DAST : Test en boîte noire de l'application vivante via des requêtes HTTP (OWASP ZAP).
- Scan Passif vs Scan Actif : Analyse neutre du trafic légitime vs génération de payloads d'attaques agressifs (injections SQL, XSS).
- Exécution automatisée en CI : Lancement de scripts headless (
zap-baseline.py) via l'image conteneurisée officielle. - Authentification d'API : Injection d'en-têtes de session ou de jetons JWT (
Authorization: Bearer <token>). - Technologie IAST : Fonctionnement par agent d'instrumentation dans le runtime applicatif (analyse de l'intérieur, quasi-zéro faux positif).
8. GitOps, Métriques DORA & Conformité PSSI
- Modèle GitOps (ArgoCD) : Pourquoi le modèle Pull (opérateur interne au cluster) est plus sécurisé que le modèle Push de la CI.
- Métriques DORA : Définition des 4 indicateurs et focus sur le MTTR (Time to Restore Service).
- Conformité & Traçabilité PSSI : Rôle probant de la pipeline CI/CD comme preuve immuable du contrôle des changements lors des audits de sécurité et de conformité.
Conseils de Révision
- Reconnectez-vous sur votre dépôt de TP et relisez attentivement les directives de votre
.gitlab-ci.ymlet de votreDockerfile. - Pensez en ingénieur SRE / Sécurité : la bonne réponse privilégie toujours l'isolation, la minimisation des privilèges et la reproductibilité des environnements.
- Attention aux questions à choix multiples : 15 questions du QCM sont de type Checkbox et comportent plusieurs bonnes réponses (2 ou 3) à cocher pour valider la question.
2. Projet Certifiant MSPR & Soutenance Orale (50%)¶
Dépôt Officiel du Projet
Le projet repose sur la baseline applicative vulnérable fournie dans le dépôt GitHub officiel :
https://github.com/Momotoculteur/securepay-api
Scénario d'Entreprise : SecurePay Solutions¶
Vous intervenez en tant qu'Ingénieurs Platform & DevSecOps pour le compte de SecurePay Solutions, une FinTech en pleine croissance soumise à des exigences de sécurité et des audits stricts (PSSI d'entreprise).
Actuellement, l'équipe de développement déploie manuellement ses micro-services sur des serveurs Linux via SSH. Des audits récents ont révélé :
- Des clés d'API et secrets cloud codés "en dur" dans l'historique Git.
- Des images Docker massives (> 1.2 Go) tournant en tant que
rootavec des centaines de vulnérabilités connues (CVE critiques). - Une absence totale de tests automatisés avant la mise en production.
- Aucune traçabilité des modifications ni barrière de contrôle (Quality Gate).
Votre Mission¶
Concevoir, implémenter et documenter une usine logicielle CI/CD industrielle et inviolable capable de bloquer automatiquement toute livraison non conforme à la PSSI (Politique de Sécurité des Systèmes d'Information).
Les binômes doivent forker ou cloner le dépôt modèle officiel :
Architecture du Pipeline Attendu¶
Votre pipeline .gitlab-ci.yml (ou GitHub Actions) devra orchestrer les étapes suivantes de manière ordonnée et optimisée :
flowchart LR
LINT["1. Lint & Secrets\n(Gitleaks)"] --> TEST["2. Tests Auto\n(Unit & Intégration)"]
TEST --> SAST["3. Analyse SAST\n(SonarQube / Semgrep)"]
SAST --> BUILD["4. Build Multi-stage\n(Docker & BuildKit)"]
BUILD --> SCAN["5. Scan Image\n(Trivy)"]
SCAN --> DEPLOY["6. Deploy Staging\n(Review App)"]
DEPLOY --> DAST["7. Scan DAST\n(OWASP ZAP)"] 1. Gestion des Secrets & Pre-commit (Compétence B5C1)
- Mise en place d'un job de détection de secrets basé sur Gitleaks.
- Le job doit échouer immédiatement si un secret ou une clé privée est détecté dans le commit.
- Configuration propre des variables sensibles sous forme de variables Masked et Protected.
2. Pyramide des Tests & Feedback Loop
- Stage de tests unitaires avec calcul du taux de couverture de code (code coverage).
- Stage de tests d'intégration utilisant un service de base de données éphémère (
services:PostgreSQL ou Redis). - Export des rapports au format JUnit XML (
artifacts:reports:junit) pour affichage natif dans l'interface de Merge Request.
3. Analyse Statique de Sécurité (SAST & Clean Code)
- Intégration de SonarQube (ou SonarCloud / Semgrep) pour scanner le code source propriétaire.
- Configuration d'une Quality Gate bloquante : le pipeline doit obligatoirement échouer si de nouvelles vulnérabilités de sévérité
CRITICALouHIGHsont introduites.
4. Build Docker Industriel & SBOM (Supply Chain Security)
- Rédaction d'un
Dockerfilemulti-stage optimisé :- Séparation stricte de l'environnement de build et de l'environnement de runtime.
- Image finale minimale (Alpine ou Distroless).
- Exécution sous utilisateur non privilégié (
USER 1001/ non-root).
- Utilisation de Docker Buildx / BuildKit avec cache distant (
--cache-from). - Génération d'un inventaire des composants logiciels (SBOM) au format CycloneDX ou SPDX.
5. Scan des Vulnérabilités de l'Image Conteneur avec Trivy (Compétence B5C1)
- Scan de l'image Docker finale construite (
trivy image). - Détection des vulnérabilités au niveau de l'OS de base et des dépendances logicielles embarquées.
- Paramétrage d'un seuil de rupture : si une vulnérabilité
CRITICALest détectée sans correctif disponible, le pipeline s'interrompt avec code retour 1.
6. Déploiement Staging & DAST Automatisé (Compétence B5C2)
- Démarrage automatique du conteneur dans un environnement de test éphémère.
- Exécution d'un scan dynamique en boîte noire avec OWASP ZAP (
ghcr.io/zaproxy/zaproxy:stable). - Récupération du rapport HTML de scan en tant qu'artefact téléchargeable.
- Blocage du pipeline en cas de détection de failles majeures (XSS, injections, en-têtes de sécurité manquants).
Livrables Attendus (Jour 4 avant 13h30)¶
Chaque binôme doit fournir :
-
Le Dépôt Git du Projet :
- Code source de l'application : initialisé à partir du dépôt modèle officiel Momotoculteur/securepay-api.
- Fichier
.gitlab-ci.ymlstructuré, factorisé et largement commenté. Dockerfilemulti-stage sécurisé.README.mdexpliquant l'architecture, le déclenchement et les étapes de build local.
-
La Note d'Architecture Sécurité (2 à 3 pages PDF) :
- Document formalisant l'architecture de sécurité, directement exploitable pour la section Bloc 5 (MSPR 4.1) de votre mémoire de certification.
- Justification de chaque barrière de sécurité face aux exigences de la PSSI.
- Tableau de bord des vulnérabilités traitées et plan de remédiation associé.
-
Le Support de Soutenance :
- 6 à 8 slides synthétiques présentant l'architecture, les choix techniques, les blocages de sécurité et les métriques de pipeline.
Modalités de la Soutenance Orale (Jour 4 Après-midi)¶
- Durée totale : 25 minutes par binôme.
- 15 minutes de présentation et Démonstration Live :
- Présentation synthétique de l'architecture et des métriques de pipeline (5 min).
- Démonstration en direct du passage nominal du pipeline complet (5 min).
- Scénario d'attaque / injection en direct (5 min) : Vous devrez pousser une branche contenant volontairement un faux secret ou une faille critique et prouver en direct devant l'examinateur que votre pipeline bloque net la livraison.
- 10 minutes d'échanges techniques :
- Questions de l'intervenant sur vos choix d'implémentation, la conformité RNCP, et la gestion des faux positifs en environnement réel.
- 15 minutes de présentation et Démonstration Live :
Grille d'Évaluation & Barème (/20)¶
| Critère d'évaluation | Éléments vérifiés | Points |
|---|---|---|
| 1. Architecture & Efficacité CI/CD | Pipeline structuré, stages logiques, bonne gestion du cache vs artifacts, utilisation de Docker BuildKit, rapidité d'exécution. | / 4 pts |
| 2. Sécurité Shift Left & SAST (B5C1) | Intégration réussie de Gitleaks, blocage effectif en cas de fuite de secret, configuration SonarQube / Semgrep avec Quality Gate bloquante. | / 5 pts |
| 3. Sécurité des Conteneurs & SCA (B5C1) | Dockerfile multi-stage exemplaire (non-root, minimal), scan Trivy fonctionnel avec seuils bloquants, génération du SBOM. | / 4 pts |
| 4. Tests Automatisés & DAST (B5C2) | Tests unitaires & intégration avec services, rapport JUnit, scan OWASP ZAP opérationnel avec génération d'artefacts HTML. | / 4 pts |
| 5. Soutenance Orale & Démo Live | Clarté de la présentation, maîtrise technique lors des questions/réponses, succès de la démonstration du blocage en direct. | / 3 pts |
| TOTAL | Note globale du projet d'industrialisation (50% de la note du module) | / 20 pts |