Aujourd’hui, les sites Web et les applications n’ont plus rien à voir avec les modèles des débuts. Nous sommes passés de sites Web d’une portée relativement étroite, hébergés dans un seul datacenter avec un point d’entrée unique, à des applications Web riches et dynamiques, composées de milliers de parties modulables. Ce nouveau paradigme implique de véritables défis sécuritaires. A cet égard, il est essentiel pour les entreprises d’appréhender ces microservices qui sont à la base du fonctionnement de leurs sites Web et de leurs applications, au risque de se retrouver sur un terrain « miné ».
En effet, si l’évolution vers une architecture de microservices favorise la flexibilité des sites Web rendant l’ajout de nouvelles fonctionnalités moins coûteux et complexe, la démarche expose davantage les entreprises à des attaques toujours plus élaborées. Pour répondre à ce challenge, il est donc nécessaire de redéfinir la notion de périmètre de sécurité moderne.
Mais comment les entreprises peuvent-elles mieux appréhender le concept de mircroservices afin d’adapter leur stratégie de sécurité ?
Microservices : Quezaco?
Les microservices sont une méthode innovante de conception d’architecture logicielle, basée sur un ensemble de composants indépendants reliés entre eux. Chacun assure une fonction spécifique de l’application, contrairement au modèle traditionnel dit « monolithique » qui caractérise une application composée d’une base de code unifiée.
Si rien ne distingue les deux modèles côté interface utilisateur, en coulisses, les microservices décomposent l’application en services granulaires dont les fonctionnalités spécifiques sont souvent développées par des équipes dédiées réduites.
Sur un site d’e-commerce comme Amazon, chaque action d’un utilisateur (navigation dans le catalogue de produits, filtres de recherches, paniers d’achat, paiement…) implique une armée de microservices, dont certains assurent l’exécution de cette action ou collaborent avec d’autres services afin d’afficher le résultat de l’action. Or, les utilisateurs n’agissent pas de la même manière au même moment. Lors d’une vente Flash par exemple, de nombreux utilisateurs se connectent et passent leurs achats en même temps tandis que d’autres consultent les articles non soldés. Les différentes parties du site Web sollicitées simultanément doivent ainsi être capables de fonctionner et de s’actualiser indépendamment.
A cet égard, les microservices permettent aux entreprises d’optimiser l’expérience utilisateur de manière agile et flexible, grâce à des composants dynamiques et indépendants permettant de cibler les actions. Ils offrent également la possibilité d’économiser le temps et les coûts liés à la refonte totale de l’architecture d’une application monolithique et à l’augmentation des ressources informatiques.
Evaluer les enjeux de sécurité des microservices
Si les microservices offrent une multitude d’atouts, ils impliquent également de nombreux défis en matière de sécurité. Ainsi, plus le nombre de services et d’équipes dédiés aux applications se développent et plus les couches d’applications, les services de data centers et de cloud impliqués se multiplient, exposant les entreprises à de nouvelles menaces.
Dans le cas d’une banque ou d’une application financière basée sur le cloud, les fuites de données et attaques potentielles sont une préoccupation permanente. Tandis que les règles de conformité et les pare-feu conçus pour les protéger impliquent déjà un fort niveau de complexité, le déploiement des microservices – avec leurs règles propres et leurs équipes de développeurs dédiés – augmente les risques de problème.
Premièrement, l’application, plutôt que d’exister au sein d’une unité logique dans un serveur unique, est distribuée en de nombreux services et serveurs qui peuvent se situer à proximité les uns des autres ou en des points éloignés. Quelle que soit la configuration, la surface de l’application exposée aux menaces est donc beaucoup plus importante et les opportunités d’attaques nombreuses.
Par ailleurs, le déploiement de microservices nécessite souvent une période de transition délicate pour l’entreprise, qui continue d’utiliser son application monolithique tout en intégrant des microservices et doit combiner l’usage des anciennes technologies et des nouveaux codes. Ce processus de migration accroît la surface d’attaque, tandis que les équipes de développement doivent garantir la sécurité de l’application monolithique et développer de nouveaux microservices en assurant la cohérence des protocoles et des mécanismes de sécurité.
Enfin, lorsque le déploiement de microservices implique plusieurs équipes dédiées, l’une travaillant sur le développement et l’autre sur le codage d’un service par exemple, il est essentiel de veiller à ce qu’elles s’appuient sur des bonnes pratiques communes afin d’assurer la rédaction d’un code cohérent et sécurisé dans l’ensemble de l’architecture modulaire. En effet, plus les langages de programmation et les piles d’application se multiplient, plus la vulnérabilité augmente.
Ainsi, les entreprises doivent garder à l’esprit que leur sécurité est à l’épreuve du moindre maillon, même le plus faible, et que les microservices impliquent une chaîne supplémentaire.
Déployer la stratégie Zero Trust
Le principal défi de sécurité posé par les microservices réside ainsi dans l’élargissement du champ d’exposition et la multiplicité d’intervenants ayant une incidence sur les comportements de l’application. La nature dynamique et très automatisée des microservices nécessite donc davantage de vigilance et d’implication.
L’une des solutions intéressantes consiste à adopter le modèle Zero Trust reposant sur le principe que rien n’est digne de confiance. Pour prétendre qu’une application est parfaitement opérationnelle, l’entreprise doit ainsi s’assurer de la bonne mise en place de l’authentification mutuelle, des autorisations, du chiffrement et de la transparence entre l’ensemble des microservices qui la composent.
La méthode implique la mise en œuvre d’un plan d’actions comportant les règles de base qui définissent les méthodes de développement des applications et services et la manière dont ils s’identifient, interagissent et se comportent entre eux, notamment en cas de problème. L’une des premières étapes consiste à utiliser l’orchestration afin de garantir une authentification forte et le chiffrement du trafic de bout en bout. Pour ce faire, il est possible d’utiliser une terminaison TLS pour le routage front-end et d’ajouter des TLS mutuels aux back-ends avec une authentification automatisée via des certificats numériques. Cela garantit que les services seront configurés pour communiquer uniquement avec d’autres services qu’ils peuvent vérifier. Des règles plus restrictives peuvent également être appliquées de manière à limiter la communication avec des services authentifiés au préalable.
Après cette première étape, les entreprises doivent évaluer la charge inhérente à chaque service en fonction de la bande passante, des connexions et demandes et anticiper leur comportement en cas de surcroît de charge. Il est donc primordial d’envisager des règles permettant de fournir et transférer les capacités, de mener une inspection détaillée des demandes et d’enregistrer les détails de la transaction.
Enfin la visibilité et la traçabilité s’avèrent cruciales. Les entreprises doivent pouvoir bénéficier d’une totale transparence de leur application et d’un audit complet permettant d’identifier les actions et les équipes impliquées dans chaque service. En cas d’incident, elles disposent ainsi des données nécessaires pour identifier, comprendre et corriger la défaillance. Une rigueur et une prise de recul qui font partie des fondements de la stratégie Zero Trust.