Contrairement aux idées reçues, la distribution rapide d’applications n’est pas incompatible avec la sécurité. À l’heure où de nombreuses entreprises adoptent une infrastructure et des services déployés sur le cloud, la sécurité demeure une priorité d’autant plus incontournable que le flux d’intégration continue/livraison continue (CI/CD) représente une cible particulièrement attrayante pour les auteurs de menaces.
Il ne suffit plus de rechercher des failles de sécurité dans les applications après leur mise en service. Une approche de la sécurité de type « Shift-Left » doit démarrer au moment précis où l’équipe DevOps entreprend le développement d’une application et commence à provisionner l’infrastructure. De cette manière, les vulnérabilités pourront être traitées avant que leur résolution ne devienne trop lourde et trop onéreuse. C’est le principe de base de DevSecOps.
En déplaçant la sécurité en amont — ou « vers la gauche », selon le principe Shift-Left —, les entreprises peuvent identifier les erreurs de configuration et certains risques de sécurité avant que les utilisateurs ne soient affectés. Compte tenu du rôle joué par le cloud dans la mise en œuvre de l’approche DevOps, la protection des environnements et des charges de travail dans le cloud va nécessairement prendre de l’ampleur pour assurer la protection du pipeline CI/CD, des applications et, in fine, des clients.
Alors quelles sont les cinq étapes de sécurité clés dont les équipes DevOps doivent tenir compte dans le cadre d’une approche Shift-Left ?
1. Communiquer avec l’équipe Sécurité pour mieux collaborer
L’approche Shift-Left constitue un changement culturel. Outre la mise en place des processus et des outils nécessaires, les entreprises doivent repenser leur mode de fonctionnement afin d’intégrer leurs processus, outils et expertise des tests logiciels plus tôt dans le flux CI/CD. L’approche DevSecOps ne consiste pas uniquement à déplacer les responsabilités en matière de sécurité vers les développeurs : elle modifie également les rôles et les attentes, en combinaison avec les bons outils, pour atteindre un niveau d’équilibre optimum dans le développement et la sécurité. En d’autres termes, la sécurité doit être d’emblée considérée comme une priorité, et cesser d’être une réflexion a posteriori, ajoutée à l’issue du cycle de développement des logiciels (SDLC).
2. Procéder régulièrement à des tests automatiques
L’approche Shift-Left exige l’exécution de tests précoces et fréquents. En automatisant le test du code, les développeurs sont régulièrement informés du moindre problème de sécurité, ce qui leur permet d’y remédier bien avant la mise en production du logiciel. Les outils automatisés qui recherchent des vulnérabilités minimisent les risques d’erreur humaine susceptibles de se produire lors d’un test manuel, et étendent le périmètre de vérification du logiciel. Le code est analysé de manière incrémentielle, de sorte qu’il ne reste plus grand-chose à tester à la fin du cycle de développement du logiciel.
Une stratégie Shift-Left implique l’intégration d’un, voire de plusieurs outils dans le pipeline CI/CD afin de localiser les vulnérabilités connues et d’identifier d’autres problèmes potentiels. Les outils les plus couramment utilisés sont les suivants : test statique de sécurité des applications (SAST), test dynamique de sécurité des applications (DAST), test interactif de sécurité des applications (IAST), détection des secrets, et analyse de la composition logicielle (SCA). Dans un premier temps, il convient d’évaluer les outils dont on dispose avant d’en intégrer de nouveaux aux processus.
3. Intégrer les tests d’intrusion dans le processus
Si les tests automatiques sont un ingrédient incontournable de l’approche DevSecOps, l’automatisation proprement dite peut ignorer certains problèmes potentiels. Une évaluation manuelle de la sécurité, par exemple sous la forme de tests d’intrusion, vérifie le niveau de sécurité d’une application en la bombardant d’attaques. Ce test supplémentaire minimise le risque et permet parfois de détecter des problèmes qu’un test automatique peut ne pas détecter. Avant d’engager le processus de protection, demander à un ingénieur en sécurité d’examiner le logiciel et de lancer un test d’intrusion permet de vérifier que tous les problèmes potentiels sont minimisés. Deux précautions valent mieux qu’une et à cet égard, des tests supplémentaires éviteront de découvrir une vulnérabilité après qu’un hacker l’ait exploitée.
4. Ne pas oublier de mettre les logiciels à jour !
La mise à jour régulière des logiciels est un pilier de la cybersécurité. Les développeurs doivent vérifier que tous leurs programmes — système d’exploitation, cadre applicatif, bibliothèques tierces — bénéficient de la toute dernière version pour avoir la certitude que tous les correctifs de sécurité sont dûment actualisés. Qu’il soit effectué sur le site de l’éditeur ou auprès de la communauté Open source, le téléchargement des mises à jour est une mesure majeure pour la sécurité des applications.
5. Explorer les possibilités de formation à la sécurité
S’ils ne sont pas des experts en sécurité, les développeurs jouent un rôle essentiel dans la réalisation d’applications sécurisées et à ce titre, ils doivent maîtriser les bases du codage et des tests sécurisés. À mesure que la demande de logiciels augmente, ils doivent envisager de suivre une formation en sécurité adaptée à leur fonction et à leurs besoins spécifiques. Une formation et un soutien appropriés peuvent apporter les informations de base nécessaires pour rédiger un code à la fois fonctionnel et sécurisé.
S’agissant de la sécurité des logiciels, il n’existe pas de solution miracle pour garantir qu’un code est sécurisé et qu’il le demeurera. En adoptant ces pratiques, les entreprises ne pourront qu’augmenter les chances de détecter les failles logicielles et de les corriger avant le déploiement du code.
(function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "//connect.facebook.net/fr_FR/all.js#appId=243265768935&xfbml=1"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk'));
Cliquez ici pour lire l’article depuis sa source.