DevOps ou DevSecOps : pourquoi sont-ils importants aujourd'hui et comment s'intègrent-ils ensemble ?

Livrer des applications de qualité et dans un temps court n'est plus un choix. C'est à ce défi que sont confrontées les équipes IT aidés par l'agile et le DevOps. Or, les questions liées à la cybersécurité ont été remises sur le devant la scène. C'est pour y répondre que le DevSecOps a émergé.

DevOps, DevSecOps, cloud natif, security by design ou encore le zero trust sont des termes de plus en plus à la mode souvent cités lorsqu’on évoque aujourd’hui l’ingénierie logicielle ou les cycles de vie de développement d'applications modernes.

Les failles de sécurité, les fuites de données et les rançongiciels sont des enjeux majeurs auxquels les développeurs doivent faire face. © Gerd Altmann de Pixabay

Pour se limiter aux concepts du DevOps et DevSecOps, ce sont des exemples de termes qui peuvent être mal appréhendés ou même mal perçus en raison à la fois de leur surutilisation ou de leur mauvaise utilisation. Depuis la création en 2009 du terme DevOps, il y a eu de nombreuses itérations différentes de ce que ce terme englobe. La connotation négative du mot découle probablement de son utilisation utopique dans sa mise en œuvre peu réaliste. Bien que de nombreuses organisations prétendent être centrées sur DevOps, peu représentent le mot avec précision. Et pourtant, les méthodologies DevOps, lorsqu'elles sont correctement appliquées, sont incroyablement bénéfiques pour les équipes et les entreprises.

En effet, DevOps, comme beaucoup d'entre nous le savent, est d’abord un mouvement culturel qui a pris d'assaut le développement logiciel au cours de la dernière décennie. L'idée de DevOps est d'encourager une collaboration accrue entre les développeurs de logiciels (Dev) et les opérations informatiques -IT- (Ops) grâce à l'automatisation, aux outils et aux meilleures pratiques. L'objectif principal de DevOps est de raccourcir les cycles de développement logiciel, ce qui conduit à des versions de logiciels plus fréquentes et un time to market réduit. Bref, DevOps augmente la capacité d'une organisation à déployer des applications et des services plus rapidement et offre de nombreux avantages à toute entreprise qui souhaite rester compétitive dans le monde d'aujourd'hui qui connait une évolution très rapide.

Ce dernier point permet de se démarquer de ses concurrents car il permet aux éditeurs, aux entreprises de la tech et aux départements IT de déployer des corrections et des mises à jour logicielles plus rapidement et plus fréquemment afin de répondre en permanence aux besoins des clients et aux évolutions du marché. Ces dernières années, le DevOps est rapidement devenu la norme dans le développement d'applications, avec de plus en plus d'organisations adoptant le modèle. Les progrès de l'informatique, y compris le cloud computing, les ressources partagées et le provisionnement dynamique, ont fait de DevOps une méthodologie plus accessible et par conséquent plus attrayante à adopter.

Mais, une faille importante a été mise en lumière dans le mouvement DevOps original liée à la sécurité logicielle qui reste une réflexion après coup. L’arrivée du DevSecOps est une approche dans laquelle la sécurité est intégrée tout au long du processus de développement logiciel. C’est une démarche qui intègre les pratiques de sécurité dans chaque phase de DevOps. La méthodologie DevSecOps crée une culture de Sécurité en tant que Code (Security as code[1]) avec une collaboration continue et flexible entre les ingénieurs applicatifs et les équipes de sécurité. Malgré l’efficacité du DevOps, il peut faire défaut sur le plan de la sécurité si ce point n’est pas intégré dès le départ au risque d’exposer l’organisation à toute une série de problèmes et des insatisfaction des clients.

Quels sont les principes de DevOps ?

Ils reposent sur sept composants notamment :

  1. Une approche axée sur le client,
  2. Un cadre de travail Agile,
  3. Des développements à construire une seule fois et à exécuter n'importe où,
  4. Un automatisation pour pouvoir optimiser les processus et accélérer le temps de déploiement en réduisant le nombre d’éléments à synchroniser,
  5. Une approche Security as Code,
  6. Une large communication et collaboration entre les équipes,
  7. Une surveillance constante et une validation de la qualité opérationnelle.

Notons que DevOps nous met naturellement à la place des clients qui consomment nos produits puisque nous nous concentrons sur des versions plus petites et qu'il y a plus de place pour un retour immédiat. Cela casse le mythe de penser que l'objectif final est uniquement un excellent logiciel ou application.

Quels sont les avantages d’une approche DevcOps ?

En plus d’améliorer et optimiser le travail en équipe, l’approche DevOps permet :

  • d’innover et d'optimiser l’utilisation du temps en réduisant les coûts de mise en œuvre et en automatisant les déploiements, de corriger les erreurs dans un cycle court, 
  •  de travailler dans un environnement agile ou itératif avec des compétences polyvalentes,
  • d’accélérer le retour sur investissement en déployant les logiciels plus rapidement et en misant sur des processus fiables et automatisés,
  • d’assoir une efficience continue en minimant les effets des anomalies et des échecs dans les déploiements avec des délais de production plus courts,
  • d’améliorer l’expérience client qui recherche une solution, un produit fonctionnel qui résoudra son problème. Le client ne se soucie pas tellement du processus, seulement qu'ils sont livrés avec un bon produit et dans des délais courts.
Cycle DevOps © Société Générale - Franfinance

En résumé, le DevOps aide les équipes à se concentrer sur l'expérience client, en unissant les équipes pour des livraisons de produits plus rapides, en simplifiant les objectifs de chaque version, en introduisant l'automatisation (qui réduit les erreurs et libère du temps pour les développeurs pour d'autres projets) et en créant une boucle de rétroaction qui profite à l'ensemble de l’organisation. C’est ce que le anglo-saxons appellent end-to-end responsabilty.

S'il est pleinement adopté, DevOps conduit à des temps de déploiement accélérés, moins de pannes et des récupérations plus rapides. Le tout en mettant l'accent sur l'offre d'un produit ou d’un service dans des délais très courts, plus adaptables et meilleurs. Désormais, cette nouvelle agilité pose une question majeur : Où sont les considérations de sécurité ?

DevSecOps tente d'étendre les principes fondamentaux de DevOps en intégrant justement ces question ou des problèmes de sécurité.

Qu'est-ce que DevSecOps ?

En substance, DevSecOps est un raffinement du concept DevOps original qui met davantage l'accent sur l'importance de la sécurité des applications. De nombreux incidents de cybersécurité sont le résultat de failles de sécurité dans le code d'une application. Il existe un argument solide selon lequel l'accent mis par le mouvement DevOps sur un déploiement plus rapide des logiciels constitue un obstacle au développement de logiciels sécurisés.

Les équipes de sécurité logicielle sont chargées de veiller à ce que le code vulnérable ne soit pas mis en production. Traditionnellement, les équipes de sécurité mettent en œuvre des tests rigoureux pour vérifier l'intégrité et la sécurité des applications. Cependant, les tests de sécurité prennent un temps précieux nécessaire, parfois incompressible et le temps est essentiel pour les équipes DevOps. Il peut exister donc un conflit évident entre les objectifs des équipes de sécurité et les idéaux du mouvement DevOps.

Les tests et vérifications de sécurité sont effectués à la fin des cycles de développement du DevOps, cependant, il n'y a souvent pas assez de temps pour auditer correctement le code ou le revoir. Le mouvement DevSecOps préconise, à juste titre, l'intégration de pratiques et d'outils de sécurité dès la conception d'une application. Dans DevSecOps, les exigences de sécurité sont prises en compte dès le départ, ce qui permet de mieux garantir une sécurité logicielle étanche.

Domaine de couverture DevOPs V DevSecOps © Nouamane Cherkaoui

Pourquoi DevSecOps est-il si important aujourd'hui ?

De nombreuses nouvelles avancées ont été réalisées dans le domaine de l'informatique et des développements depuis l’arrivée des bigtech et de l’explosion, du numérique avec de nouveaux cadres (framework) qui facilitent l'intégration de la méthodologie DevOps dans la conception des applications.  Cependant, la sécurité informatique n’a jamais été aussi cruciale dans la pérennité des organisations et devient un problème majeur dans le monde numérique d'aujourd'hui. Les cyberattaques et les fraudes sont en augmentation et c’est une réalité quotidienne face à laquelle il est inconcevable qu'une organisation puisse négliger l'aspect sécurité.

En effet, pour pouvoir garder une avance sur les organisations criminelles, il est nécessaire d’augmenter son efficacité et créer des logiciels sécurisés. Le délai moyen entre l'annonce d'une vulnérabilité et sa divulgation sur les réseaux est passé de 45 jours à seulement trois jours ces dernières années.

Un certain nombre d'incidents de cybersécurité de haut niveau ces dernières années sont survenus en raison de vulnérabilités open source par exemple. Les développeurs utilisent souvent des bibliothèques et des frameworks de projets open source dans le cadre du développement d'applications. La tristement célèbre violation de données d'Equifax[2] s'est produite à la suite de l'utilisation d'une version vulnérable du framework web open source Apache Struts.

Par ailleurs, l'impératif de confidentialité et de sécurité dès la conception est devenu urgent à la suite de l'introduction du RGPD en 2018, qui a apporté des mesures de protection des données beaucoup plus strictes et un plus grand accent sur la responsabilité et la transparence. Grâce au framework DevSecOps, avec qui la sécurité qui devient une composante naturelle du processus de développement, ces exigences sont prises en compte naturellement. Il est également plus facile et moins coûteux d'intégrer des mesures de sécurité dans le logiciel dès le début et, en prévenant les violations sur toute la ligne, pour obtenir à la fois une sécurité améliorée et une satisfaction des clients garantie.

Comment intégrer une approche DevSecOps ?

Comme nous l’avons expliqué, il est important de s'assurer que la sécurité est intégrée dans le développement de l'application d'un bout à l'autre pour implémenter DevSecOps avec succès. Toute approche DevSecOps doit se baser, a minima, sur les cinq composantes suivantes :

  1. L’analyse de code : Produire le code par petits bout pour faciliter la détection des vulnérabilités plus rapidement et le plus tôt possible,
  2. La gestion du changement : Augmenter la vitesse et l'efficacité en permettant aux membres de l'équipe de soumettre des changements ou des évolutions, puis déterminer si le changement peut être intégré,
  3. La surveillance de la conformité : Se mettre en tête lors du développement que le code sera audité dans la foulée et rester conforme aux frameworks et aux règles de développement établies,
  4. La quête des menaces et des vulnérabilités : Identifier les menaces potentielles en développement dans chaque mise à jour ou grâce à l'analyse du code et réagir très rapidement pour les corriger. Des outils de sécurité adaptés aux équipes DevOps existent et sont capables d'identifier le code vulnérable au fur et à mesure de son écriture, car cela facilite une action immédiate pour les corriger,
  5. La formation à la sécurité : Investir dans la formation des développeurs sur la sécurité des applications entraînerait des avantages à long terme dans la mise en place d'une culture DevOps sécurisée.

Cette approche implique des efforts de sécurité dans le pipeline de développement et d'intégration continus (CD / CI), y compris la prise en compte des problèmes de sécurité avant le début du développement et à chaque étape du processus en cours.

Les technologies de conteneurs ont amélioré le cycle de vie du développement logiciel. Technologie véritablement disruptive, les conteneurs ont permis aux développeurs de coder, de créer, d'exécuter et de tester indépendamment des ressources opérationnelles. Désormais, les opérations pourraient se concentrer davantage sur les tests, la sécurité et la mise à l'échelle, car la configuration requise de l'environnement du développeur avait disparu. Avec les conteneurs, tout peut être placé dans un Dockerfile et s'exécuter n'importe où. Malgré quelques inconvénients opérationnels, qui ne sont pas l’objet de cet article, les conteneurs constituent une amélioration significative. Aidés par Kubernetes, les organisations peuvent mieux gérer, mettre à l'échelle, observer et connecter des conteneurs et aussi inclure la sécurité.

Quelle leçon ou feedback sur la mise en place de DevSecOps ?

Le DevSecOps n’est pas une question d’outil mais de culture. Durant tout l’article aucun outil n’a été cité pour se concentrer sur les principes et les exigences de cette démarche que nous pourrons résumer ainsi :

  • Les cycles de vie de développement logiciel doivent être courts et itératifs avec des contrôles de sécurité intégrés en amont et automatisés,
  • Les environnements de développement sont reproductibles avec des contrôles de sécurité homogènes,
  • L’élaboration des processus de contrôles de sécurité post-incident dans les pipelines,
  • La mise en place d’une documentation robuste, utilisant de préférence des méthodes déclaratives qui permettent la sécurité sous forme de code,
  • Une culture d'encouragement à l'innovation et de tolérance à l'échec qui l'accompagne.

DevSecOps est une évolution cruciale dans le mouvement DevOps. Le défi de l'adoption de DevSecOps, nécessite un changement culturel complet au sein de l'entreprise surtout lorsque celle-ci a déjà mis en place un processus de développement rigide et différentes procédures de sécurité détachées. Plus le processus sera automatisé, plus facile sera l’adoption du DevSecOps. L'automatisation permettra de gagner du temps et, associée à une meilleure sécurité, transformera la mise en œuvre de DevSecOps en une évidence.

[1] Security as Code est un ensemble d'outils de ressources qui aident les professionnels DevOps à sécuriser et à protéger le cycle de vie du développement logiciel tout au long du processus de développement.

[2] Source