Parce que… c’est l’épisode 0x678!
Shameless plug
25 et 26 février 2026 - SéQCure 2026
CfP
14 au 17 avril 2026 - Botconf 2026
28 et 29 avril 2026 - Cybereco Cyberconférence 2026
9 au 17 mai 2026 - NorthSec 2026
3 au 5 juin 2025 - SSTIC 2026Description
Introduction
Nick Taylor, développeur advocate chez Pomerium à Montréal, a présenté une approche innovante pour sécuriser les serveurs MCP (Model Context Protocol) en utilisant les principes du Zero Trust et des identity-aware proxy. Développeur depuis longtemps et passionné par la construction d’outils, Nick apporte son expertise en sécurité et infrastructure pour répondre aux défis émergents de l’IA agentique.
Le Model Context Protocol (MCP)
Le MCP est un protocole récent créé par Anthropic en 2024 qui permet d’étendre les capacités des grands modèles de langage (LLM) en leur donnant accès à des outils externes. Comme l’explique Nick, pour ceux qui ont déjà travaillé avec des systèmes agentiques, le concept des “tool calls” sera familier : il s’agit d’outils que le LLM peut appeler pour enrichir son contexte et accomplir certaines tâches.
L’exemple classique est celui de la météo : un LLM ne sait pas quel temps il fait aujourd’hui dans une région donnée. En appelant un outil météo, il peut obtenir cette information et fournir une réponse pertinente, comme “il fait 12 degrés Celsius à Montréal, mets ton manteau”. Sans cet outil, le LLM pourrait suggérer d’aller à la plage en maillot de bain, ce qui serait complètement inapproprié.
Un serveur MCP est essentiellement une collection d’outils regroupés logiquement. Par exemple, le serveur MCP GitHub contient plusieurs outils pour interagir avec GitHub : créer un dépôt, créer une issue, ouvrir une pull request, etc. Nick compare MCP à “l’USB-C pour les outils en IA”, une analogie qu’il utilise avec précaution, anticipant l’évolution future du protocole.
Les défis de sécurité
Bien que MCP existe depuis moins d’un an, il connaît déjà une forte adoption, mais cette rapidité s’accompagne de préoccupations sérieuses en matière de sécurité. Le protocole et son écosystème sont encore en phase de maturation, et on observe un manque de réflexion sur la sécurité dans de nombreuses implémentations.
Nick souligne un problème fondamental : le LLM ne comprend pas vraiment ce qui est “bon” ou “mauvais” en termes d’actions. Son rôle est simplement d’essayer d’exécuter les instructions qu’on lui donne. Si on lui demande de faire quelque chose, il tentera de le faire sans considération pour les conséquences. C’est pourquoi il est crucial de mettre en place des garde-fous (guard rails).
Un cas d’usage préoccupant mentionné dans la discussion est celui où un MCP connecté à GitHub avec des permissions trop larges pourrait, sans contrôle approprié, effectuer des actions destructrices. Dans un cas extrême, un LLM pourrait même supprimer une base de données de production simplement parce qu’il suit les directives sans comprendre la gravité de l’action. Ce risque est d’autant plus sérieux que les développeurs, dans leur enthousiasme à construire des applications innovantes, ont tendance à négliger la sécurité au profit de la rapidité de développement.
Le Zero Trust et l’identity-aware proxy
Pour répondre à ces défis, Nick introduit le concept de Zero Trust, un modèle de sécurité développé par Google suite à une importante violation de données dans les années 2010. Le principe fondamental du Zero Trust, comme son nom l’indique, est de ne jamais faire confiance à personne et de toujours vérifier l’identité et le contexte.
Traditionnellement, les entreprises utilisent des VPN pour sécuriser l’accès aux ressources internes. Cependant, une fois connecté au VPN, un utilisateur a souvent accès à l’ensemble du réseau interne, même s’il ne peut pas se connecter à certaines ressources spécifiques. Le modèle Zero Trust fonctionne différemment en utilisant un identity-aware proxy (IAP).
Un IAP combine trois éléments essentiels : un fournisseur d’identité (IDP) comme Google, GitHub ou Okta, un moteur de politiques, et un reverse proxy. Lorsqu’un utilisateur tente d’accéder à une ressource, le système vérifie non seulement son identité mais aussi son contexte. Par exemple, même si Nicolas est authentifié, s’il essaie d’accéder à l’environnement de production alors qu’il n’est pas de garde (on-call), les politiques bloqueront l’accès.
Une caractéristique unique de cette approche est que toutes les URL pour accéder aux ressources internes sont publiques, mais protégées par l’authentification et les politiques. Si une seule condition n’est pas remplie, le proxy n’entre jamais en jeu et l’accès est refusé. Cela diffère fondamentalement du VPN où, une fois connecté, on a un accès réseau même si on ne peut pas se connecter à certaines applications.
L’application de l’IAP aux serveurs MCP
Pomerium a développé un support de première classe pour les serveurs MCP, reconnaissant qu’ils fonctionnent sur la couche 7 du modèle OSI (HTTP), tout comme les applications web traditionnelles que l’entreprise sécurise depuis longtemps. Cette solution, entièrement open source, offre plusieurs avantages significatifs.
Premièrement, l’expérience développeur (DX) est considérablement améliorée. Nick demande avec humour : “Qui aime implémenter OAuth ?” La réponse est généralement négative. Avec l’IAP de Pomerium, tout le flux d’authentification OAuth est géré automatiquement. Le serveur MCP lui-même n’a aucune connaissance d’OAuth - il reste dans l’infrastructure interne, protégé par le proxy. Les développeurs peuvent donc se concentrer sur la construction de fonctionnalités sans se soucier de l’implémentation de la sécurité.
Deuxièmement, pour les services externes comme GitHub ou Google Calendar, bien qu’il soit toujours nécessaire de créer une application OAuth, la configuration est simplifiée. Il suffit d’ajouter une configuration OAuth dans la route de l’application, incluant le secret, l’ID, les URL et les scopes nécessaires. Pomerium gère ensuite automatiquement tout le flux d’authentification.
Gestion sécurisée des tokens
Un aspect crucial de la sécurité concerne la gestion des tokens d’authentification. Normalement, lorsqu’un utilisateur autorise l’accès à un service comme GitHub, le token retourné est envoyé au client MCP. Cela pose un problème de sécurité car ce token représente “les clés du royaume” - si quelqu’un s’en empare, il peut faire n’importe quoi avec les permissions associées.
La solution de Pomerium est élégante : le token provenant de GitHub ou Google ne quitte jamais l’IAP. Il reste dans la gateway où il est stocké de manière sécurisée, associé à l’utilisateur. Ce qui est retourné au client MCP est un token Pomerium à courte durée de vie. Même si ce token venait à être compromis, il expirerait rapidement, minimisant les risques.
De plus, Pomerium évite le “token pass-through”, où le token du fournisseur d’identité serait envoyé directement au serveur MCP. Au lieu de cela, un token Pomerium contenant uniquement des claims (qui vous êtes, mais pas ce que vous pouvez faire) est utilisé, respectant le principe du moindre privilège.
Contrôle granulaire des permissions
L’un des avantages les plus puissants de cette approche est la capacité à restreindre finement les actions possibles, même dans les limites des scopes OAuth existants. Par exemple, GitHub nécessite le scope “repo” pour créer des dépôts, mais ce même scope donne également la permission de supprimer des dépôts. Dans un contexte humain normal, on est conscient de ce qu’on fait lorsqu’on supprime un dépôt - on doit confirmer, copier-coller le nom du dépôt, etc. Mais dans un contexte agentique, le LLM pourrait supprimer un dépôt sans cette conscience.
Avec le moteur de politiques de Pomerium, on peut dire : “l’outil MCP de suppression de dépôt n’est permis pour personne” ou le restreindre à des utilisateurs ou groupes spécifiques. Lorsqu’un LLM tente d’appeler cet outil, la requête passe par l’IAP qui vérifie les politiques à chaque fois - ce n’est pas une vérification unique au moment de la connexion, mais une vérification continue pour chaque requête.
Si la politique bloque l’action, la requête n’atteint jamais le serveur MCP et une erreur appropriée est retournée. Cette approche crée un garde-fou rigide et impossible à contourner, protégeant contre les comportements imprévisibles des LLM tout en maintenant un haut niveau de fonctionnalité pour les cas d’usage autorisés.
Audit et conformité
Un autre avantage crucial de faire transiter toutes les requêtes par le proxy est la capacité d’audit intégrée. L’IAP enregistre automatiquement toutes les activités : qui s’est connecté, quels outils ont été appelés, pourquoi un accès a été refusé (utilisateur pas dans le bon groupe, politique non satisfaite, etc.).
Pour un développeur solo, cet aspect peut sembler moins critique, mais pour les organisations, c’est essentiel. La capacité de retracer toutes les actions et de comprendre pourquoi certaines décisions ont été prises est un élément fondamental de la conformité et de la sécurité d’entreprise. Sans ces capacités d’audit, de nombreuses organisations ne pourraient tout simplement pas adopter la technologie.
Conclusion et encouragements
Nick termine en encourageant les développeurs à ne pas se sentir “en retard” dans le domaine de l’IA agentique. Même si certains ont commencé il y a un, deux ou trois ans, le domaine est tellement nouveau que tout le monde peut encore se lancer. L’important est d’expérimenter avec ces technologies tout en intégrant la sécurité dès le premier jour, plutôt que comme une réflexion après coup.
Il reconnaît que le coût peut être une préoccupation, mais note que de nombreux outils offrent des niveaux gratuits, et que pour les versions payantes (comme Claude ou ChatGPT à 20 dollars par mois), le temps gagné justifie largement l’investissement. De plus, de nombreux employeurs sont maintenant favorables à l’utilisation de ces outils et peuvent en couvrir les coûts.
Tout le code et les solutions dont Nick a parlé sont open source et disponibles, y compris un template TypeScript pour créer des serveurs MCP qui utilise le SDK officiel MCP, Vite et d’autres outils modernes. L’invitation est claire : il faut expérimenter, apprendre et construire, mais en le faisant de manière sécurisée dès le départ. Avec des outils comme Pomerium, la friction pour implémenter une sécurité robuste est considérablement réduite, permettant aux développeurs de se concentrer sur l’innovation tout en maintenant les standards de sécurité nécessaires pour un déploiement en production.
Notes
Nick Taylor
Model Context Protocol
MCP Security Best Practices
Pomerium Model Context Protocol (MCP) Support
Github/Pomerium
Github/mcp-app-demo
Github/MCP-typescript-template
BeyondCorp: A New Approach to Enterprise SecurityCollaborateurs
Nicolas-Loïc Fortin
Nick TaylorCrédits
Montage par Intrasecure inc
Locaux virtuels par Riverside.fm