Les pipelines CI/CD sont de puissants catalyseurs pour un développement logiciel plus rapide et plus fréquent, de la conception jusqu’au déploiement. Mais lorsqu’ils sont arrivés sur la scène technologique, il leur manquait souvent un maillon essentiel : la sécurité.
C’est un vrai problème, surtout au vu de statistiques comme celle-ci : environ une organisation sur cinq a signalé un incident de sécurité dans sa chaîne 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 deviennent de plus en plus courants, ils ont également transformé le paysage des menaces pour les équipes logicielles. Comme le souligne le Open Worldwide Application Security Project (OWASP) dans sa documentation : « Compte tenu de leur importance et de leur popularité, les chaînes CI/CD sont également une cible attrayante pour les hackers malveillants, et leur sécurité ne peut être ignorée. »
Dans cet article, nous allons examiner en détail les risques spécifiques – ainsi que les principes et pratiques efficaces pour les atténuer et assurer la sécurité de vos pipelines CI/CD.
Qu’est-ce qu’un pipeline CI/CD ?
Commençons par nous assurer que nous parlons bien de la même chose : qu’est-ce que le CI/CD ? Abréviation de l’intégration continue et de la livraison continue, le CI/CD désigne un ensemble de processus et d’outils que les équipes de développement logiciel modernes utilisent pour concevoir, construire et finalement déployer – avec l’automatisation comme l’un des facteurs clés pour accélérer et augmenter la fréquence des livraisons et des mises à jour du code.
Voici comment nous l’avions défini dans notre précédent article, « Aperçu du pipeline CI/CD : pourquoi vous devez le connaître » : « Un pipeline CI/CD est un processus de développement et de livraison logicielle transparent, automatisé et fiable. »
L’objectif n’est généralement pas seulement d’accélérer la livraison et d’augmenter la fréquence de déploiement – il s’agit aussi d’améliorer la qualité, la fiabilité et – à condition que vous y consacriez la priorité nécessaire – la sécurité.
Risques courants pour la sécurité CI/CD : 5 axes à surveiller
La plupart des origines des risques CI/CD devraient sembler familières à tout professionnel du numérique. Des éléments comme le contrôle d’accès et l’octroi excessif de privilèges, l’absence de surveillance et de journalisation adéquates, des dépendances non gérées et une chaîne d’approvisionnement logicielle défaillante contribuent tous à l’augmentation des risques lorsqu’ils sont mal contrôlés.
L’OWASP a publié une liste des 10 principaux risques de sécurité CI/CD à consulter comme référence. Cette liste s’inspire du célèbre classement de l’organisation, le Top 10 OWASP des principaux risques pour la sécurité des applications web, considéré comme une référence dans le secteur.
Les risques liés aux pipelines CI/CD peuvent être introduits ou amplifiés par l’automatisation. La plupart des risques apparaissent automatiquement – ou sont déployés automatiquement en production – dans ces pipelines. De façon quelque peu paradoxale, automatiser la sécurité de ces chaînes avec des outils Infrastructure as Code (IaC) ou d’autres outils d’automatisation peut également introduire ou aggraver les vulnérabilités si l’on n’y prête pas attention, comme le souligne Derek Ashmore, Application Transformation Principal chez Asperitas.
Voici cinq axes de risques majeurs à considérer pour sécuriser vos pipelines CI/CD, selon Ashmore :
- Contrôle d’accès : « Le contrôle d’accès est souvent trop permissif par souci de commodité et ne respecte pas les principes du moindre privilège et du double contrôle », explique Ashmore. En règle générale, le principe du moindre privilège doit primer ici : n’accordez pas aux personnes ou aux machines un accès à des données ou à des systèmes dont ils n’ont pas réellement besoin pour effectuer leur travail.
- Dépendances non validées : Les logiciels actuels – et, par ricochet, les pipelines CI/CD – reposent souvent sur des bibliothèques tierces et d’autres dépendances externes, qui peuvent parfois présenter des vulnérabilités. « Assurez-vous toujours que les dépendances externes sont validées et disposent d’une chaîne de contrôle vérifiable », explique Ashmore.
- Audit et journalisation : Veillez à mettre en place des systèmes d’audit et de journalisation complets. Un manque de visibilité et d'auditabilité peut entraîner des expositions à des failles de sécurité dont vous n’auriez autrement pas conscience.
- Escalade de privilèges : L’automatisation – intrinsèque à la CI/CD et à la sécurité CI/CD – peut parfois être développée en silos, engendrant des lacunes involontaires où les privilèges peuvent être accrus via l’exécution de séquences d’automatisation non prévues. « Pour atténuer ce risque, veillez à ce que le moindre privilège soit appliqué et à ce que des cas de test soient prévus pour les flux de travail automatisés ainsi que pour les tâches ou pipelines individuels », indique Ashmore.
- Tests automatisés insuffisants : 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 assurer le bon fonctionnement général du pipeline. « Les défauts du pipeline peuvent générer des failles de sécurité indésirables et avoir un impact négatif sur les équipes de développement d’applications en les empêchant de réaliser leur travail assigné », précise Ashmore.
10 Meilleurs outils CI/CD !
Here's my pick of the 10 best software from the 10 tools reviewed.
15 bonnes pratiques pour renforcer la sécurité CI/CD
Une fois que vous avez bien compris les risques, il est temps de se concentrer sur les solutions. La bonne nouvelle : il en existe de nombreuses, en partie parce que le secteur a pris conscience de l’importance d’intégrer la sécurité comme un élément central de la CI/CD.
Ashmore, d’Asperitas, nous a fourni une liste de 15 bonnes pratiques et tactiques couramment reconnues pour renforcer la sécurité des pipelines CI/CD. Sans plus attendre :
- Utilisez des systèmes de gestion de versions sécurisés : L’un des principaux avantages des systèmes de gestion de versions comme Git est de capturer l’historique des modifications, ce qui peut être nécessaire pour enquêter sur des violations de sécurité ou d’autres problèmes. « Idéalement, rien ne devrait être modifié manuellement », explique Ashmore. Consultez notre liste complète d’outils de gestion du code source pour plus d’options : « 20 meilleurs outils de gestion de versions évalués »
- Appliquez le principe du moindre privilège : Veillez à ce que les rôles et autorisations accordés aux utilisateurs humains comme aux ressources d’infrastructure soient minimaux et respectent le principe du moindre privilège. Si ce n’est pas nécessaire, ne l’accordez pas.
- Utilisez une gestion des secrets : « Évitez de coder en dur les secrets – mots de passe, jetons, clés API – dans les modèles IaC », recommande Ashmore. Utilisez plutôt des outils de gestion des secrets comme HashiCorp Vault, AWS Secrets Manager ou Azure Key Vault. Pour encore plus d’options, consultez notre analyse approfondie sur la gestion des secrets : « Gardiens numériques : les 24 meilleurs outils de gestion de secrets »
- Effectuez des analyses de sécurité régulières et automatisées : 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.
- Respectez le principe d’immuabilité : Réduire au minimum les modifications manuelles, en particulier sur les environnements d’infrastructure, est une excellente 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. « Au lieu de cela, les changements doivent être réalisés en mettant à jour le code IaC puis en le redéployant. Supprimer la possibilité de faire des changements manuels 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 », indique Ashmore. « Seuls les utilisateurs autorisés doivent pouvoir déployer ou modifier l’infrastructure. » Kubernetes est un autre exemple important, notamment parce qu’il est un élément clé de nombreux pipelines CI/CD. Ne vous contentez pas des configurations par défaut.
- Appliquez l’idempotence : Là, on devient technique : l’idempotence est le concept consistant à pouvoir exécuter certaines opérations – ou du code, dans le cas de l’ingénierie logicielle – plusieurs fois sans modifier le résultat. « Concevez l’IaC [et les pipelines CI/CD] de manière idempotente, c’est-à-dire que l’exécution du code plusieurs fois ne doit pas changer l’état de l’infrastructure sauf si c’est explicitement requis », explique Ashmore.
- Paramétrez vos modèles : Ashmore recommande d’utiliser des variables et la paramétrisation dans les modèles IaC pour éviter de coder en dur les valeurs propres à un environnement, telles que les régions, tailles d’instance et adresses IP.
- Mettez en place une surveillance et une journalisation : Ceux-ci permettent de détecter les activités non autorisées ou inhabituelles et d’identifier les causes profondes lorsqu’un incident se produit. « Des services comme AWS CloudTrail ou Azure Monitor peuvent aider », précise Ashmore. Voici deux autres ressources à consulter : « Les 25 meilleurs logiciels de supervision des logs » et « Guide des 26 meilleurs outils de supervision d’infrastructure »
- Utilisez des outils de tests d’infrastructure : « Intégrez des outils de tests d’infrastructure comme Test Kitchen, Terratest ou InSpec pour valider la conformité de votre IaC avant le déploiement », recommande Ashmore.
- Mettez en place la détection de dérive d’infrastructure : Utilisez des outils pour détecter la dérive d’infrastructure – c’est-à-dire les changements qui se produisent en dehors du pipeline CI/CD – et rétablissez les paramètres autorisés lorsqu’une modification non autorisée est détectée, conseille Ashmore.
- Respectez les normes de conformité et de sécurité : Assurez-vous que votre pipeline CI/CD est conforme aux standards de sécurité de l’industrie et cadres réglementaires tels que les référentiels CIS, NIST ou le RGPD. La liste OWASP Top 10 mentionnée ci-dessus en est un autre exemple.
- Créez un code IaC réutilisable et modulaire : « Décomposez le code IaC en composants réutilisables et modulaires, tels que les modules Terraform ou les stacks AWS CloudFormation », conseille Ashmore.
- Documentez votre pipeline : Ashmore recommande de créer et maintenir une documentation détaillée des politiques IaC, des modèles et procédures de sécurité, ainsi que des autres éléments de votre pipeline CI/CD.
- Mettez régulièrement à jour vos outils : « Maintenez vos outils IaC (tels que Terraform, Ansible, CloudFormation) et leurs dépendances à jour avec les dernières versions », indique Ashmore. Le conseil vaut pour l’ensemble des outils et dépendances de votre pipeline : les versions obsolètes comportent souvent des risques bien connus (et parfois inconnus).
Rejoignez-nous pour encore plus d’astuces CI/CD
Les pipelines CI/CD sont devenus des piliers du 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 conseils d’experts du secteur logiciel.
