Contenu du cours
Comprendre et Maîtriser DevSecOps de A à Z
0/22
Comprendre et Maîtriser DevSecOps de A à Z – Cours et 202 questions pratiques (Copie 1)

Objectifs de la Leçon

  • Comprendre l’importance de la sécurisation des images conteneurisées.

  • Apprendre à construire des Dockerfiles sécurisés et à suivre les meilleures pratiques pour limiter la surface d’attaque.

  • Utiliser des outils de scanning (Trivy, Clair, Grype) pour analyser et valider la sécurité des images.

  • Intégrer ces contrôles dans un pipeline CI/CD pour assurer que les déploiements se font uniquement à partir d’artefacts sécurisés.

Table des Matières

  1. Objectifs et Présentation de la Leçon

  2. Introduction à la Sécurité des Conteneurs
     2.1. Importance de la sécurisation des images
     2.2. Risques liés aux images non sécurisées (vulnérabilités, mauvaises configurations)

  3. Bonnes Pratiques pour la Construction d’Images Docker Sécurisées
     3.1. Choisir une image de base minimale (ex. Alpine Linux)
     3.2. Exécuter les conteneurs avec un utilisateur non-root
     3.3. Nettoyer les caches et éliminer les artefacts inutiles

  4. Outils de Scanning des Images
     4.1. Présentation de Trivy
     4.2. Présentation de Clair
     4.3. Présentation de Grype
     4.4. Comparaison et critères de choix

  5. Intégration des Scans dans le Pipeline CI/CD
     5.1. Exemples d’intégration des scans (extraits YAML / Jenkinsfile)

  6. Études de Cas et Exemples Concrets
     6.1. Cas d’une startup tech
     6.2. Exemple dans une entreprise bancaire

  7. Exercices Pratiques et Corrigés Détaillés
     7.1. Exercice : Rédiger un Dockerfile sécurisé
     7.2. Exercice : Scanner une image Docker avec Trivy et analyser le rapport
     7.3. Exercice : Intégrer un job de scan dans un pipeline CI/CD

  8. Quiz de Révision

  9. Conclusion et Prévisualisation de la Leçon 10


1. Objectifs et Présentation de la Leçon

Objectifs :

  • Sensibiliser à l’importance de sécuriser les images conteneurisées.

  • Maîtriser l’écriture de Dockerfiles respectant les meilleures pratiques de sécurité.

  • Savoir utiliser des scanners comme Trivy, Clair et Grype pour analyser les vulnérabilités des images.

  • Intégrer ces contrôles dans un pipeline CI/CD pour assurer des déploiements sécurisés.

Présentation :

Cette leçon détaille la sécurité des conteneurs et des images Docker. Vous apprendrez à construire des images sécurisées, à utiliser des scanners pour vérifier leur intégrité et à intégrer ces scans dans vos pipelines. Des exemples concrets, des extraits de configuration et des exercices pratiques vous aideront à mettre en œuvre ces stratégies dans votre environnement professionnel.


2. Introduction à la Sécurité des Conteneurs

2.1. Importance de la Sécurisation des Images

  • Risques : Les images non sécurisées peuvent contenir des packages vulnérables, des configurations par défaut dangereuses ou des secrets accidentellement inclus.

  • Bénéfices : Des images sécurisées réduisent la surface d’attaque et assurent une meilleure fiabilité des applications déployées.

2.2. Risques et Meilleures Pratiques

  • Risques : Exploitation par des attaquants, propagation de malwares, accès non autorisé via des configurations laxistes.

  • Bonnes Pratiques :

    • Utiliser une image de base minimale.

    • Éviter d’exécuter des processus avec des privilèges élevés.

    • Supprimer les caches et les fichiers temporaires après l’installation des dépendances.


3. Bonnes Pratiques pour la Construction d’Images Docker Sécurisées

3.1. Choix d’une Image de Base Minimale

  • Utilisation d’Alpine Linux pour réduire la taille et le nombre de packages installés par défaut.

3.2. Exécution en Utilisateur Non-root

  • Créer un utilisateur dédié et exécuter le container avec cet utilisateur :

dockerfile
RUN adduser -D appuser
USER appuser

3.3. Nettoyage et Optimisation

  • Nettoyer les caches après l’installation :

dockerfile
RUN pip install --user -r requirements.txt && rm -rf /root/.cache

4. Outils de Scanning des Images

4.1. Trivy

  • Avantages : Rapide, facile à installer, détecte les vulnérabilités dans les paquets système et librairies.

  • Commande typique :

    bash
    trivy image myapp:latest

4.2. Clair

  • Fonctionnalités : Analyse statique des images et génère des rapports détaillés, souvent intégré dans des workflows CI/CD.

  • Cas d’usage : Utilisé dans des environnements de production nécessitant des rapports détaillés.

4.3. Grype

  • Points forts : Outil moderne pour le scanning des vulnérabilités, supporte plusieurs formats d’artefacts.

  • Commande typique :

    bash
    grype myapp:latest

4.4. Comparaison et Sélection d’Outil

  • Critères : Rapidité, facilité d’intégration, niveau de détail des rapports.

  • Choisir l’outil en fonction du contexte et des exigences de votre pipeline.


5. Intégration des Scans dans le Pipeline CI/CD

5.1. Exemple d’Intégration avec Jenkins ou GitLab CI

Exemple de Jenkinsfile :

groovy
pipeline {
agent any

stages {
stage('Build') {
steps {
echo 'Construction de l’image Docker...'
sh 'docker build -t myapp:latest .'
}
}
stage('Container Scan') {
steps {
echo 'Lancement du scan avec Trivy...'
sh 'trivy image myapp:latest'
}
post {
unsuccessful {
error "Vulnérabilités critiques détectées, pipeline bloqué."
}
}
}
stage('Tests') {
steps {
echo 'Exécution des tests unitaires...'
sh 'pytest tests/'
}
}
stage('Deploy') {
steps {
echo "Déploiement de l’application..."
sh './deploy.sh'
}
}
}
}

Exemple GitLab CI :

yaml
stages:
- build
- scan
- test
- deploy

build_job:
stage: build
script:
- echo "Build de l'image Docker..."
- docker build -t myapp:latest .

scan_job:
stage: scan
script:
- echo "Exécution du scan avec Grype..."
- grype myapp:latest || exit 1
allow_failure: false

test_job:
stage: test
script:
- echo "Exécution des tests..."
- pytest tests/

deploy_job:
stage: deploy
script:
- echo "Déploiement de l'application..."
- ./deploy.sh


6. Études de Cas et Retours d’Expérience

Cas d’Usage 1 : Startup Tech

  • Contexte : Une startup utilise un Dockerfile optimisé et intègre Trivy dans son pipeline CI/CD pour assurer des déploiements sécurisés.

  • Résultats : Réduction des vulnérabilités et amélioration de la stabilité des déploiements.

Cas d’Usage 2 : Banque

  • Contexte : Une institution financière scanne ses images Docker avec Clair et Grype, intégrées dans un pipeline CI/CD pour garantir la conformité et la sécurité stricte des environnements de production.

  • Impact : Prévention proactive des risques de sécurité et conformité aux normes règlementaires.


7. Exercices Pratiques et Corrigés Détaillés

Exercice 1 : Rédiger un Dockerfile Sécurisé

Consigne :

  • Créer un Dockerfile qui utilise Alpine, exécute en tant qu’utilisateur non-root et nettoie les caches après l’installation des dépendances.

Corrigé : Voir l’exemple fourni en section 3.

Exercice 2 : Scanner une Image avec Trivy

Consigne :

  • Exécuter le scan de l’image myapp:latest avec Trivy et analyser le rapport généré.

Corrigé : Utiliser la commande trivy image myapp:latest et examiner le rapport pour identifier des vulnérabilités telles que des paquets obsolètes ou des failles connues.

Exercice 3 : Intégrer le Scan dans un Pipeline CI/CD

Consigne :

  • Modifier un fichier .gitlab-ci.yml pour ajouter un stage de scanning avec Grype.

Corrigé : Utiliser l’exemple YAML fourni ci-dessus, en expliquant la logique de blocage du pipeline en cas de vulnérabilités critiques.


8. Quiz de Révision

  1. Pourquoi est-il important d’utiliser une image de base minimale dans un Dockerfile ?

  2. Quel outil utiliseriez-vous pour scanner une image Docker ?
    A) Trivy
    B) Nikto
    C) OWASP ZAP

  3. Que fait l’option || exit 1 dans un job CI/CD de scan d’image ?

  4. Citez deux bonnes pratiques pour sécuriser une image conteneurisée.

  5. Expliquez l’intérêt d’intégrer des scans de vulnérabilités dans un pipeline CI/CD.


9. Conclusion et Prévisualisation de la Leçon 10

Conclusion de la Leçon 9 :
Vous avez appris à construire des images Docker sécurisées en adoptant les meilleures pratiques (choix d’une image minimale, exécution non-root, nettoyage des caches). Vous avez découvert l’utilisation d’outils de scanning (Trivy, Clair, Grype) pour valider la sécurité des images et comment intégrer ces contrôles dans votre pipeline CI/CD. Ces démarches vous permettent de garantir que seuls des artefacts sécurisés sont déployés en production.

Prévisualisation de la Leçon 10 :
Dans la prochaine leçon, nous aborderons la Sécurité dans Kubernetes – notamment la mise en place de RBAC, Network Policies, et l’utilisation d’OPA pour garantir la sécurité et la conformité des déploiements sur cluster Kubernetes.