DevOps, Rugged DevOps et DevSecOps : depuis quelques temps, nous voyons fleurir sur les réseaux sociaux ces termes qui font le buzz. L’idée de cet article est de comprendre d’où provient cette tendance et les enjeux de la sécurité au cœur de développement logiciel dans les prochaines années.

Le chemin du DevOps

La philosophie de DevOps est de fluidifier au maximum le flux de livraison entre l’idée provenant du métier et l’utilisateur final. Sur ce chemin, nous faisons face à de nombreux obstacles ou freins. Je reviendrai sur ces challenges de manière exhaustive dans un prochain article. Le challenge le plus important est celui de la communication entre les individus ne partageant pas le même métier. Souvent, en gestion de projet, nous prenons l’exemple de la tour de Babel. Un projet colossal de l’antiquité qui n’a jamais vu le jour à cause du manque de compréhension entre les ouvriers qui ne parlaient pas le même langage. C’est un peu la même chose avec le DevOps. La réussite d’un projet dépend du professionnalisme de l’ensemble des personnes impliqués au projet et surtout à leur aptitude à travailler en synergie dans un objectif commun.

Sur un projet informatique, on retrouve souvent le même schéma d’organisation:

Sur toute la durée du projet, on retrouve:

  • Le métier
  • Les analystes fontionnels et les testeurs
  • Les développeurs (Les Devs !)
  • L’équipe en charge des opérations (Les Ops !)

Et ponctuellement, on fait appel à des experts pour :

  • L’exécution de tests spécifiques : Tests de Performance, Penetration Tests
  • La revue et la validation de l’architecture
  • La revue des process de sécurité
  • Etc.

En résumé, sur un projet complexe, beaucoup de personnes sont impliquées dans le dispositif et n’exercent pas le même métier à priori. Cependant, leur objectif et intérêt commun reste le même: « réussir le projet ».

Du Métier au Dev

Depuis plusieurs années, les méthodes et Frameworks Agiles ont permis de rapprocher les métier de l’équipe de développement et ainsi de travailler le manière itérative avec pour priorité principale de satisfaire l’utilisateur final. Ces équipes Agile font souvent face à beaucoup de frustration lors de la mise en production de leur incrément à l’issue de chaque itération. Les contraintes et process existant dans l’organisation n’ont pas été conçus pour absorber le flux de déploiement continu des équipes Agiles en perpétuelle évolution.

Du Dev à l’Ops

Le DevOps est né de ce besoin. L’élargissement des méthodes de travail jusqu’à l’équipe opérationnelle a permis de fluidifier les échange et voir les groupes travaillant sur le même projet comme une seule et unique équipe à part entière. Les processus d’ALM (Application Lifecycle Management) ont évolués aux besoins de l’agilité, ce sont transformés en Continuous Integration puis Continuous Delivery pour déployer de manière automatisée et systématique les incréments livrés par l’équipe de Dev à l’issue de chaque Sprint. La production est rarement l’environnement de destination de l’incrément à l’issue du Sprint. Dans la plupart des cas, cet incrément est déployé sur un environnement d’UAT (User Acceptance Test) ou encore sur la pré-production. A ce stade, il reste encore à obtenir le « Go » de la « Sécu » et cela peut prendre un certain temps suivant les contraintes de sécurité du projet ou de l’organisation…

La Sécu : l’affaire de Tous !

La sécurité est l’affaire de tous. Les aspects de sécurité doivent être pris en compte au cœur du design de l’application, de son développement et de ses opérations. La plupart des failles de sécurité se retrouvent la plupart du temps en production par manque de vigilance dès la conception même de l’application. Si l’on veut conserver la dynamique agile d’un projet DevOps et que l’on a de grosses contraintes de sécurité, il est primordial de considérer la sécurité comme la clé de voûte du projet dans son ensemble.

Tout comme le DevOps, le DevSecOps vise à fluidifier la communication entre les Devs,les Ops et les équipes sécurité grâce à la mise en place de process et d’outils communs.

« Rugged DevOps is about Tools, DevSecOps is about people »

Image result for devsecops

Rugged DevOps est un terme « Buzz » désignant les outils et process permettant de fluidifier le cycle de livraison d’un projet jusqu’en production en prenant en compte les contraintes de sécurité dès l’implémentation du code de l’application. Alors que DevSecOps s’appuie sur les personnes, Rugged DevOps s’appuie sur les outils.

L’idée derrière tout ça est de faciliter le travail des équipes sécurité et des Pen Testers en fournissant un niveau d’information à jour sur la qualité du code produit d’un point de vue sécurité. La prise en compte des aspects sécurité est dès lors pris en compte par l’équipe de developpement lors de l’implémentation du code et les cycle de continuous delivery intègrent potentiellement une validation automatique du code à l’aide de « Quality Gates ». La génération de rapport d’analyse statique de code (SAST) facilitent grandement l’exécution des tests de pénétration et l’approbation de l’autorité de sécurité  de l’organisation pour le déploiement en production.

Conclusion

Le DevSecOps et le Rugged DevOps sont intimement liés. Le DevOps n’étant pas une méthodologie à part entière mais plus un mouvement culturel, il en va de même pour le DevSecOps. L’objectif est de trouver le chemin qui abouti plus de fluidité et d’efficacité  à tous les étages du projet. Un changement de philosophie, une adaptation des processus et la mise en place d’outils performants permettront cette transformation au rythme que se fixera l’équipe DevOps.