Articles
Tutoriels
Guides interactifs
Outils DevSecOps
Les outils DevSecOp qui sécurisent les workflows DevOps
Kev Zettler
Full Stack Web Developer
Malgré tous les efforts déployés par les éditeurs de logiciels, les failles de sécurité restent inévitables. Depuis 2000, quelque 3,5 milliards de personnes auraient été victimes d'un vol de données personnelles. Une partie du problème réside dans le fait que les exploits et les failles de sécurité se multiplient à mesure que le code des apps logicielles grandit et se complexifie.
De plus, alors qu'un nombre croissant d'organisations adoptent une approche DevOps, qui automatise et intègre les processus entre les équipes de développement et informatiques, les outils de sécurité traditionnels sont souvent dépassés. Les développeurs d'aujourd'hui doivent intégrer des mesures de sécurité à chaque étape du workflow de développement. La pratique qui consiste à sécuriser les workflows DevOps est appelée DevSecOps.
Qu'est-ce que l'approche DevSecOps ?
DevSecOps vise à intégrer la sécurité dans un pipeline d'intégration continue, de livraison continue et de déploiement continu. En appliquant les valeurs DevOps à la sécurité logicielle, la vérification de la sécurité est intégrée au processus de développement, auquel elle participe activement.
Tout comme DevOps, DevSecOps est une méthodologie organisationnelle et technique qui combine des workflows de gestion de projet à des outils informatiques automatisés. DevSecOps intègre des audits de sécurité actifs et des tests d'intrusion au développement Agile et aux workflows DevOps de sorte que la sécurité fasse partie intégrante du produit plutôt qu'elle soit appliquée à un produit fini.
Pour implémenter DevSecOps, les équipes doivent :
- introduire la sécurité tout au long du cycle de vie du développement afin de limiter les failles dans le code logiciel ;
- veiller à ce que l'ensemble de l'équipe DevOps (y compris les équipes de développement et opérationnelles) partage la responsabilité du respect des bonnes pratiques de sécurité ;
- planifier des contrôles de sécurité automatisés à chaque étape de la livraison de logiciels en intégrant des contrôles de sécurité, des outils et des processus dans le workflow DevOps.
DevSecOps implique que la sécurité soit appliquée à chaque étape du pipeline DevOps type : planification, développement, test, déploiement, exploitation et observation.
La continuité est une caractéristique distincte d'un pipeline DevOps. Elle inclut l'intégration continue, la livraison/le déploiement continus (CI/CD), le feedback continu et les opérations continues. Au lieu de tests ponctuels ou de déploiements planifiés, chaque fonction est exécutée en continu.
Ressource connexe
En savoir plus sur Snyk Security for Bitbucket Cloud
Découvrir la solution
Obtenez Snyk for Bitbucket Cloud
Planification
La phase de planification de DevSecOps est la moins automatisée. Elle implique la collaboration, la discussion, la revue et la stratégie d'analyse de la sécurité. Les équipes doivent effectuer une analyse de sécurité et élaborer un plan qui indique où, comment et quand les tests de sécurité seront réalisés. IriusRisk est à la fois un outil de conception collaboratif pour modéliser les menaces et un outil de planification populaire pour DevSecOps. Des outils supplémentaires de suivi et de gestion des tickets, comme Jira, et de communication et de discussion, comme Slack, sont également disponibles.
Build
La phase de développement démarre une fois que les développeurs ont commité le code dans le dépôt source. Les outils de développement DevSecOps se concentrent plutôt sur l'analyse de sécurité automatisée que sur l'artefact de sortie de build. Les pratiques de sécurité importantes incluent l'analyse des composants logiciels, les tests de logiciels applicatifs statiques (SAST) et les tests unitaires. Les outils peuvent être intégrés à un pipeline CI/CD existant pour automatiser ces tests.
Les développeurs installent régulièrement des dépendances de code tierces et s'appuient sur ces dernières. Elles peuvent provenir d'une source inconnue ou non fiable. Elles peuvent aussi inclure accidentellement ou malicieusement des vulnérabilités et des exploits. Au cours de la phase de développement, il est essentiel d'examiner et d'analyser ces dépendances pour détecter toute faille de sécurité.
Parmi les outils bien connus pour exécuter l'analyse de la phase de développement, citons OWASP Dependency-Check, SonarQube, SourceClear, Retire.js, Checkmarx et Snyk.
Les outils DevSecOps pour la phase de programmation aident les développeurs à écrire du code plus sécurisé. À ce niveau, les pratiques de sécurité importantes incluent les analyses de code statiques, les revues de code et les hooks pré-commit.
Lorsque les outils de sécurité s'intègrent directement au workflow Git existant des développeurs, chaque commit et merge déclenche automatiquement un test ou une revue de sécurité. Ces outils prennent en charge différents langages de programmation et environnements de développement intégrés. Parmi les outils de code de sécurité les plus populaires, citons Gerrit, Phabricator, SpotBugs, PMD, CheckStyle et Find Security Bugs.
Test
La phase de test est déclenchée après la création d'un artefact de build et son déploiement réussi dans des environnements de staging ou de test. L'exécution d'une suite de tests complète prend beaucoup de temps. Cette phase devrait rapidement se solder par un échec pour laisser les tâches de test les plus coûteuses pour la fin.
La phase de test utilise des outils de test de sécurité des apps dynamiques (DAST) pour détecter les flux d'apps actives, tels que l'authentification des utilisateurs, l'autorisation, SQL Injection et les points de terminaison liés aux API. Les outils DAST axés sur la sécurité analysent une app sur la base d'une liste de problèmes extrêmement graves et connus, tels que ceux répertoriés dans le Top 10 d'OWASP.
De nombreux outils de test open source et payants fournissent plusieurs fonctionnalités et prennent en charge les écosystèmes linguistiques, y compris les tests de sécurité automatisés BDD, JBroFuzz, Boofuzz, OWASP ZAP, Arachi, IBM AppScan, GAUNTLT et la suite SecApp.
Déploiement
Si les phases précédentes réussissent, le moment est venu de déployer l'artefact de build en production. Les seuls domaines de sécurité à gérer pendant la phase de déploiement touchent au système de production réel. Par exemple, toute différence de configuration entre l'environnement de production et les environnements de staging et de développement précédents doit être minutieusement examinée. Les certificats TLS et DRM de production doivent être validés et revus en vue d'un prochain renouvellement.
La phase de déploiement est idéale pour utiliser les outils de vérification de l'environnement d'exécution comme Oquery, Falco et Tripwire, qui extraient des informations d'un système en cours d'exécution afin de déterminer s'il fonctionne comme prévu. Les organisations peuvent également appliquer les principes de l'ingénierie du chaos en essayant de renforcer la confiance dans la capacité d'un système à résister à des conditions difficiles. Des événements réels peuvent être simulés, tels que des pannes serveur, des pannes de disque dur ou une interruption des connexions réseau. Netflix est largement connu pour son outil Chaos Monkey, qui met en pratique les principes de l'ingénierie du chaos. Le service utilise également un outil Security Monkey qui recherche les violations ou les vulnérabilités dans les groupes de sécurité de l'infrastructure mal configurés et déconnecte tous les serveurs vulnérables.
Au cours de la phase de livraison du cycle DevSecOps, le code applicatif et l'exécutable doivent déjà être minutieusement testés. Cette phase se concentre sur la sécurisation de l'infrastructure de l'environnement d'exécution en examinant les valeurs de configuration de l'environnement, comme le contrôle d'accès utilisateur, l'accès au pare-feu réseau et la gestion des données secrètes.
Le principe du moindre privilège (PoLP) est une préoccupation majeure lors de la phase de livraison. Il signifie que tout utilisateur, programme ou processus dispose d'un accès minimal pour remplir ses fonctions. Le principe implique d'auditer les clés d'API et les jetons d'accès afin que les propriétaires aient un accès limité. Sans cet audit, un attaquant pourrait trouver une clé lui permettant d'accéder à des zones non prévues du système.
Les outils de gestion des configurations constituent un ingrédient clé de la sécurité lors de la phase de livraison, car ils fournissent une visibilité sur la configuration statique d'une infrastructure dynamique. La configuration système peut ensuite être auditée et revue. Cette configuration devient immuable et peut uniquement être mise à jour par des commits dans un dépôt de gestion des configurations. Parmi les outils de gestion des configurations populaires, citons Ansible, Puppet, HashiCorp Terraform, Chef et Docker.
La communauté de sécurité fournit des lignes directrices et des recommandations concernant les bonnes pratiques pour renforcer votre infrastructure, notamment les tests d'évaluation du CIS (Center for Internet Security) et les checklists des configurations NIST.
Observation
Dès qu'une app est déployée et stabilisée dans un environnement de production réel, des mesures de sécurité supplémentaires sont nécessaires. Les entreprises doivent surveiller et observer l'app active pour détecter toute attaque ou fuite grâce à des contrôles de sécurité automatisés et à des boucles de surveillance de la sécurité.
L'auto-protection des apps d'exécution (RASP) identifie et bloque automatiquement les menaces de sécurité entrantes en temps réel. La RASP fait office de proxy inverse qui observe les attaques entrantes et permet à l'app de se reconfigurer automatiquement sans intervention humaine en réponse à des conditions explicites.
Une équipe interne ou externe spécialisée peut effectuer des tests d'intrusion pour détecter des exploits ou des vulnérabilités en compromettant délibérément un système. Une autre technique de sécurité consiste à proposer un programme Bug Bounty, lequel rémunère les personnes externes qui signalent des exploits et des failles de sécurité.
La surveillance de la sécurité s'appuie sur des analyses pour créer et surveiller les principales métriques liées à la sécurité. Par exemple, ces outils marquent les demandes aux points de terminaison publics sensibles, tels que les formulaires d'accès aux comptes utilisateur ou les points de terminaison de base de données. Parmi les outils populaires de défense des environnements d'exécution, citons Imperva RASP, Alert Logic et Halo.
Conclusion…
Alors que toujours plus d'équipes de développement peaufinent leurs processus et adoptent de nouveaux outils, elles doivent faire preuve de diligence en matière de sécurité. DevSecOps est un processus cyclique qui doit être itéré en continu et appliqué à chaque déploiement de nouveau code. Les exploits et les attaquants évoluent constamment. Il est donc important que les équipes de développement modernes évoluent elles aussi.
Avant de démarrer les tests DevSecOps, il s'avère judicieux d'automatiser vos tests avec Bitbucket Pipelines. N'oubliez pas non plus de consulter les outils et ressources d'automatisation des tests disponibles sur l'Atlassian Marketplace.
Partager cet article
Thème suivant
Lectures recommandées
Ajoutez ces ressources à vos favoris pour en savoir plus sur les types d'équipes DevOps, ou pour les mises à jour continues de DevOps chez Atlassian.