Les pipelines CI/CD sont de puissants leviers pour un développement logiciel plus rapide et plus fréquent, de la conception au déploiement. Mais lorsqu'ils sont arrivés sur la scène technologique, ils comportaient souvent un maillon manquant : la sécurité.
C'est un problème, surtout si l'on considère des statistiques comme celle-ci : environ une organisation sur cinq a signalé un incident de sécurité dans son pipeline CI/CD au cours de l'année précédente, selon une enquête récente menée par Techstrong Research.
À mesure que les pipelines CI/CD sont devenus de plus en plus courants, ils ont également modifié le paysage des menaces pour les équipes logicielles. Comme le Projet Open Worldwide Application Security (OWASP) le souligne : « Compte tenu de leur importance et de leur popularité, les pipelines CI/CD sont aussi une cible attrayante pour les hackers malveillants, et leur sécurité ne peut être négligée. »
Dans cet article, nous allons explorer les risques spécifiques — ainsi que les principes et pratiques efficaces pour atténuer ces risques et garantir la sécurité des pipelines CI/CD.
Qu'est-ce qu'un pipeline CI/CD ?
D'abord, assurons-nous d'être au même niveau : qu'est-ce que le CI/CD ? Abréviation de intégration continue (Continuous Integration) et livraison continue (Continuous Delivery), le CI/CD désigne un ensemble de processus et d'outils qu'utilisent les équipes logicielles modernes pour concevoir, construire et finalement déployer — avec l’automatisation comme l’un des moteurs essentiels d’une livraison et d’une mise à jour du code plus rapides et plus fréquentes.
Voici comment nous l’avons défini dans notre article précédent, « Aperçu du pipeline CI/CD : pourquoi vous devriez le connaître » : « Un pipeline CI/CD est un processus de développement et de livraison de logiciels transparent, automatisé et fiable. »
L'objectif n’est généralement pas seulement d’expédier plus vite et plus fréquemment — il s’agit aussi d’améliorer la qualité, la fiabilité et — à condition de lui accorder la priorité correcte — la sécurité.
Risques de sécurité courants des pipelines CI/CD : 5 axes de vigilance
Les racines de nombreux risques liés à la sécurité CI/CD devraient sembler au moins en partie familières aux professionnels de la tech. Des éléments tels que le contrôle d'accès et l'octroi excessif de privilèges, une surveillance et une journalisation insuffisantes, des dépendances et chaînes d’approvisionnement logicielles non contrôlées, tous concourent à l’augmentation des risques lorsque ces aspects ne sont pas correctement gérés.
L’OWASP a publié une liste des 10 principaux risques CI/CD en matière de sécurité qui mérite d’être utilisée comme référence. Il s’agit d’une déclinaison du très populaire OWASP Top 10 des risques de sécurité des applications web, qui fait office de standard de référence dans le domaine.
Les risques des pipelines CI/CD peuvent être autant introduits qu’exacerbés par l’automatisation. De nombreux risques sont intégrés automatiquement — ou déployés en production automatiquement — dans les pipelines CI/CD. Assez ironiquement, l’automatisation de la sécurité de ces pipelines avec des outils Infrastructure as Code (IaC) ou d’autres solutions d’automatisation peut elle aussi introduire ou amplifier les risques si l’on n’y prête pas attention, précise Derek Ashmore, Application Transformation Principal chez Asperitas.
Voici cinq domaines clés de risque à considérer pour sécuriser vos pipelines CI/CD, selon Ashmore :
- Contrôle d'accès : « Le contrôle d'accès est souvent surdimensionné par souci de commodité et ne respecte pas les principes du moindre privilège et du double contrôle », explique Ashmore. En général, le principe du moindre privilège doit prévaloir ici – ne donnez pas aux personnes ni aux machines un accès à des données ou systèmes dont elles n’ont pas réellement besoin pour accomplir leur travail.
- Dépendances non validées : Les logiciels actuels – et par conséquent, les pipelines CI/CD – s’appuient souvent sur des bibliothèques tierces et d’autres dépendances externes, qui peuvent parfois présenter des vulnérabilités. « Veillez toujours à ce que les dépendances externes soient validées et disposent d’une chaîne de traçabilité vérifiable », précise Ashmore.
- Audit et journalisation : Assurez-vous de disposer d’un système complet d’audit et de journalisation. Un manque de visibilité et de possibilités d’audit peut entraîner des expositions de sécurité accrues dont vous ne serez autrement pas conscient.
- Élévation de privilèges : L’automatisation – intrinsèque aux CI/CD et à la sécurité CI/CD – peut parfois être développée en silos, ce qui crée des lacunes involontaires où les privilèges peuvent être augmentés en exécutant une séquence d’automatisation inattendue. « Pour réduire ce risque, veillez à appliquer le moindre privilège et à mettre en œuvre des cas de test pour les flux de travail d’automatisation ainsi que pour les tâches ou pipelines individuelles », recommande Ashmore.
- Tests automatisés inadéquats : Les tests automatisés sont essentiels non seulement pour une sécurité robuste des pipelines CI/CD – pensez, par exemple, aux analyses automatisées de vulnérabilités pour les images de conteneurs – mais aussi pour un pipeline sain dans l’ensemble. « Les défauts des pipelines peuvent créer des vulnérabilités de sécurité non souhaitées et affecter négativement les équipes de développement applicatif en les empêchant d’effectuer leurs tâches attribuées », affirme Ashmore.
10 Meilleurs outils CI/CD !
Here's my pick of the 10 best software from the 10 tools reviewed.
15 meilleures pratiques pour renforcer la sécurité CI/CD
Une fois que vous avez bien compris les risques, il est temps de se tourner vers les solutions. La bonne nouvelle : il y en a beaucoup, en partie parce que l’industrie dans son ensemble a pris conscience de l’importance d’intégrer la sécurité comme priorité dans le CI/CD.
Ashmore d’Asperitas nous a dressé la liste de 15 bonnes pratiques et tactiques généralement reconnues pour renforcer la sécurité des pipelines CI/CD. Sans plus attendre :
- Utilisez des systèmes de gestion de versions sécurisés : Les systèmes de gestion de versions comme Git enregistrent l’historique des modifications, ce qui peut s’avérer indispensable pour enquêter sur des failles de sécurité ou d’autres incidents. « Idéalement, rien ne devrait être modifié manuellement », affirme Ashmore. Consultez notre liste complète d’outils de gestion de code source pour découvrir plus d’options : « 20 meilleurs outils de gestion de versions passés en revue »
- Appliquez le principe du moindre privilège : Veillez à ce que les rôles et permissions accordés aux utilisateurs humains ainsi qu’aux ressources d’infrastructure restent limités et suivent le principe du moindre privilège. Si cela n’est pas nécessaire, ne l’accordez pas.
- Utilisez la gestion des secrets : « Évitez de coder en dur des secrets – mots de passe, jetons, clés API – dans les modèles IaC », explique Ashmore. Préférez l’utilisation d’outils de gestion des secrets comme HashiCorp Vault, AWS Secrets Manager ou Azure Key Vault. Découvrez notre analyse approfondie des outils de gestion des secrets pour plus de solutions : « Gardiens numériques : les 24 meilleurs outils de gestion des secrets »
- Effectuez des analyses de sécurité automatisées et régulières : Utilisez des outils qui analysent automatiquement les vulnérabilités de sécurité, et ce dès les premières étapes de votre pipeline CI/CD.
- Suivez le principe d’immutabilité : Réduire les modifications manuelles, en particulier au sein des environnements d’infrastructure, est une bonne stratégie pour limiter les risques. « L’infrastructure doit être immuable ; une fois provisionnée, elle ne doit pas être modifiée manuellement », explique Ashmore. « Les modifications doivent être faites en mettant à jour le code IaC et en redéployant. Supprimer la possibilité de modifier manuellement est la voie la plus sûre. »
- Utilisez le contrôle d’accès basé sur les rôles (RBAC) : « Contrôlez l’accès à vos outils IaC et à vos environnements à l’aide du RBAC », explique Ashmore. « Seuls les utilisateurs autorisés devraient pouvoir déployer ou modifier l’infrastructure. » Kubernetes est également un exemple important, puisqu’il fait partie intégrante de nombreux pipelines CI/CD. Ne vous contentez pas des configurations par défaut.
- Appliquez l’idempotence : Passons à l’étape suivante : l’idempotence est le concept selon lequel on peut exécuter certaines opérations – ou du code, en ingénierie logicielle – plusieurs fois sans en changer le résultat final. « Concevez l’IaC [et les pipelines CI/CD] de manière idempotente, afin que l’exécution répétée du code ne change pas l’état de l’infrastructure, sauf si cela est explicitement prévu », explique Ashmore.
- Utilisez la paramétrisation : Ashmore recommande d’utiliser des variables et la paramétrisation dans les modèles IaC afin d’éviter de coder en dur des valeurs spécifiques à l’environnement, comme les régions, tailles d’instance ou adresses IP.
- Mettez en place la surveillance et la journalisation : Ces pratiques permettent de détecter des activités non autorisées ou inhabituelles, et d’analyser les causes lors d’incidents. « Des services tels qu’AWS CloudTrail ou Azure Monitor peuvent aider », précise Ashmore. Voici deux autres ressources : « Les 25 meilleurs logiciels de surveillance des journaux » et « Guide des 26 meilleurs outils de surveillance d’infrastructure »
- Utilisez des outils de tests d’infrastructure : « Intégrez des outils de test d’infrastructure tels que Test Kitchen, Terratest ou InSpec pour valider la conformité de votre IaC avant le déploiement », recommande Ashmore.
- Mettez en place une détection du drift d’infrastructure : Utilisez des outils pour détecter le drift d’infrastructure – c’est-à-dire les modifications en dehors du pipeline CI/CD – et rétablir l’état lorsque des changements non autorisés sont détectés, suggère Ashmore.
- Respectez les normes de conformité et de sécurité : Assurez-vous que votre pipeline CI/CD répond aux normes de sécurité et de conformité du secteur, telles que les benchmarks CIS, NIST ou RGPD. La liste OWASP Top 10 partagée ci-dessus est un autre exemple.
- Créez un code IaC réutilisable et modulaire : « Décomposez le code IaC en composants réutilisables et modulaires, comme les modules Terraform ou les stacks AWS CloudFormation », conseille Ashmore.
- Documentez votre pipeline : Ashmore recommande de créer et de maintenir une documentation détaillée de vos politiques IaC, de vos modèles et procédures de sécurité, ainsi que des autres composants de votre pipeline CI/CD.
- Mettez régulièrement à jour vos outils : « Maintenez vos outils IaC (tels que Terraform, Ansible, CloudFormation) et toutes les dépendances associées à jour, avec les dernières versions », recommande Ashmore. Ce conseil s’applique également à l’ensemble des autres outils et dépendances de votre pipeline : des versions obsolètes présentent davantage de risques connus (voire inconnus).
Inscrivez-vous pour recevoir plus d’analyses CI/CD
Les pipelines CI/CD sont devenus indispensables dans le développement logiciel moderne. Cela signifie que la sécurité CI/CD est tout aussi essentielle. Avant de partir, abonnez-vous à notre newsletter pour recevoir les derniers points de vue des meilleurs experts du secteur logiciel.
