Sécurité des microservices : 6 bonnes pratiques
10 février 2022
0 minutes de lectureParallèlement à l’adoption des déploiements conteneurisés, de nombreuses équipes de développement se sont tournées vers une architecture de microservices. Celle-ci leur permet de créer rapidement des applications et de les déployer de manière plus agile, tout en publiant des fonctionnalités indépendamment. Les cycles de développement sont ainsi raccourcis, les équipes disposent d’une plus grande liberté dans le choix des technologies et la résilience des logiciels s’en trouve renforcée.
Les microservices peuvent être un excellent moyen de moderniser des applications auparavant monolithiques, mais cette approche peut aussi introduire des risques de sécurité. Examinons en détail la sécurité des microservices et quelques bonnes pratiques à prendre en compte.
Qu’est-ce que la sécurité des microservices ?
La sécurité des microservices est la stratégie adoptée par les équipes de développement et de sécurité pour réduire les risques liés à l’architecture applicative basée sur les microservices. Cette démarche consiste à créer des microservices sécurisés et à veiller à ce qu’ils communiquent entre eux de manière sécurisée.
Les microservices, c’est-à-dire des composants logiciels indépendants pouvant être déployés séparément, facilitent et optimisent la mise à l’échelle des applications volumineuses. En effet, ces services indépendants peuvent être mis à jour beaucoup plus facilement et les développeurs peuvent choisir la pile technologique adaptée à chaque composant. Comme les microservices peuvent être déployés indépendamment les uns des autres, les organisations peuvent également mettre à l’échelle certains aspects de l’application sans devoir la mettre à l’échelle dans son ensemble, ce qui réduit la consommation de ressources et les coûts.
Toutefois, cette capacité à créer et à déployer rapidement et indépendamment des microservices comporte des risques de sécurité. Si les équipes de développement n’appliquent pas les bonnes pratiques de codage sécurisé, chaque nouveau déploiement de microservice peut exposer l’application dans son ensemble à des risques.
6 bonnes pratiques pour sécuriser les microservices
Comme nous l’avons vu, la sécurité des microservices est une approche qui vise à renforcer la posture de sécurité globale d’une application. Voici six bonnes pratiques à prendre en compte pour sécuriser vos microservices.
1. Intégrer la sécurité dès la conception
La plupart des applications basées sur des microservices sont déployées dans le cadre de la modernisation de systèmes monolithiques. La phase de conception est donc une occasion idéale de renforcer la sécurité des applications existantes. Lors de la conception d’une architecture de microservices, les équipes de développement et de sécurité doivent faire de la sécurité des applications une priorité afin de poser des bases solides et de garantir la sécurité de l’application à mesure qu’elle évolue et se développe.
Concevoir des logiciels sécurisés suppose de prendre en compte la sécurité à chaque couche d’une application, à commencer par son architecture. La modélisation des menaces consiste à examiner la conception des opérations du système et la circulation des données entre les sous-systèmes ou les microservices. Les équipes peuvent ainsi repérer les points faibles potentiels et y remédier dès les premières étapes de la conception.
Dans une architecture basée sur les microservices, il est essentiel de renforcer le code et les composants open source d’une application contre les menaces, et de protéger les conteneurs et l’infrastructure qui exécutent les microservices. De plus, les microservices doivent pouvoir communiquer entre eux sans risque pour la sécurité.
2. Adopter une culture DevSecOps
L’un des principaux avantages des microservices est que les équipes de développement peuvent déployer plus rapidement des composants logiciels individuels sans redéployer l’application dans son ensemble. Si cela permet aux équipes DevOps de créer des applications plus rapidement, cela peut également introduire des risques de sécurité. Il est donc essentiel de faire évoluer les mentalités pour intégrer les tests de sécurité au processus de développement.
C’est pourquoi une approche DevSecOps, qui intègre directement les mesures de sécurité au processus de développement, ainsi qu’aux environnements de build et d’intégration continue, est essentielle pour réduire les risques. DevSecOps mise sur l’automatisation et instaure une responsabilité partagée pour fournir des logiciels sécurisés sans compromettre la vitesse de développement. En fait, cette approche peut même réduire le coût et le temps nécessaires à la livraison de logiciels sécurisés, car les développeurs n’ont plus besoin d’ajouter des contrôles de sécurité après le déploiement.
3. Intégrer des outils de sécurité des applications
Un aspect essentiel de DevSecOps consiste à intégrer des outils AppSec à un pipeline automatisé d’intégration et de livraison continues (CI/CD). Leur intégration aux pipelines CI/CD permet aux organisations d’intervenir plus tôt dans le cycle de développement, réduisant ainsi le temps et les efforts nécessaires pour renforcer la posture de sécurité d’une application. En effet, les développeurs peuvent plus facilement corriger les problèmes de sécurité directement dans leur IDE pendant qu’ils écrivent le code, plutôt qu’après coup.
Par exemple, l’analyse statique de la sécurité des applications (SAST) permet aux équipes de développement de détecter et de corriger plus tôt les problèmes de sécurité dans le code source d’une application, au cours du cycle de développement logiciel (SDLC). Les organisations peuvent ainsi contrôler chaque nouvelle modification d’un microservice avant que le code ne soit déployé en production.
Lancez-vous dans les compétitions Capture The Flag
Apprenez à résoudre des défis Capture The Flag en regardant à la demande notre atelier virtuel d’initiation.
4. Analyser les dépendances
Outre les microservices, les logiciels modernes utilisent souvent un grand nombre de composants open source. Dans la plupart des cas, le code open source dont dépend une application dépasse largement le volume de code personnalisé écrit par les équipes de développement. Ces dépendances tierces peuvent toutefois contenir des vulnérabilités qui influent sur le profil de risque d’une application.
Comme les microservices individuels utilisent souvent des piles technologiques différentes, il est difficile pour les développeurs de suivre les composants tiers et de s’assurer qu’ils sont sécurisés. À l’aide d’un outil de gestion de la sécurité open source, les équipes de développement peuvent détecter et corriger plus facilement les vulnérabilités potentielles du code open source qu’elles utilisent.
Lancez-vous dans les compétitions Capture The Flag
Apprenez à résoudre des défis de capture du drapeau en regardant à la demande notre atelier virtuel d’initiation.
5. Utiliser des conteneurs sécurisés
Les applications basées sur des microservices étant composées de dizaines, voire de centaines de composants différents, les équipes de développement utilisent souvent des conteneurs pour simplifier les déploiements. La sécurité des conteneurs est donc essentielle pour sécuriser les microservices et mettre en œuvre une sécurité cloud native.
La sécurité des conteneurs ne se limite pas aux images qui leur servent de base. Elle englobe également le registre de conteneurs où sont stockées les images et les outils utilisés pour l’orchestration. Analyser le registre de conteneurs à la recherche d’images vulnérables est essentiel pour réduire le risque lié à l’utilisation de la même image de base par plusieurs microservices. Une autre façon de garantir le déploiement sécurisé des microservices consiste à éliminer les erreurs de configuration et les autres risques associés aux outils d’orchestration de conteneurs tels que Kubernetes.
6. Créer des passerelles API
Dans une architecture de microservices, les API sont le principal moyen de communication entre les composants logiciels indépendants. Elles constituent donc l’une des parties les plus vulnérables d’une application.
Une passerelle API est un outil qui s’intercale entre un client et un ensemble de services backend. Cet outil de gestion des API prend en charge l’authentification, la limitation du débit et d’autres tâches visant à protéger l’API contre les abus. Les passerelles API peuvent ainsi protéger une application basée sur des microservices contre les accès indésirables de tiers et contre le volume important de trafic associé à une attaque par déni de service (DoS).
FAQ sur la sécurité des microservices
Les microservices sont-ils plus sécurisés ?
Si la taille et la complexité d’une application déterminent son profil de risque, une architecture de microservices est souvent plus sécurisée qu’une application monolithique. Les microservices étant découplés, les vulnérabilités se limitent souvent à un composant donné au lieu d’affecter l’ensemble de l’application.
En utilisant une authentification adaptée pour les communications entre services, les applications basées sur des microservices peuvent également bénéficier de contrôles de sécurité supplémentaires par rapport aux applications monolithiques. Enfin, lorsqu’une vulnérabilité est découverte, il est beaucoup plus facile de corriger le problème et de redéployer le microservice afin de réduire rapidement le risque de sécurité.
Comment sécuriser les microservices ?
La sécurisation des microservices nécessite une architecture applicative efficace dès le départ. Les différents composants logiciels sont souvent développés et déployés rapidement. Il est donc essentiel d’intégrer directement la sécurité applicative au processus de développement pour fournir une application sécurisée basée sur des microservices. Le paysage des menaces évolue constamment : il est donc crucial d’utiliser des outils AppSec automatisés pour détecter et corriger en continu les vulnérabilités susceptibles de mettre une application en danger.
Découvrez comment Coveo a intégré Snyk à son pipeline de déploiement de microservices pour étendre les pratiques DevSecOps à l’ensemble de son entreprise.
