Le passage du DevOps au DevSecOps est crucial pour la sécurité des entreprises. Intégrer la sécurité dès le début du développement et des opérations est essentiel pour la solidité des systèmes. Cela nécessite une collaboration étroite, la suppression des silos, l’utilisation de mesures préventives comme la sécurité dès la conception et l’automatisation. L’implication précoce des parties prenantes est également essentielle pour le succès des projets.
Ce changement va au-delà des outils, redéfinissant comment les entreprises gèrent leur sécurité tout en maintenant l’efficacité opérationnelle.
Selon une étude de Gartner réalisée en 2023, 50 % des organisations interrogées ont mis en œuvre DevSecOps, 31 % déclarent que leur organisation est en cours de mise en œuvre et 11 % prévoient de mettre en œuvre DevSecOps prochainement.
I) Qu’est ce que le DevOps ?
a) L’origine du DevOps
Avant de se focaliser sur le DevSecOps, faisons un focus sur le DevOps.
Il est difficile de donner une définition précise de ce qu’est le DevOps. En effet, ce mouvement est défini par ses créateurs, mais également par ses utilisateurs, qui font évoluer le concept dans le temps.
Décortiquons le terme « DevOps ». Il est composé des mots :
- « Dev » : fait référence aux personnes dont le métier est lié au développement, c’est-à-dire les ingénieurs applicatifs, les ingénieurs en développement ou encore les ingénieurs logiciels ;
- et « Ops » : fait référence aux opérationnels, des individus dont le métier concerne le déploiement et la gestion des systèmes, du réseau, ou d’autres services. Ce sont par exemple les techniciens, les administrateurs système et réseau ou encore les ingénieurs de production.
Le DevOps c’est donc, de manière simplifiée, des professionnels exerçant des métiers distincts, qui travaillent de manière transversale pour s’entraider et garantir la réussite de la société, et qui partagent un objectif commun. L’approche DevOps vise à unir les équipes de développement et les opérationnels.
Quelles étaient les problématiques d’avant DevOps ?
Côté développeurs : le temps nécessaire avant que ce code ne soit proposé pour une utilisation par les clients ;
Côté opérationnels : les outils utilisés deviennent obsolètes avec l’augmentation du nombre de serveurs et d’équipements réseau et les ops doivent assister les utilisateurs qui rencontrent des problèmes lors de l’utilisation des nouveaux services et fonctionnalités développés côté dev ;
Des deux côtés : mur qui sépare les Devs et les Ops entraîne beaucoup de frustrations, et peu de synergie entre les deux équipes = wall of frustration.
b) La transition du DevOps vers le DevSecOps
Le DevOps représente ainsi une culture axée sur la communication et la collaboration entre les équipes de développement et d’opérations, tout en automatisant les processus de déploiement logiciel et d’amélioration de l’infrastructure. Il vise à améliorer la qualité des produits grâce à des équipes collaboratives, efficaces, et engagées dans une amélioration constante. Cela se traduit par des mises à jour plus fréquentes et rapides, renforçant ainsi la position de l’entreprise sur le marché par rapport à ses concurrents. La chaîne CI/CD, regroupant des pratiques spécifiques, accélère le déploiement des applications via deux étapes cruciales (intégration et déploiement continus).
Le DevSecOps vient renforcer la notion de sécurité du DevOps. L’ajout du « Sec » visant à protéger la confidentialité, l’intégrité et la disponibilité des données, des services et des plateformes.
Téléchargez le livre blanc sur la création d’une Usine Logicielle DevSecOps
II) Les piliers du DevSecOps
Les piliers du DevSecOps s’appuient sur ceux originaires du DevOps, en y intégrant toujours cette notion de sécurité.
Voici les 5 piliers du DevSecOps :
1) Réduire les silos organisationnels
Les silos sont des foyers d’expertise spécialisée essentiels à une organisation, souvent nécessaires pour répondre à des besoins spécifiques. Ils requièrent des outils et des pratiques adaptés pour fonctionner efficacement. Cependant, lorsque les équipes ne disposent pas des outils nécessaires, des silos indésirables peuvent se former, menaçant l’entreprise (par le biais d’initiatives individuelles cherchant des solutions par exemple). Pour éviter cela, il est crucial de favoriser la communication entre ces silos et d’encourager une vision commune, soutenue par une hiérarchie offrant des outils pour une collaboration harmonieuse.
Le mouvement DevSecOps prône l’utilisation d’outils et de méthodologies partagés pour faciliter ces échanges. Voici quelques exemples de méthodologies :
a) Cartographier l’existant
Pour accomplir une transformation efficace, une vision complète de son point de départ est essentielle. La cartographie constitue une étape cruciale pour saisir pleinement le contexte dans lequel on opère et évaluer les efforts d’investissement nécessaires. On peut alors se poser certaines questions : Quelles sont les missions de l’organisation ? A-t-elle une stratégie en place ? Quels sont les profils des équipes ? Quelles sont les missions d’équipes ? A quelles données ont-elles accès et comment s’échangent-elles les données ?
b) Utiliser un réseau unique
Prenons l’exemple d’équipes de data-scientists réparties dans différents bureaux qui se retrouvent à travailler sur des sujets similaires, et qui découvrent qu’elles développent des solutions identiques. Cette redondance non coordonnée entraîne des pertes financières pour l’entreprise.
Dans les grandes organisations, des problèmes similaires se posent dans différents bureaux, pour lesquels des solutions techniques mutualisées pourraient répondre dans la majorité des cas. En utilisant un réseau unique, la centralisation des documents et des données permettrait un travail virtuel collaboratif et à jour pour tous, réduisant les frustrations liées aux délais et générant des économies pour l’organisation.
c) L’Usine logicielle DevSecOps
L’usine logicielle met à disposition des ingénieurs les ressources nécessaires pour développer leurs logiciels, telles que les dépendances, les paquets et les binaires. Elle sert par exemple à stocker un maximum de connaissances, contrôler les contributions ou encore à compiler et déployer les logiciels développés sur l’infrastructure.
d) Une messagerie partagée
Une messagerie partagée dynamise la collaboration en permettant des échanges rapides et le partage de documents, renforçant la cohésion. Elle facilite le travail à distance et la communication entre équipes dispersées. Cette plateforme est cruciale pour les alertes de production et la communication avec les utilisateurs. Des plateformes comme Mattermost, Element, Zulip ou Slack offrent des fonctionnalités avancées. Certaines entreprises ouvrent leurs messageries aux clients, créant des communautés d’entraide, avec parfois des « ingénieurs de la communauté« , tandis que d’autres préfèrent facturer ce support.
e) L’Architecture logicielle
En fonction de la maturité organisationnelle et de la taille des équipes, les architectures logicielles rendront les logiciels plus simples à maintenir, à mettre à jour ou plus résilients dans la durée. Voici les 3 architectures logicielles les plus connues : Architecture monolithique, Architecture microservices et Architecture Serverless.
Nous aborderons plus en profondeur les sujets d’Usine logicielle DevSecOps ou encore d’architecture logicielle dans nos prochains articles.
2) Mesurer
C’est en mesurant que l’on peut observer l’évolution, la performance et la productivité des équipes, des processus et des technologies. Cela s’appelle l’observabilité.
Avec l’observabilité, il est également possible d’automatiser les systèmes et de permettre :
- Aux équipes techniques et commerciales d’avoir une visibilité constante sur l’état des services (fonctionnels, partiellement accessibles, en panne) ;
- Aux équipes techniques d’analyser les données pour détecter et résoudre les problèmes ;
- Aux équipes techniques d’aider les équipes commerciales à prendre des décisions plus éclairées pour l’entreprise.
L’observabilité regroupe donc les outils et pratiques permettant aux ingénieurs de repérer, analyser et résoudre rapidement les problèmes système tels que les bugs, les ralentissements ou les problèmes de disponibilité. Au-delà de la nécessité de garantir la résilience, certaines données récupérées peuvent être légalement requises.
Quels sont les 3 piliers de l’observabilité ?
Les journaux d’activité (logs), les métriques (metrics) et les traces (traces) forment les trois fondements de l’observabilité. Ils sont produits par les logiciels afin de repérer et résoudre les problèmes potentiels après le déploiement.
3) Assurer la Sécurité par Conception
La sécurité par conception, ou « security by design« , est un principe fondamental du DevSecOps. Il s’agit d’intégrer la sécurité dès les premières phases du développement logiciel, plutôt que de la considérer comme une couche supplémentaire à ajouter après coup. L’objectif est de minimiser les vulnérabilités dès la conception même du système.
Dans le cadre du DevSecOps, cela se traduit par l’intégration des pratiques de sécurité tout au long du cycle de vie du développement logiciel. Les équipes de développement, d’opérations et de sécurité collaborent étroitement pour identifier, évaluer et atténuer les risques dès les premières étapes du processus de développement. Cela inclut l’utilisation d’outils automatisés pour les tests de sécurité, l’application de bonnes pratiques de codage sécurisé, la surveillance continue des applications en production pour détecter et remédier rapidement aux menaces potentielles.
En adoptant la sécurité par conception, le DevSecOps vise à créer des logiciels plus résilients, moins sujets aux failles de sécurité et capables de s’adapter aux menaces émergentes. Cela permet de réduire les risques liés à la sécurité tout en assurant un déploiement rapide et une amélioration continue des applications.
4) Tirer parti de l’automatisation
Un autre pilier important du DevSecOps est l’automatisation. D’ailleurs, nous parlons de l’automatisation logicielle dans notre blog.
Ce sont le déploiement continu (CD) et l’intégration continue (CI) qui permettent d’automatiser la mise en production des nouveaux codes développés à l’aide de phases de tests, de build et de scans. Automatiser les responsabilités des développeurs permet de libérer du temps pour développer de nouvelles fonctionnalités, et de réduire les erreurs humaines.
Du côté Ops, l’infrastructure peut elle aussi être automatisée pour améliorer sa maintenabilité. Cela est possible grâce à l’Infrastructure as Code (IaC) qui est étroitement liée au Cloud et à l’utilisation de technologies d’orchestration de conteneurs comme Kubernetes.
L’Infrastructure as Code rassemble les pratiques et les technologies permettant de rendre la configuration d’une infrastructure sous forme de code informatique. En effet, pour éviter au maximum l’erreur ou la compromission volontaire d’un système, les infrastructures modernes sont déployées sous forme de “code”. De plus une architecture réseau “zero trust” est adoptée, c’est-à-dire qu’aucun utilisateur ou application ne doit être considéré comme fiable par défaut.
Quelques exemples de configuration :
- Configuration du nouveau serveur de temps pour toutes les machines ;
- Mise à jour un logiciel en production ;
- Actualisation du fond d’écran de toutes les machines ;
- Intégration d’un nouveau nom de domaine…
Les scripts d’IaC définissent précisément les machines concernées, ce qui permet d’appliquer les modifications uniquement à des groupes spécifiques de machines.
5) Réduire le coût du changement
La réduction du changement dans le cadre du DevSecOps fait référence à la minimisation des modifications importantes et des mises à jour massives qui pourraient potentiellement perturber la sécurité, la stabilité ou la fiabilité des systèmes.
Dans le contexte du DevSecOps, cette approche vise à éviter les changements brusques et non planifiés qui pourraient introduire des vulnérabilités de sécurité ou affecter la disponibilité des services. Pour ce faire, plusieurs pratiques sont adoptées :
- Planification des changements : Les équipes travaillent à prévoir et à organiser les mises à jour, les améliorations et les correctifs de sécurité de manière méthodique et planifiée, réduisant ainsi les risques de perturbations soudaines.
- Tests continus : Les modifications potentielles passent par des phases de tests approfondis tout au long du cycle de vie du développement pour identifier et résoudre les problèmes de sécurité ou de stabilité avant déploiement.
- Déploiements graduels : La mise en production se fait souvent de manière progressive, par itérations successives ou déploiements par phases, permettant de contrôler et de limiter les impacts en cas de problème.
- Automatisation et surveillance : L’utilisation d’outils d’automatisation et de surveillance en continu permet de détecter rapidement les problèmes de sécurité ou de performance suite à un changement, facilitant ainsi une réaction rapide pour les résoudre.
En réduisant les changements imprévus ou non maîtrisés, le DevSecOps vise à maintenir la stabilité, la fiabilité et la sécurité des systèmes, tout en favorisant une amélioration continue et une évolution contrôlée des applications et infrastructures.
Renseignez-vous sur la mise en place de votre Usine Logicielle DevSecOps
III) Comment le DevSecOps Révolutionne les Équipes ?
1) L’évolution des pratiques à l’ère du DevOps , Cloud et DevSecOps
L’importante évolution de l’IT dans les entreprises est indéniable, devenant un investissement clé plutôt qu’une simple dépense. Malgré les risques grandissants en cybersécurité et la demande croissante pour des applications immédiates, les attaques informatiques régulières posent un défi majeur. Le DevSecOps allie vitesse, qualité et sécurité pour les infrastructures et le code, associant efficacité et sûreté.
De plus, les entreprises ont longtemps fonctionné en silos, avec des équipes dédiées à des aspects spécifiques du système. Cette approche a engendré des difficultés de communication et d’identification des sources de problèmes. L’avènement du Cloud et du DevOps a changé la donne. Les équipes de livraison intègrent maintenant développeurs, ingénieurs système et Cloud, favorisant une collaboration plus étroite. Les équipes Cloud proposent des outils d’automatisation et de déploiement, mais la sécurité peut freiner la livraison de nouveaux produits.
Le DevSecOps intègre la sécurité dans le processus de développement et d’exploitation Cloud. Les méthodes Cloud des équipes permettent une définition claire des responsabilités pour une meilleure intégration entre les domaines concernés.
2) Comment les équipes peuvent-elles prendre en main le DevSecOps ?
L’adoption du DevSecOps par les équipes est un défi pour de nombreuses entreprises, souvent sans succès. Pour faciliter cette transition, l’intégration de membres de l’équipe sécurité dans les équipes de développement ou d’infrastructure est efficace, notamment avec les « Security Champions » tout comme l’automatisation des tâches et l’orientation vers les benchmarks CIS (ensemble de directives de sécurité pour évaluer la conformité des systèmes aux normes) pour renforcer la sécurité des systèmes.
Qu’est-ce qu’un « Security Champion” ?
Les « security champions » sont des référents sécurité présents dans les équipes Dev et Ops. Leur rôle englobe l’évangélisation des bonnes pratiques de sécurité, la contribution à la conception sécurisée des applications, la sélection d’outils adaptés, ainsi que la supervision et la formation sur l’utilisation de ces outils. Ils travaillent également sur l’automatisation des vérifications de sécurité au sein de la chaîne CI/CD.
Par ailleurs, se conformer aux référentiels des outils utilisés, comme l’AWS IAM Best Practices, assure une configuration sécurisée. Cette évolution vers des méthodes plus efficaces exige une évolution organisationnelle, encourageant des professionnels polyvalents nommés les « T-Shaped peoples« . Ces derniers sont capables d’opérer dans divers domaines grâce à leurs compétences variées, dépassant ainsi les divisions traditionnelles en entreprise.
IV) L’impact du DevSecOps sur le business
1) Réinventer les méthodes de collaboration
Le DevSecOps apporte des changements dans les méthodes de travail des équipes et impacte également la sphère du business. Sa culture spécifique introduit de nouveaux processus et technologies pour résoudre diverses problématiques.
Fondamentalement liée au DevOps, cette culture repose sur des principes clés. La collaboration entre équipes, ainsi qu’entre les secteurs business et technique, est cruciale pour adopter cette nouvelle approche. Les avancées technologiques offrent des outils intéressants, notamment pour automatiser certaines tâches de sécurité comme le « Shift Left« . Enfin, la mesure de ces éléments permet de démontrer l’efficacité des nouvelles pratiques.
Qu’est-ce que approche « Shift Left » ?
Elle consiste à intégrer des tests et des sécurisations en amont du cycle de développement. Elle englobe non seulement le code mais aussi l’architecture globale, tel que le réseau et les microservices. Ce concept s’étend à diverses pratiques comme la sécurisation des applications et le renforcement précoce des structures pour garantir une meilleure qualité globale du code.
2) L’importance de l’engagement des parties prenantes
Les débuts impliqués des parties prenantes (stakeholders) favorisent la progression des projets en anticipant les exigences et en minimisant les risques. Cette implication précoce permet des retours rapides (shorten feedback loops), aidant les équipes DevOps à ajuster leurs pratiques et éviter les égarements. Elle éclaire également sur les impacts des politiques de sécurité, justifiant l’investissement initial dans l’architecture et les ressources.
3) La sécurité en environnement DevOps
Dans un contexte DevOps, la sécurité évolue constamment, nécessitant une intégration directe dans le développement et les infrastructures. La sécurité devient une composante quotidienne, malgré la nécessité de rôles dédiés et de conformité aux normes sectorielles. Le DevSecOps va au-delà des outils et du code, remodelant la manière dont les entreprises abordent la sécurité.
Retrouvez notre guide détaillé sur la création d’une Usine Logicielle DevSecOps
Ainsi, l’évolution du DevOps vers le DevSecOps marque une étape cruciale dans la manière dont les entreprises abordent la sécurité. Intégrer la sécurité dès les premières phases du développement et des opérations devient fondamental pour garantir la résilience des systèmes. Cela nécessite une collaboration étroite entre équipes, la suppression des silos, l’adoption de mesures préventives et l’automatisation. L’engagement précoce des parties prenantes joue également un rôle clé dans la réussite des projets. Cette évolution va au-delà des outils, redéfinissant la façon dont les entreprises assurent leur sécurité tout en restant efficaces.