Concilier Agilité et Sécurité : le manifeste Agile et l’OWASP à notre secours !

Depuis longtemps, lorsque l’on parle de sécurité dans un contexte de développement d’une application, d’un site web ou d’une API, il vient assez vite à l’esprit l’OWASP et son Top 10. Si vous n’en avez pas entendu parler, je vous recommande de commencer par la lecture de notre article sur le sujet et d’aller ensuite directement sur le site d’OWASP pour découvrir les mises à jour les plus récentes, en particulier le Top 10 de 2021.
Notre article sur le Top 10 en 2-2 permet de visualiser l’évolution des menaces et de s’apercevoir que si certaines d’entre elles sont maintenant traitées « by design » par les frameworks et outils que nous utilisons, il y a toujours de nouveaux enjeux de sécurité pour les applications que nous développons. Il est donc important de se tenir à jour sur ce sujet.
Si vous ne parlez pas anglais, sachez qu’une traduction française d’une partie des sujets de l’OWASP est disponible sur GitHub.
Mais aujourd’hui, avant même l’OWASP, quand on parle de développement et de sécurité, on pense à DevSecOps (voir notre article sur comment intégrer la sécurité à vos projets DevOps) dont on entend beaucoup parler en ce moment. Au-delà du BuzzWord et des outils miracles, il nous paraît intéressant de regarder ce que l’OWASP propose pour intégrer la sécurité de la meilleure façon possible dans le cycle de développement d’une application dans un contexte Agile.
Développement Agile et Sécurité ?
A première vue, nous pouvons penser que ces deux termes sont complexes à appréhender ensemble. Prenons néanmoins un peu de recul, car « on » nous a déjà fait le coup à multiples reprises, et revenons aux bases.
Le manifeste Agile nous avait fait comprendre (entre autres) que nous devions interagir intelligemment avec les clients de notre application et livrer régulièrement… Le mouvement Agile s’était vite fait dépassé et le terme vite galvaudé, reléguant la « qualité » au second plan malgré une injonction à « une attention continue à l’excellence technique et à une bonne conception ».
Le Craft et un retour d’eXtreme Programming (XP) (cf notre article sur l’eXtreme programming) puis les pratiques d’Agile Testing / Shift-Left Testing avaient remis de la qualité au cœur de nos développements.
Le mouvement DevOps venait ensuite briser le « mur de la confusion » et nous permettre (aussi grâce au Cloud) de déployer rapidement et de façon stable des applications. Cette transition, loin d’être terminée, prend du temps dans les entreprises, même chez Microsoft.
Ne soyons donc pas surpris que derrière DevSecOps se cache en premier lieu du « Shift-Left Security », du développement des compétences sur les sujets de sécurité incarnés par exemple par le Security Champion et de la gouvernance.
Dans un cycle itératif / DevOps cela revient à en tenir compte partout :
Le projet SAMM de l’OWASP
Le projet Software Assurance Maturity Model est un ensemble d’outils et de recommandations pour améliorer la gestion de la sécurité des logiciels d’une entreprise.
Il se base sur un modèle et une évaluation (assessment) permettant de nous autoévaluer sur notre niveau de maturité et de définir ensuite un plan d’amélioration.
Ce modèle très complet (voire complexe) couvre l’ensemble du cycle de vie des applications et sera à contextualiser en fonction de vos environnements techniques.
Je vous laisse découvrir tout cela directement sur le site du SAMM model review et faire votre auto-évaluation 😊.
Le SAMM Agile Guidance
Le SAMM Agile Guidance est certainement un des éléments de l’OWASP qu’il faudrait étudier en premier pour bien comprendre comment ajouter de la sécurité dans nos développements. Le mot DevSecOps n’y est jamais employé. Nous évoquions plus haut la difficulté de lier, à première vue, sécurité et agilité ; la réponse qu’il nous apporte à ce sujet repart elle aussi des fondements Agile :
- La sécurité fait partie intégrante de la qualité d’un logiciel.
- Un modèle permettant d’évaluer notre maturité doit être vu comme un moyen d’amélioration continue.
La qualité et l’amélioration continue sont au cœur du développement Agile !
Quelques pistes pour mettre tout cela en œuvre
Prendre notre part de responsabilité
La sécurité est l’affaire de toute l’équipe et à ce titre une responsabilité à partager. Pour réussir, il est nécessaire de bien appréhender ces sujets, puisque cela fait partie de notre métier de développeur. Un premier pas est d’aller étudier les Cheat Sheet de l’OWASP et idéalement de disposer d’un Security Champion.
Partager la compréhension des enjeux
Lorsque nous avons (re)mis de la qualité (QA) au sein des équipes de développements agiles en intégrant ces problématiques au plus tôt (et pas dans un sprint de test), nous avons, entre autres, utilisé un outil très simple venant avec le Behavior-Driven Development (BDD) : « les 3 Amigos ». Cet atelier simple mais puissant permet à 3 personnes (PO, Développeur et Testeur) d’expliciter une “User Story” en la spécifiant avec des exemples.
Il s’applique très bien à la sécurité en réunissant le PO, un développeur et une personne jouant le rôle du « hacker ». C’est pendant cette séance que l’on explicitera les « Security Requirements » et les « Abuses Story » afin de partager et détailler les besoins en termes de sécurité d’une fonctionnalité. On pourra alors automatiser ces tests tout en laissant de la place pour des tests manuels de sécurité à l’instar des tests exploratoires en QA.
Définir une stratégie globale de sécurité
Enfin, en fonction de votre maturité et de la criticité de l’application que vous développez, il sera certainement temps de structurer votre réflexion autour de la sécurité globale de l’application avec du « Threat Modeling», par exemple à l’aide de l’outil de Microsoft.
Agilité et Sécurité : l’essentiel à retenir
Pour conclure, nous avons voulu dans cet article vous apporter des éléments pour concilier Agilité et Sécurité dans le développement d’applications en s’appuyant sur deux sources qui font référence selon nous : le manifeste Agile et l’OWASP. En adaptant notre « mindset » agile à la mise en œuvre de la sécurité logicielle et en apprenant grâce à l’expérimentation et à la documentation citée plus haut, nous sommes certains que vous apporterez toujours plus de qualité dans vos réalisations.
A noter : L’atelier « 3 Amigos » n’est en soi pas compliqué (et s’expérimente vite). Bien que prévu au départ pour partager la compréhension commune d’un besoin en termes de comportement de l’application, il est facilement transposable à d’autres thèmes qui sont indispensables dans toute bonne application : les sujets « ops » (déploiement, monitoring, performance), la sécurité, l’UX/UI, l’internationalisation, l’accessibilité, etc.
Il y a trois pièges à éviter cependant :
- Chaque thème (par exemple la sécurité) doit être abordé de façon isolée lors d’une session dédiée. Il y a bien sûr toujours un lien entre les thèmes, mais nous sommes ici pour détailler un thème et partager sa compréhension et son enjeu. La vision globale sera ensuite plus « facile » à diffuser.
- Chaque atelier doit être rapide pour une story « standard », 15 minutes seraient déjà beaucoup. Pour cela, il est obligatoire que la session ait été préparée en avance par un expert du thème de l’atelier (un PO, un QA, un développeur, un Security Champion, etc.), et que les trois personnes réunies soient les bonnes.
- Ne perdez pas de temps en anticipant ces ateliers sur des « stories » qui sont prévues pour être développées dans « longtemps », il faut être « Just-In-Time » en travaillant sur les « stories » du prochain sprint et sur celles qui en valent la peine.
Vous souhaitez en savoir plus sur la sécurité dans le Cloud ? Retrouvez tous les articles de cette série :
- La cybersécurité : un enjeu stratégique pour les entreprises
- Les enjeux de la cybersécurité face à l’évolution des systèmes d’information
- Déléguer la gestion des utilisateurs et des équipements dans Azure AD et Intune
- La gestion des identités dans Azure Kubernetes Services (AKS)
- Azure Sphere : la cybersécurité pour qui, quoi, quand et comment ?
- Pourquoi se former sur la cybersécurité ?
- La sécurité dans GitHub
Nos experts restent également à votre écoute pour discuter de vos problématiques autour de la sécurité : contactez-nous !