Objectifs du module :

  • Comprendre les bases du DevSecOps et son importance dans le cycle de développement.
  • Apprendre à intégrer des scans de sécurité automatiques dans les pipelines CI/CD.
  • Élaborer et mettre en place une politique de test de sécurité pour détecter les vulnérabilités le plus tôt possible dans le cycle de développement.

1. Introduction à DevSecOps : Intégrer la sécurité dans le pipeline CI/CD

a. Qu'est-ce que DevSecOps ?

Définition :
DevSecOps est une approche qui intègre la sécurité dès le début et tout au long du processus de développement logiciel, au lieu de la traiter comme une étape séparée ou ultérieure. L’objectif est de “sécuriser dès le début” et de rendre chaque membre de l’équipe responsable de la sécurité.

Pourquoi est-ce important ?
Dans des environnements DevOps où les déploiements sont fréquents et les cycles de développement courts, la sécurité doit être intégrée automatiquement et en continu pour éviter les retards coûteux dus à des vulnérabilités détectées en production.

Vidéo de Cookie connecté:

b. Sécurité dans les pipelines CI/CD

CI/CD (Intégration continue et déploiement continu) :
Les pratiques de CI/CD visent à automatiser l'intégration du code, les tests et le déploiement. Il est essentiel d'intégrer la sécurité à chaque étape de ce pipeline pour détecter et corriger les vulnérabilités le plus tôt possible.

Principes DevSecOps dans CI/CD :

  • Automatisation des contrôles de sécurité.
  • Validation de la sécurité dans les phases de développement, test, et déploiement.
  • Réduction des risques en continu avec des tests réguliers.

Outils courants d'intégration de la sécurité dans les pipelines CI/CD :

  • Jenkins avec des plugins de sécurité.
  • GitLab CI/CD avec des scans intégrés de SAST/DAST.
  • CircleCI ou TravisCI avec des outils tiers comme Snyk, OWASP Dependency-Check.

2. Scans de sécurité automatiques (SAST, DAST)

a. Types de tests de sécurité automatisés

SAST (Static Application Security Testing) :
Les tests SAST analysent le code source ou le bytecode pour détecter les vulnérabilités avant que l'application ne soit exécutée. Ils sont généralement intégrés directement dans le pipeline CI et offrent une première ligne de défense.

Exemples d'outils SAST :

Vidéo de Poitou Jug:

DAST (Dynamic Application Security Testing) :
Les tests DAST examinent une application en cours d’exécution pour détecter les failles dans l'interaction avec les entrées et les sorties. Ils permettent d’identifier les vulnérabilités que SAST ne peut pas détecter, comme les problèmes de configuration ou les erreurs liées à l'environnement d'exécution.

Exemples d'outils DAST :

Vidéo de GitLab Unfiltered:

b. Intégration des tests automatisés dans les pipelines CI/CD

Tests de sécurité à chaque étape :

  • Phase de build : Intégrer des outils SAST pour analyser le code statiquement dès que le développeur fait un commit.
  • Phase de test : Ajouter des outils DAST après le déploiement en environnement de test pour examiner l'application exécutée.
  • Phase de déploiement : Vérifier la sécurité des configurations et des permissions des services.

Automatisation des scans :
Les outils comme SonarQube ou OWASP ZAP peuvent être configurés pour s'exécuter automatiquement dans le pipeline CI/CD à chaque commit ou chaque nouvelle version.

c. Reporting et gestion des vulnérabilités

Automatisation des alertes et du reporting :
Une fois les scans de sécurité exécutés, les résultats sont automatiquement transmis aux développeurs sous forme de rapports pour prioriser les correctifs. Certains outils, comme Snyk, peuvent ouvrir des pull requests automatiques avec des corrections.

Exploitation des résultats de tests :

  • Catégorisation des vulnérabilités par gravité.
  • Implémentation d'un seuil de vulnérabilités critiques bloquant le déploiement.

3. Mise en place d’une politique de test de sécurité dans les pipelines

a. Pourquoi une politique de test de sécurité est-elle nécessaire ?

Identification des risques le plus tôt possible :
Une politique de sécurité bien définie dans un pipeline CI/CD garantit que les tests de sécurité sont exécutés à chaque étape critique du cycle de vie du développement, minimisant ainsi les risques d'incidents en production.

Alignement des équipes sur les pratiques de sécurité :
Cela permet d’assurer que chaque équipe (développement, sécurité, opérations) est alignée sur les objectifs de sécurité à atteindre dans le cadre du développement continu.

b. Élaboration d’une politique de sécurité

Définir des critères de succès pour les scans de sécurité :

  • Identifier des seuils acceptables pour les vulnérabilités (failles critiques ou majeures) qui bloqueront le processus de CI/CD si elles sont détectées.
  • Définir les types de tests qui doivent être exécutés à chaque phase du pipeline.

Automatisation et enforcement :

  • Intégrer des gates de sécurité dans le pipeline, qui bloquent le déploiement si certains critères de sécurité ne sont pas atteints (comme la présence de failles critiques).
  • Mettre en place des scripts ou des plugins qui automatisent l'exécution des scans à chaque étape clé du pipeline CI/CD.

c. Surveillance et amélioration continue

Monitoring en continu :
Mettre en place des solutions de surveillance pour vérifier que les tests de sécurité sont bien exécutés à chaque cycle de développement et que les résultats sont exploités pour améliorer la sécurité.

Cycle d'amélioration :

  • Auditer régulièrement la politique de sécurité pour s'assurer de son efficacité.
  • Adapter les tests en fonction de l’évolution des menaces et des vulnérabilités.

d. Collaboration entre les équipes DevOps et Sécurité

Culture de sécurité partagée :
Promouvoir une culture où les équipes DevOps et les équipes de sécurité collaborent étroitement pour intégrer les tests de sécurité dans le cycle de développement.

Formations régulières :

  • Offrir des formations et des ateliers pour sensibiliser les équipes aux bonnes pratiques de sécurité dans les environnements DevOps.
  • Encourager les développeurs à devenir des "champions de la sécurité" dans leur équipe.

Conclusion du Module :

L'intégration de la sécurité dans les environnements CI/CD via une approche DevSecOps est essentielle pour assurer un développement rapide et sécurisé. En automatisant les tests de sécurité (SAST, DAST) et en mettant en place une politique claire de test dans les pipelines, les développeurs peuvent s’assurer que les vulnérabilités sont détectées et corrigées bien avant le déploiement en production. Cela permet de réduire les risques tout en maintenant l’efficacité des cycles de développement.

Formateur

Bertrand LECLERCQ

Consultant DevSecOps & Data Engineer


Avec 25 ans d'expérience dans le développement logiciel et une certification en Data Engineering de l'École des Mines Paris - PSL, je suis passionné par la cybersécurité, le big data et le DevOps. J'aime partager mes connaissances et aider la communauté à renforcer sa posture de sécurité.

J'ai créé une base de vulnérabilités librement accessible et je me forme en continu sur des plateformes comme TryHackMe. Mon objectif ? Démocratiser la cybersécurité et permettre à chacun de mieux comprendre les enjeux.

J'ai une solide expertise dans la conception et le déploiement de solutions sécurisées, ainsi qu'une expérience éprouvée dans la gestion de projets complexes. Maîtrisant un large éventail de technologies (Python, Go, Java, Docker, Kubernetes, etc.), je suis convaincu que la sécurité doit être intégrée dès le début du cycle de développement.

Le projet NoHackMe vous permet d'effectuer une veille Cyber, vous permet de découvrir le monde de la Cybersécurité ainsi qu'une section formation Cyber

Soutenez No Hack Me sur Tipeee