DevOps et sécurité sont devenus indissociables

C’est un fait, les failles de sécurité au sein des applications ont toujours existé, mais elles n’ont pas toujours été correctement traitées par les équipes de développement. Pour les éviter, la meilleure méthode consiste à tester l’application au plus tôt avant sa mise en production pour détecter ses vulnérabilités et les corriger immédiatement.

Il y a encore peu de temps, les tests de sécurité étaient relégués au second plan, voire inexistants. On ne tenait que très peu compte de la sécurisation de l’environnement de production, voire pas du tout.

 

Pourtant, une faille de sécurité dans un logiciel peut avoir des conséquences dévastatrices. Au-delà du non-respect des exigences légales et réglementaires sanctionné par des amendes conséquentes, une entreprise a la responsabilité de protéger ses clients et leurs données, ainsi que ses propres données et systèmes. Ne pas prendre les précautions de cybersécurité nécessaires revient à mettre ses clients, son entreprise et sa réputation en danger.

 
Faille de sécurité aussitôt détectée, aussitôt corrigée
 

Ces dernières années, la communauté DevOps a commencé à prendre en compte la sécurité. L’approche DevOps permettant d’apporter rapidement de la valeur aux clients, peut tout aussi rapidement introduire des failles dans les applications. Cette prise de conscience a incité les équipes DevOps à inclure les tests de sécurité dans leurs tests continus. Elle a aussi renforcé le sentiment de responsabilité partagée autour de la sécurité.

 

Lors de la conception d’un logiciel, les équipes réfléchissent à ses potentielles failles de sécurité et incluent des critères de sécurité pour chaque scénario utilisateur. Elles testent ces derniers dans le cadre des tests continus. À mesure que le logiciel, ses composants et sa configuration progressent dans le cycle de déploiement, les tests de sécurité continuent de s’exécuter. Si des failles sont détectées, à quelque étape que ce soit, l’équipe est alertée et peut résoudre le problème immédiatement. La nature continue des tests permet que toute modification introduisant une faille soit aisément identifiée et corrigée. Lorsque le logiciel est déployé, de nouveaux tests de sécurité sont effectués. Le logiciel en production est surveillé pour détecter les éventuelles failles résultant de changements dans la configuration ou l’environnement, ou de mises à jour logicielles.

 

Le concept qui consiste en l’intégration de la sécurité au cœur des processus de livraison de logiciels est connu sous le nom de « DevSecOps ». Parce que les développeurs, les testeurs et les opérations font tous partie de la même équipe DevOps, ils doivent tous assumer la responsabilité de la sécurité de leur logiciel, de la conception au développement, jusqu’à la production.

 
Intégration de la sécurité dans le DevOps : 3 bonnes pratiques
1.     Former les développeurs et les testeurs à la sécurité
 

Les équipes DevOps ont besoin d’une expertise en sécurité mais la plupart des entreprises ne disposent pas d’experts sécurité en nombre suffisant pour intégrer chaque équipe. C’est pour cette raison qu’il est important de former ses développeurs et ses testeurs à la sécurité de façon à ce qu’ils soient sensibilisés à cette question et qu’ils comprennent comment aborder la conception, la programmation, les révisions de code et les tests de ce point de vue. Inciter un ou plusieurs membres de l’équipe à endosser un rôle plus important en la matière en devenant les champions de la sécurité peut grandement faciliter l’adoption de cette pratique.

 

Une équipe consciente de l’importance de la sécurité devrait organiser des sessions régulières de modélisation des menaces. La modélisation des menaces implique de se mettre à la place d’un cybercriminel et de rechercher activement les failles dans la conception d’une application et de ses composants et dans la façon dont les composants communiquent entre eux. Il s’agit d’une méthode efficace pour détecter des vulnérabilités architecturales pendant la conception.

 
2.     Utiliser des outils de tests de sécurité automatisés
 

Les tests de sécurité automatisés sont bien plus rapides et complets que les tests manuels. Ils sont fiables, cohérents et reproductibles. En somme, ils sont parfaits pour les tests continus. Deux types d’outils de tests de sécurité automatisés pour les applications sont couramment intégrés aux processus de tests continus : les outils SAST (Static Application Security Testing) qui identifient les failles dans le code source et les outils DAST (Dynamic Application Security Testing) qui recherchent les failles lors de l’exécution du code dans un environnement de test.

 

Cependant, l’exécution des outils SAST et DAST peut être plus ou moins longue en fonction de la taille de l’application. De plus, elle peut générer des faux positifs qui empêchent de se concentrer sur l’identification et l’analyse des vrais problèmes. Pour optimiser l’utilisation de ces outils et ne pas perdre de temps sur les faux positifs dans le cadre des tests continus, il est possible de se focaliser sur les parties du code qui ont récemment changé et de configurer les outils en conséquence.

 
3.     Ne pas oublier son environnement de production
 

C’est dans le système de production que le code et les données sont le plus vulnérables. C’est à lui que les utilisateurs et les hackers ont accès et c’est là également que les vulnérabilités encore inconnues sont présentes. C’est pourquoi il est également pertinent d’effectuer des tests de sécurité sur le système de production lors du déploiement des mises à jour et de continuer ces tests en production quand des changements sont apportés à la configuration ou à l’environnement. Cependant, l’exécution de tests de sécurité étendus en production peut ralentir les systèmes, voire les arrêter. Il faut donc planifier les tests de façon à maximiser leur valeur tout en réduisant au maximum les perturbations. L’utilisation d’une solution RASP (Runtime Application Security Protection) permet d’identifier et bloquer les tentatives d’accès malveillants en temps réel sans impacter les autres utilisateurs.

 
Le DevOps devrait toujours être DevSecOps

L’intégration de la sécurité à l’approche DevOps implique de réfléchir à la sécurité dès le départ et de se montrer proactif en matière de sécurité tout au long du cycle de livraison des applications. Ces dernières années, nous avons observé que la sécurité prenait une place de plus en plus importante dans les projets DevOps. Nous sommes aujourd’hui arrivés au point où sécurité et DevOps sont devenus indissociables.