Les pipelines automatisés d’intégration continue/de livraison continue (CI/CD) accélèrent la compilation, les tests et l’envoi de codes. La plupart de ces systèmes reposent cependant sur la commodité et la rapidité d’utilisation au détriment de la sécurité. Une fois qu’un pipeline est compromis, il offre diverses options aux attaquants pour exfiltrer vos secrets ou informations, d’où l’intérêt du DevSecOps.
Le Development, Security and Operations est la forme évoluée du DevOps qui intègre la sécurité à chaque étape du cycle de vie du développement logiciel. Dans cet article, nous aborderons les meilleures pratiques à adopter pour renforcer la protection de votre pipeline CI/CD.
Intégration de la sécurité dès le début
Vous devez inclure l’aspect sécurité dès le début du cycle de développement, lors de la conception et de la planification des systèmes et des applications. Vos équipes mettent en œuvre des processus comme :
- les revues de code,
- l’analyse statique du code,
- la modélisation des menaces.
Nous appelons cette pratique le « Shift Left ». Vous devez dès lors former vos développeurs aux meilleures pratiques du DevSecOps en insistant sur la collaboration entre les équipes Dev, Sec et Ops. Pour faciliter ce pan de votre stratégie, profitez de l’accompagnement DevOps d’un spécialiste du conseil, de l’hébergement et l’infogérance.
Nous vous suggérons de choisir un expert capable d’intervenir sur les Clouds hybrides, privés et publics à l’instar de Microsoft Azure, Amazon AWS et OVH.
Utilisation d’outils de sécurité automatisés
Le DevSecOps mise sur les Tests Statiques de la Sécurité des Applications (SAST) en phase de développement. Ils permettent d’examiner le code source de votre application pour y trouver de potentielles failles. L’approche se limite à l’identification des patterns de code susceptibles d’induire des vulnérabilités (failles XSS, injections SQL…).
Pour les logiciels en cours d’exécution et déjà déployés, privilégiez les Tests Dynamiques de la Sécurité des Applications (DAST). Ils permettent de simuler une attaque du système du point de vue du cyberattaquant pour évaluer son niveau de protection.
Vous devez aussi faire des scans de vulnérabilité et des dépendances via les Tests Interactifs de la Sécurité des Applications (IAST). Ils servent à maintenir une surveillance continue tout en limitant les faux positifs.
Mise en place de contrôles d’accès robustes
L’une des meilleures solutions pour limiter les failles de votre pipeline CI/CD consiste à contrôler l’accès aux ressources et outils. N’hésitez pas à mettre en place un système basé sur :
- la gestion des identités et des accès (IAM),
- le principe du moindre privilège,
- l’authentification multifactorielle (MFA).
Appliquez vos mécanismes de contrôle d’accès de la manière la plus granulaire possible.
Surveillance continue et audit
Le concept de DevSecOps suppose le monitoring en temps réel de votre pipeline CI/CD. L’objectif de cette approche est basique : surveiller la disponibilité et la consommation des ressources. Nous recommandons cependant d’aller plus loin en configurant des alertes pour les activités suspectes. Cela vaut pour les nombreuses tentatives de connexion à un service sécurisé ou l’ajout imprévu d’un rôle privilégié.
Nous recommandons l’examen régulier des journaux d’audit et la mise en place d’un système de détection et réponse aux incidents. N’oubliez pas d’effectuer des revues de sécurité régulières.
Sécurisation des environnements de build et de déploiement
Dans un contexte DevSecOps, vous devez isoler chaque environnement du pipeline CI/CD des autres. Les modifications de vos équipes sur un build de développement ne doivent pas affecter de manière directe un build de déploiement. Il est cependant impossible d’isoler à 100 % un environnement informatique à cause des artefacts à portée de cellule.
Sécurité des conteneurs et des orchestrateurs
La sécurité passe aussi par la protection des conteneurs et des orchestrateurs du système. Vous devez définir et mettre en application des pratiques de création, déploiement et exécution qui protègent vos paquets de données. La sécurisation couvre l’ensemble du conteneur, des applications qu’il gère à l’infrastructure sur laquelle il repose.
La majorité des entreprises se servent des modèles de conception et technologies comme Kubernetes et Docker. Le défi de votre équipe de sécurité consiste à créer des solutions qui permettent une protection continue et intégrée des conteneurs et des orchestrateurs.
Gestion des secrets et des configurations
Les sociétés modernes se servent de la gestion des secrets pour stocker, envoyer et auditer leurs identifiants privilégiés non humains en toute sécurité. L’objectif ? S’assurer du bon fonctionnement des systèmes d’authentification.
La mise en place d’une approche DevSecOps passe aussi par une bonne gestion des configurations. Si la composition d’un élément de votre application interagit avec d’autres modifications, cette interaction doit être identifiée et suivie.
Tests de sécurité réguliers
Plus vous progressez dans le développement d’une application et plus sa vulnérabilité aux menaces connaît des changements. Vous devez effectuer des tests de sécurité réguliers pour optimiser la protection du pipeline à chaque étape avant de passer à la phase suivante. Vous évitez ainsi les rétropédalages pour modifier un élément fondamental du système et perturber les facettes ultérieures de l’application.