Normes & gouvernance
11 mars 2025

ISO27001 — A8.29 avec “CI/CD pipeline”— Intégration continue et déploiement continue


La mesure de sécurité de l’annexe A8.29 de la norme ISO 27001:2022 est intitulée “Tests de sécurité en développement et acceptation”.

Les organisations doivent définir et mettent en œuvre des processus de test de sécurité tout au long du cycle de vie du développement.

L’objectif est d’identifier et de corriger les vulnérabilités avant que les systèmes ou applications ne soient déployés en production.

Ces tests incluent des analyses statiques et dynamiques du code, des évaluations de vulnérabilités et des tests de pénétration.

Je vous invite à lire l’article ici sur DAST et SAST !

Il existe plusieurs moyens d’assurer la conformité à cette exigence de la norme.

Ici j’aimerais vous présenter une approche qui se rapproche de l’idéal recherché : suivre et tester en continu tous les changements.


Les “pipelines CI/CD” (intégration continue et déploiement continu en français) sont des pratiques essentielles dans le développement logiciel moderne.

Ces processus cherche à automatiser les étapes du développement logiciel pour améliorer l’efficacité, la qualité et la rapidité de livraison des applications.

pipeline — Photo by Christian Bass on Unsplash

Concrètement?

L’objectif de l’intégration en continue (CI — Continuous integration) est de détecter rapidement les erreurs et d’améliorer la qualité du code en permettant des validations fréquentes, ce qui facilite également la collaboration entre les équipes de développement.

Comment?

Intégrer rapidement et régulièrement les modifications de code dans un dépôt central et faire une série de tâche comme compiler celui-ci, des tests unitaires et d’intégration, et l’analyse du code pour détecter les erreurs le plus tôt possible

Pour le déploiement continu (CD — Continuous Delivery) c’est une extension de l’intégration continue qui automatise le processus de mise en production des modifications validées. Dans un environnement de déploiement continu, dès qu’une modification passe tous les tests automatisés, elle est automatiquement déployée dans l’environnement de production idéalement sans intervention manuelle. Cela permet d’accélérer la livraison des nouvelles fonctionnalités aux utilisateurs finaux et d’améliorer la réactivité face aux retours clients


Ces pratiques couvrent plusieurs mesures de sécurité définies dans l’ISO 27001:2022, notamment :

  • Surveillance des systèmes (ISO 27002–A8.16) : L’intégration des métriques et des logs dans le pipeline permet une supervision continue de l’état de sécurité des applications.
  • Sécurité du développement logiciel (ISO 27002–A8.25) : L’automatisation des tests et des revues de code améliore la détection précoce des vulnérabilités.
  • Développement sécuritaire (ISO 27002–A8.28) : L’usage de DevSecOps permet d’intégrer la sécurité dès les premières phases du développement.
  • Test de sécurité dans le développement et l’acceptation (ISO27002 — A8.29) : les tests de sécurité doivent être intégrés au processus de développement depuis la phase de conception initiale jusqu’à l’acceptation finale.
  • Séparation des environnements de test, développement et de production (ISO27001–A8.31): Pour une séparation claire entre les environnements pour protéger les systèmes critiques et prévenir les accès non autorisés
  • Contrôle des changements (ISO 27002–A8.32) : L’intégration continue permet de surveiller et d’approuver les modifications apportées au code source de manière sécurisée.
  • Test des informations (ISO 27002–A8.33) : Les pipelines CI/CD facilitent la mise en œuvre de tests automatisés et continus pour garantir la qualité et la sécurité des applications avant leur déploiement en production.

Origine

Avant l’apparition des “pipelines CI/CD”, les équipes de développement suivaient des méthodes comme le modèle en cascade.

Ce processus linéaire impliquait de compléter chaque phase du développement (analyse, conception, codage, tests, déploiement) avant de passer à la suivante. Cela engendrait souvent des retards importants, car les erreurs détectées tardivement nécessitaient de revenir en arrière et de corriger les phases précédentes. Les tests manuels prenaient du temps, et le déploiement était souvent un processus risqué et laborieux.

Le concept d’intégration continue a émergé dans les années 1990 avec l’essor des pratiques Agile et de l’extreme programming (XP).

Ces approches visaient à réduire les frictions entre le développement et le déploiement en adoptant des cycles courts et itératifs. Plus tard, avec l’évolution des infrastructures cloud et des outils DevOps, le déploiement continu est devenu une extension naturelle de l’intégration continue, complétant le pipeline CI/CD.

Pourquoi a-t-on changé de méthode?

Simplement parce que les pratiques étaient inefficaces pour répondre aux besoins de rapidité et de qualité des logiciels modernes. Les équipes perdaient du temps à corriger des erreurs, les livraisons étaient lentes, et les risques en production étaient élevés.

Pour référence — je vous invite à lire le livre “The Phoenix Project” par Gene Kim, Kevin Behr, George Spafford.


Définitions Clés

  • Agile : Une méthodologie de gestion de projet qui favorise la flexibilité, la collaboration et l’amélioration continue. Agile repose sur des cycles de travail courts appelés sprints, permettant aux équipes de livrer des incréments de produit fonctionnels tout en ajustant leurs priorités en fonction des retours d’expérience.
  • Extreme Programming (XP) : Une méthodologie de développement logiciel qui pousse les principes Agile à un niveau supérieur en mettant l’accent sur des pratiques comme le développement piloté par les tests (TDD — Test Driven Development), les livraisons fréquentes et la communication constante avec le client. XP vise à améliorer la qualité du code et à s’assurer que les besoins du client sont continuellement satisfaits.
  • DevOps : Une culture et un ensemble de pratiques qui visent à unifier le développement logiciel (Dev) et les opérations informatiques (Ops). DevOps met l’accent sur la collaboration, l’automatisation et la surveillance continue pour accélérer le cycle de développement et améliorer la qualité des logiciels tout en réduisant les délais de mise en production.
  • DevSecOps : Une extension de DevOps qui intègre la sécurité (Sec) dès les premières étapes du cycle de développement logiciel. DevSecOps cherche à automatiser les contrôles de sécurité et à rendre chaque membre de l’équipe responsable de la sécurité, réduisant ainsi les vulnérabilités et garantissant des déploiements sûrs.
  • Intégration Continue (CI) : Une pratique consistant à fusionner régulièrement le code de tous les développeurs dans une branche principale et à exécuter des tests automatisés pour vérifier la qualité du code.
  • Déploiement Continu (CD) : Une stratégie visant à déployer automatiquement les applications dans des environnements de production ou de préproduction une fois que les tests sont passés avec succès.

Pourquoi utiliser un Pipeline CI/CD?

  1. Amélioration de la Qualité : Les tests automatisés détectent les erreurs plus tôt dans le cycle de développement, réduisant les bugs en production.
  2. Gain de Temps : L’automatisation des tâches fastidieuses, comme les tests et les déploiements, libère les équipes pour se concentrer sur des activités à valeur ajoutée.
  3. Livraisons Plus Rapides : Avec des cycles de livraison plus courts, les fonctionnalités atteignent les utilisateurs plus rapidement.
  4. Collaboration Améliorée : La CI/CD favorise une culture de responsabilité partagée, réduisant les silos entre développeurs, testeurs et opérateurs.

Intégrer un Pipeline CI/CD

1. Analyse des Besoins Commencez par évaluer vos besoins actuels :

  • Quelle est la fréquence des déploiements? Existe-t-il une fréquence minimale idéale pour assurer l’efficacité des pipelines CI/CD? Par exemple, les équipes peuvent viser des déploiements quotidiens ou hebdomadaires en fonction de leur rythme de travail et de la complexité des projets.
  • Quels sont les points de friction dans votre processus actuel? Par exemple, des cycles de tests trop longs, des conflits lors de la fusion de code ou des retards dans les déploiements.
  • Disposez-vous d’outils existants compatibles avec CI/CD? Par exemple, vous pourriez avoir besoin d’un outil d’intégration continue comme Jenkins ou GitHub Actions, d’une plateforme de gestion de version comme Git, et de frameworks de tests automatisés comme Selenium ou Cypress.

2. Choix des Outils Pour les petites et moyennes entreprises, il est crucial d’opter pour des outils simples et abordables. Voici quelques suggestions :

  • CI/CD Tools : Jenkins, GitHub Actions, GitLab CI/CD ou CircleCI.
  • Version Control : Git.
  • Gestion des Tests : Selenium, Jest ou Cypress.

Autres outils:

  • Concourse: C’est un outil open-source pour construire les mécanismes de CI et CD.
  • GoCD: Il est utilisé pour la modélisation et la visualisation.
  • Screwdriver C’est une plateforme de construction pour le CD.
  • Spinnaker: C’est une plateforme de CD utilisée pour construire un environnement multi-cloud.

3. Mise en Place du Pipeline

  • Configuration de l’Intégration Continue :
  • Installez un outil CI pour automatiser la compilation et les tests.
  • Configurez des builds automatiques à chaque changement de code dans le dépôt.
  • Ajout des Tests Automatisés :
  • Implémentez des tests unitaires et fonctionnels pour valider le comportement de l’application.
  • Configuration du Déploiement Continu :
  • Automatisez le déploiement dans un environnement de staging ou production avec des scripts et des outils comme Docker ou Kubernetes.

4. Formation et Adoption Assurez-vous que votre équipe comprend les nouvelles pratiques. Organisez des formations pour sensibiliser les employés aux avantages et à l’utilisation efficace des pipelines CI/CD. Voici les concepts et pratiques que l’équipe doit maîtriser :

  • Les bases des pipelines CI/CD : Comprendre les étapes clés comme l’intégration continue, les tests automatisés et le déploiement continu.
  • Les outils spécifiques : Formation à l’utilisation des outils choisis (Jenkins, GitHub Actions, Docker, etc.).
  • Les bonnes pratiques de développement : Tests unitaires, code propre, revues de code.
  • La culture DevOps : Collaboration, partage de responsabilités et amélioration continue.
  • La sécurité dans le développement : Intégration des principes DevSecOps dès le début du processus.
  • Les processus de surveillance et de métriques : Suivi des performances et gestion des incidents.

5. Surveillance et Amélioration Continue

  • Mettez en place des métriques pour surveiller la performance du pipeline. Par exemple, vous pourriez suivre des indicateurs comme le temps moyen pour un build (Mean Time to Build), le taux de réussite des builds, le délai moyen de déploiement (Mean Time to Deploy), le taux de retour en arrière (Rollback Rate) après un déploiement, et le temps moyen de résolution des incidents (Mean Time to Recovery).
  • Révisez régulièrement les processus pour identifier des axes d’amélioration.

En automatisant les étapes clés du développement logiciel, les entreprises peuvent livrer des produits de meilleure qualité, plus rapidement et avec moins de stress pour leurs équipes. Avec une planification soigneuse et des outils adaptés, même les petites organisations peuvent bénéficier pleinement des avantages de la CI/CD.


Critères de Succès

Une fois votre pipeline CI/CD mis en œuvre, plusieurs indicateurs peuvent vous aider à évaluer son efficacité et confirmer que l’implémentation a été réussie. Voici quelques critères clés :

  • Fréquence des mises en production : Un déploiement plus fréquent et fluide indique une bonne adoption du pipeline.
  • Stabilité et fiabilité : Une réduction des échecs de déploiement et des incidents post-production témoigne d’une amélioration de la qualité.
  • Traçabilité des changements : Chaque mise à jour est documentée par un billet, assurant la transparence et la conformité aux bonnes pratiques.
  • Temps moyen de résolution des incidents (MTTR) : Une amélioration de la rapidité de détection et de correction des erreurs grâce aux logs et alertes automatisées.
  • Taux de réussite des builds : Une diminution des échecs des builds reflète une meilleure qualité du code et un bon processus d’intégration.
  • Engagement des équipes : Les développeurs et opérateurs comprennent et utilisent efficacement le pipeline, et sont capables d’identifier et de corriger les erreurs rapidement.
  • Sécurité intégrée : La mise en place de scans automatisés (SAST/DAST) permet de détecter et corriger les vulnérabilités avant la mise en production.
  • Surveillance et alertes : Un système de monitoring efficace est en place pour suivre la performance et détecter les anomalies en temps réel.

Si ces éléments sont visibles dans votre environnement, vous pouvez considérer que votre pipeline CI/CD est bien en place et apporte une réelle valeur à votre organisation.



Je vous invite à cliquer sur “Follow” pour continuer d’en apprendre plus sur le domaine de la sécurité de l’information.

Patrick Boucher
Président fondateur
25+ ans d’expérience en sécurité, piratage éthique, continuité des affaires
Écrivez-nous

Formulaire Sticky Services

Envie de travailler avec nous ?

Parlez-nous de vos enjeux. On verra rapidement si on est la bonne équipe pour vous.