Mise en place d’une identité managée pour AVD

Dès ce mois de septembre 2025, Microsoft introduit l’identité managée (Managed identity) aux environnements Azure Virtual Desktop. Cet ajout permettra d’exécuter en toute sécurité des actions lors de la création, suppression et mise à jour des machines virtuelles du pool d’hôtes. Cette nouvelle identité managé, de type système ou utilisateur est encore en préversion, remplacera certains usages du bien connu service principal Azure Virtual Desktop, que l’on utilise jusqu’à présent sur Azure comme sur Entra.

A partir du 15 novembre 2025, toute configuration utilisant le système de gestion des mises à jour intégré à Azure Virtual Desktop devra obligatoirement être associée à une identité managée (Managed Identity) pour continuer à fonctionner.

Concrètement, cela signifie que l’ancien modèle basé sur le service principal AVD disparaît progressivement au profit d’une approche plus robuste, où les opérations de création, suppression et mise à jour des machines virtuelles, passent par une authentification native dans Microsoft Entra ID.

Voici le service principal que l’on utilise actuellement :

Pour les administrateurs, c’est une étape importante qu’il faut anticiper dès maintenant, car elle touche directement la gestion quotidienne des environnements AVD.

Pourquoi ce changement ?

Historiquement, AVD utilisait un service principal spécifique pour réaliser certaines actions sur les ressources Azure associées aux hôtes de session :

Une identité managée s’authentifie automatiquement auprès d’Entra ID sans qu’aucun mot de passe ou secret ne soit stocké dans vos scripts ou vos ressources. Cela réduit considérablement la surface d’attaque et améliore la conformité.

Côté gouvernance, tout passe par l’Azure RBAC, ce qui rend les permissions plus lisibles et plus faciles à auditer.

System-assigned ou User-assigned ? deux modèles possibles :

Azure propose deux types d’identités managées.

  • System-assigned : créée et rattachée directement au pool d’hôtes Son avantage principal est sa simplicité : elle vit et meurt avec la ressource. Si vous supprimez le pool d’hôtes , l’identité disparaît automatiquement.
  • User-assigned : ressource indépendante dans Azure que vous pouvez rattacher à un ou plusieurs pools d’hôtes. Elle est donc plus flexible, particulièrement utile dans des environnements complexes où plusieurs ressources doivent partager la même identité et les mêmes permissions. En revanche, elle demande une gestion supplémentaire : l’objet reste actif même si le pool d’hôtes est supprimé.

Quelles fonctionnalités AVD utiliseront cette identité managée ?

Pour le moment, toutes les fonctionnalités d’Azure Virtual Desktop ne basculent pas encore vers ce modèle. Seule la fonction de mise à jour d’un pool d’hotes est prévue actuellement :

Les autres fonctionnalités, telles que App Attach, Autoscale et Start VM on Connect s’appuient encore sur le service principal Azure Virtual Desktop :

Cela signifie que vous aurez peut-être à gérer une période de transition où les deux approches cohabitent.

Quels impacts pour vos environnements AVD existants et futurs ?

Pour les administrateurs AVD, ce changement implique de revoir la configuration des pool d’hôtes, en particulier ceux qui utilisent ou vont utiliser la session host configuration.

À partir de novembre 2025, il ne sera plus possible d’ajouter de nouveaux hôtes de session sans identité managée :

  • À partir du 19 septembre 2025, les nouveaux pools d’hôtes utilisant une configuration d’hôtes de session dans le portail Azure devront être créés avec une identité managée.
  • À partir du 15 octobre 2025, les pools d’hôtes existants avec une configuration d’hôtes de session ne pourront plus mettre à jour leur configuration tant qu’une identité managée n’aura pas été ajoutée.
  • À partir du 15 novembre 2025, les pools d’hôtes existants avec une configuration d’hôtes de session ne pourront plus créer de nouveaux hôtes de session tant qu’une identité managée n’aura pas été ajoutée.

Quels sont les rôles AVD nécessaires avec l’identité managée ?

Lorsqu’on assigne une identité managée à un pool d’hôtes AVD, il faut lui donner les bons rôles RBAC pour qu’Azure Virtual Desktop puisse automatiser les opérations sur les hôtes de session. Voici les rôles clés utilisés avec la session host configuration et leur utilité :

  • Desktop Virtualization Virtual Machine Contributor – Resource group of image gallery : Autorise l’accès à la Compute Gallery pour que l’identité managée puisse lire et utiliser les images servant de base au déploiement des VMs. Sans ce rôle, AVD ne peut pas provisionner une VM à partir de l’image de référence.
  • Desktop Virtualization Virtual Machine Contributor – Resource group for session hosts : Donne le droit de créer, mettre à jour et supprimer les machines virtuelles qui composent le pool d’hôtes. C’est le rôle central pour permettre à AVD de gérer le cycle de vie des hôtes de session.
  • Desktop Virtualization Virtual Machine Contributor – VNet / NSG : Permet à l’identité de connecter les cartes réseau des VMs au bon sous-réseau et d’appliquer les règles de sécurité (NSG). Ce rôle est indispensable pour que les hôtes de session soient correctement intégrés au réseau et puissent rejoindre le domaine ou accéder aux ressources.
  • Key Vault Secrets User – Domain join Key Vault : Autorise l’identité à récupérer les secrets nécessaires à la jointure au domaine, comme le mot de passe d’un compte de service stocké dans Azure Key Vault. Cela automatise le processus sans exposer les identifiants en clair.
  • Key Vault Secrets User – Admin account Key Vault : Permet à l’identité d’accéder aux identifiants administrateur stockés dans un Key Vault. Ces informations peuvent être nécessaires lors de la création ou de la configuration initiale des hôtes de session.

Pour illustrer concrètement la mise en place et l’utilisation d’une identité managée dans Azure Virtual Desktop, j’ai choisi de documenter deux scénarios distincts. Cela permettra de couvrir à la fois un environnement AVD neuf et un environnement AVD existant, afin que chacun puisse s’y retrouver selon sa situation.

Dans ce premier cas, je pars de zéro avec un déploiement complet d’Azure Virtual Desktop. Ce scénario illustre la nouvelle exigence imposée par Microsoft pour les nouveaux déploiements, et montre comment intégrer cette configuration proprement dès le départ.

Scénario I – Création d’un nouvel environnement AVD :

L’objectif est de créer un tout nouveau pool d’hôtes après le 19 septembre 2025, et en activant directement l’assignation d’une identité managée dès le processus de création.

Lors de la création de mon pool d’hôtes AVD, sur l’onglet Management, je constate que la case Identité managée est déjà cochée, ainsi que les permissions attribuées à cette identité :

Durant le déploiement, je vois les assignations de rôle automatiquement créées sur différentes ressources Azure pour cette identité managée :

Une fois l’environnement créé, la configuration de l’identité managée est visible directement dans les paramètres du pool d’hôtes :

En cliquant sur l’assignation de rôles, je peux voir les rôles effectivement appliqués sur les ressources du déploiement :

En vérifiant les rôles associés au pool d’hôtes, je constate la présence d’une identité managée de type system-assigned :

Dans le coffre Azure, je retrouve également cette identité managée avec les permissions nécessaires :

Afin de voir l’impact de celle-ci, je déclenche une mise à jour immédiate sur mon nouveau pool d’hôtes AVD :

La mise à jour se déclenche correctement :

Environ quinze minutes plus tard, la mise à jour se termine avec succès :

Les journaux montrent bien que c’est l’identité managée qui a été utilisée comme initiateur de la mise à jour :

Le deuxième test consiste maintenant à prendre un environnement AVD déjà déployé, avec un pool d’hôtes fonctionnel, et à lui associer une identité managée après coup.

Scénario II – Ajout d’une identité managée à un environnement AVD existant :

Ce scénario reflète les besoins de nombreuses organisations qui disposent déjà d’un parc en production AVD et qui doivent se mettre en conformité avant la date butoir de novembre 2025.

Sur mon environnement AVD déjà en place avant le 19 septembre 2025, je lance également une mise à jour via l’interface :

La mise à jour se déclenche correctement :

Après environ quinze minutes, la mise à jour se réalise avec succès :

Dans l’activité, je vois l’identité applicative AVD utilisée pour orchestrer l’opération.

Afin de mettre une identité managée sur mon ancien environnement AVD, je coche la case suivante sur ce pool d’hôtes, puis j’enregistre ma modification :

L’identité managée apparaît désormais dans la configuration du pool d’hôtes :

Une commande PowerShell permet de confirmer la présence de l’identité managée affectée au pool d’hôtes :

$parameters = @{
    Name = '<HostPoolName>'
    ResourceGroupName = '<ResourceGroupName>'
}

Get-AzWvdHostPool @parameters | Format-Table Name, IdentityType

Je constate cependant que cette identité n’a encore aucune assignation de rôle.

Malgré tout, je déclenche une mise à jour immédiate AVD :

Cette dernière échoue immédiatement :

Les journaux indiquent clairement que l’identité managée ne dispose pas des droits suffisants sur l’environnement AVD :

Je retourne dans la configuration et ajoute un par un les rôles nécessaires (Compute Gallery, Session Hosts, VNet/NSG, Key Vaults).

J’effectue l’opération autant de fois que nécessaire :

Je contrôle que les rôles sont bien en place sur le pool d’hôtes et sur le coffre associés :

Je relance la mise à jour du pool d’hôtes.

La mise à jour de mon environnement AVD se lance :

Après une quinzaine de minutes, la mise à jour est finalisée avec succès :

Les logs confirment que l’identité managée a bien été utilisée pour piloter la nouvelle mise à jour :

Conclusion

L’introduction des identités managées dans Azure Virtual Desktop marque une étape importante dans la sécurisation et la modernisation du service. Là où le service principal AVD imposait la gestion de secrets et une gouvernance parfois complexe, l’identité managée apporte une intégration native à Microsoft Entra ID et une simplification des processus.

Les deux scénarios que j’ai présentés montrent bien la dualité de la situation actuelle :

  • Pour les nouveaux environnements, l’identité managée est désormais intégrée par défaut, et il suffit de l’accepter et de valider les rôles nécessaires.
  • Pour les environnements existants, une phase d’adaptation est incontournable. Il faut ajouter manuellement l’identité managée, attribuer progressivement les bons rôles RBAC, et valider que toutes les opérations AVD critiques fonctionnent correctement.

Au-delà de l’exemple des mises à jour de pools d’hôtes, ce changement illustre surtout la direction que prend Microsoft : réduire la dépendance aux secrets et renforcer la sécurité par défaut. D’ici novembre 2025, l’identité managée sera obligatoire pour l’ensemble des environnements AVD utilisant la session host configuration.

Mon conseil : n’attendez pas la date butoir. Prenez le temps dès maintenant de tester, documenter et industrialiser vos déploiements AVD avec une identité managée. Cela vous évitera des blocages en production et vous assurera une transition fluide vers ce nouveau modèle de sécurité.

Testez un Custom MCP sur Copilot

Le protocole MCP continue toujours de gagner en popularité. Au travers de Copilot Studio, Microsoft propose, jour après jour, de plus en plus de connecteurs MCP, disponibles directement sur étagère. Mais qu’en est-il, lorsque le connecteur MCP vers la solution souhaitée n’existe pas encore ? Rassurez-vous, la mise en place d’un serveur MCP personnalisé est tout à fait possible dans Copilot Studio.

Il s’agit du 3ème article parlant du Model Context Protocol (MCP) écrit sur ce blog, dont voici un rappel des deux premiers :

Enfin, un autre article détaille le principe des instructions personnalisées et la mémoire disponibles sur Microsoft 365 Copilot et accessibles juste ici.

Mais qu’est-ce que MCP ?

Le Model Context Protocol (MCP) est un protocole qui permet à des assistants IA de se connecter de façon sécurisée à des sources de données et outils externes… bla bla … 🤣

Mais, si cette notion est nouvelle pour vous, je ne peux vous conseiller que de commencer par regarder cette excellente vidéo :

Comment tester un serveur MCP sur Copilot ?

Il est très simple et très rapide de tester un serveur MCP depuis l’application Desktop de Claude.

Les démonstrations mixant un serveur Custom MCP et Copilot sont encore un peu rares pour le moment, mais elles vont vite devenir légion. Mais, durant mes recherches, je suis tombé sur cet exercice, disponible sur un Bootcamp Copilot créé par Microsoft :

Cette petite démonstration MCP n’est pas révolutionnaire en soi, mais je la trouve bien pensée, car elle est très simple à mettre en place, et elle permet de comprendre comment Copilot va pouvoir se connecter avec les données de test via le serveur MCP.

Que contient cette démonstration ?

Nous allons commencer par déployer un serveur MCP de test servant à la gestion fictive de candidats RH. Le serveur est basé sur du .NET, et s’appuie sur le SDK MCP pour C#. Le serveur fournit des outils permettant de gérer la liste de candidats HR :

  • Lister les candidats
  • Rechercher un candidat
  • Ajouter un candidat
  • Mettre à jour un candidat
  • Supprimer un candidat

Une fois le serveur MCP en place, on va à l’intégrer à Microsoft 365 Copilot, via Copilot Studio, afin de gérer la liste de candidats RH via des prompts appelant ces outils MCP.

Aussi je vous propose donc de faire cet exercice ensemble 😎

Etape 0 – Rappel des prérequis :

Pour réaliser cet exercice, il vous faudra disposer des outils suivants sur votre poste :

Une fois ces prérequis installés sur votre poste. Nous allons pouvoir continuer en commençant par installer et configurer notre serveur MCP.

Etape I – Mise en place du serveur MCP :

Commencez par téléchargez l’archive du serveur MCP via ce lien GitHub :

Une fois l’archive ZIP sur votre poste, pensez à débloquer celle-ci via ses propriétés :

Décompressez-la dans un dossier local de votre choix :

Ouvrez Visual Studio Code, puis cliquez sur “Ouvrir un dossier” afin de sélectionner le dossier que vous venez de décompresser :

Prenez un moment pour parcourir la structure du projet.
Vous y trouverez :

  • un dossier Configuration avec le fichier HRMCPServerConfiguration.cs,
  • un dossier Data contenant candidates.json,
  • un dossier Services avec l’interface et l’implémentation CandidateService.cs,
  • un dossier Tools avec les définitions des outils et modèles (HRTools.cs, Models.cs),
  • et le fichier Program.cs, point d’entrée du projet.

Ouvrez une fenêtre de terminal intégrée dans Visual Studio Code, puis exécutez la commande suivante :

dotnet run

Copiez l’URL locale qui s’affiche dans le terminal :

http://localhost:47002/

Ouvrez le navigateur internet de votre choix, puis collez l’URL. Vous devriez voir apparaître un message d’erreur au format JSON : c’est le comportement attendu et cela confirme que le serveur est bien démarré.

Ngrok est un outil de tunnellisation qui permet d’exposer de manière sécurisée un serveur local à Internet via une URL publique, sans avoir à configurer manuellement votre réseau ou à ouvrir des ports dans votre pare-feu.

Pour cela, rendez-vous sur le site de Ngrok, puis inscrivez-vous chez eux afin d’avoir un compte gratuit :

Sur leur site, téléchargez l’installateur de Ngrok selon votre OS :

Copiez la commande suivante affichée sous l’installateur pour finaliser la configuration de votre Ngrok :

Depuis votre ordinateur, ouvrez Windows PowerShell, puis lancez la commande précédemment copiée afin de terminer la configuration Ngrok :

Créez un tunnel ngrok sécurisé depuis Internet vers votre serveur local qui écoute sur le port 47002, en générant une URL publique accessible depuis n’importe quel navigateur :

ngrok http http://localhost:47002

Copiez le nom de domaine commençant par https et finissant par ngrok-fre.app. Ne fermez pas cette fenêtre tant que le processus d’enrôlement API n’est pas entièrement fini :

Cliquez sur le lien public affiché par votre tunnel (ngrok / Dev Tunnel) afin de vérifier que l’URL redirige bien vers votre service local.

Constatez l’affichage de la même réponse JSON “d’erreur” que sur localhost : cela confirme que la liaison via le tunnel fonctionne correctement.

Ouvrez une fenêtre PowerShell, lancez la commande suivante afin de télécharger et exécuter le binaire MCP Inspector sans installation globale

npx @modelcontextprotocol/inspector

Patientez quelques secondes : MCP Inspector génère son URL locale et un token d’accès.

MCP ouvre automatiquement le navigateur web, collez l’URL publique de votre serveur MCP ngrok, puis cliquez sur Connecter :

Une fois connecté, cliquez sur le bouton pour lister les outils disponibles exposés par ce serveur MCP.

Sélectionnez un des outils proposés (par exemple list_candidates), puis cliquez ici pour l’exécuter :

Constatez l’apparition des résultats liés aux candidats RH retournés par le serveur MCP.

Le serveur MCP est opérationnel ; poursuivez dans Copilot Studio afin de créer votre agent et consommer les outils exposés par ce serveur.

Etape II – Création de l’agent Copilot :

Ouvrez le portail Microsoft Copilot Studio, puis cliquez ici pour créer un nouvel agent :

Cliquez sur Configurer, renseignez les informations de base, puis cliquez sur Créer :

  • Nom :
HR Candidate Management
  • Description :
An AI assistant that helps manage HR candidates using MCP server integration for comprehensive candidate management
  • Instructions :
You are a helpful HR assistant that specializes in candidate management. You can help users search for candidates, check their availability, get detailed candidate information, and add new 
candidates to the system. 
Always provide clear and helpful information about candidates, including their skills, experience, contact details, and availability status.

Attendez environ 1 minute que la création se termine, sans fermer la page.

Descendez en bas de la page, ajoutez des “Prompts suggérés” en lien avec la gestion des candidats RH , puis sauvegardez :

  • List all candidates
List all the candidates
  • Search candidates
Search for candidates with name [NAME_TO_SEARCH]
  • Add new candidate
Add a candidate with firstname [FIRSTNAME], lastname [LASTNAME], e-mail [EMAIL], role [ROLE], spoken languages [LANGUAGES], and skills [SKILLS]

Votre agent de base est prêt ; vous allez maintenant lui ajouter de la puissance en intégrant le serveur MCP.

Etape III – Connexion entre l’agent et le serveur MCP :

Toujours sur votre agent dans Copilot Studio, ouvrez l’onglet Outils, puis cliquez ici pour ajouter un nouvel outil :

Cliquez ici afin de créer un outil personnalisé :


Sélectionnez Model Context Protocol pour ajouter un serveur MCP :

Nommez le serveur MCP, ajoutez une description, collez l’URL publique générée par votre tunnel ngrok, laissez Authentication de base, puis cliquez sur Créer :

À la création, lancez l’établissement d’une connexion entre votre agent et l’outil MCP :

Cliquez sur Créer pour créer la connexion :

Cliquez ici pour ajouter et configurer l’outil dans l’agent :

Revenez sur la liste des outils, entrez dans l’outil MCP que vous venez d’ajouter en cliquant dessus :

Vérifiez la bonne connexion via la liste des outils exposés par le serveur MCP qui doit se récupérer correctement :

La connexion au serveur MCP est en place, il ne nous reste plus qu’à publier l’agent sur des canaux comme Teams.

Etape IV – Publication de l’agent :

Cliquez sur le bouton de test afin d’envoyer un prompt simple pour vérification :

Constatez l’apparition des résultats retournés par le serveur MCP dans le panneau de test :

Cliquez sur Publier pour publier votre agent :

Confirmez votre choix dans la boîte de dialogue :

Attendez la fin du processus de publication.

Ouvrez l’onglet des Canaux, cliquez sur Teams and Microsoft 365 Copilot, cochez l’option pour rendre l’agent disponible dans Microsoft 365 Copilot, puis cliquez sur Ajouter des canaux :

Patientez pendant l’enregistrement des paramètres du canal :

Revenez à l’agent et cliquez à nouveau sur republier en tenant compte du nouveau canal :

Confirmez votre choix dans la boîte de dialogue :

Votre agent est en ligne, il ne nous reste plus qu’à le tester dans Teams et Microsoft 365 Copilot.

Etape V – Tests dans Teams et Microsoft 365 Copilot :

Toujours sur la page de l’agent créé sur le portail de Copilot Studio, cliquez ici pour ajouter cet agent dans Microsoft 365 :

Cliquez sur Ajouter afin d’ajouter l’agent à votre portail Microsoft 365 Copilot :

Retrouvez l’agent dans la liste de gauche des agents disponibles :

Revenez sur Microsoft Copilot Studio pour ajouter le canal Teams :

Sur Teams, puis cliquez sur ici afin d’ajouter cet agent :

Dans Teams ou Microsoft 365 Copilot, lancez un prompt parmi les prompts suggérés :

Constatez l’apparition du résultat MCP lié au prompt exécuté.

Demandez à l’agent de retrouver un seul candidat via des critères précis, puis validez le résultat MCP affiché :

Demandez la suppression de ce candidat, vérifiez la confirmation :

Ouvrez MCP Inspector pour constater sa disparition de la liste :

Demandez l’ajout d’une caractéristique (par ex. une langue parlée) à un candidat, puis validez la mise à jour retournée par l’agent :

Revenez dans MCP Inspector, puis confirmez que la nouvelle caractéristique apparaît bien pour ce candidat :

Demandez l’ajout d’un nouveau candidat, puis constatez la confirmation :

Vérifiez dans MCP Inspector que l’enregistrement du nouveau candidat a bien été créé :

Demandez l’ajout d’un candidat en joignant un PDF de CV en exemple, puis validez le résultat fourni par l’agent :

Dans MCP Inspector, confirmez l’apparition du candidat associé au fichier PDF précédemment téléversé :

Conclusion

Vous avez mis en place un serveur MCP en local, l’avez exposé en URL publique via un tunnel, l’avez inspecté avec MCP Inspector, puis intégré dans Copilot Studio avant de le publier et de le tester dans Teams / Microsoft 365 Copilot.

À vous maintenant de créer un véritable agent opérationnel capable d’appeler des outils MCP pour gérer vos données directement depuis l’interface Copilot.

Pour aller plus loin, je vous recommande ce tutoriel pratique de Shervin Shaffie, qui montre comment créer un agent prêt pour la production sans écrire une seule ligne de code. Il vous montre comment connecter DocuSign, de la connexion à la publication, étape par étape :

Boostez la mémoire de Copilot

Depuis quelque temps, Microsoft pousse 2 nouveaux concepts de personnalisation de Copilot, qui paraissent similaires quand on les découvre : les Instructions personnalisées et la Mémoire Copilot. Les deux visent à rendre Copilot plus personnel et plus adapté au contexte affin d’apporter des réponses toujours plus pertinentes, et évitent certaines répétitions dans les prompts.

Juste avant cela, je pense qu’il est intéressant de refaire un point rapide sur le RAG qui est aussi employé dans beaucoup d’architectures IA.

Qu’est-ce que le RAG ?

Depuis 2024, je me suis plongé dans ce concept qu’on appelle RAG (Retrieval-Augmented Generation). Grosso modo, c’est comme donner une paire de jumelles à votre LLM : il va chercher des infos actualisées, dans votre propre base de connaissances, avant de générer une réponse.

En pratique, vous envoyez une question, le modèle commence par interroger une base documentaire (vectorielle ou non), puis compile les extraits les plus pertinents pour enrichir sa réponse.

Résultat : une réponse plus fiable, plus contextualisée, et à jour.

Pour mettre cela en place sur votre Copilot, plusieurs chemins sont possibles :

Mais quand on parle de personnalisation dans Copilot, il faut bien distinguer deux concepts qui n’ont pas la même finalité : les Instructions personnalisées et la Mémoire Copilot. On les confond facilement, mais ce sont deux choses bien distinctes.

Qu’est-ce que les instructions personnalisées ?

Quelle que soit l’IA utilisée, ce schéma rappelle les grands principes pour un prompt réussi :

Avec Copilot, les attentes liées à la forme des réponses sont généralement constantes : c’est l’utilisateur qui définit à l’avance la manière dont Copilot doit se comporter.

Grâce aux instructions personnalisées, on peut donc gagner du temps en adaptant le ton et la forme des réponses de Copilot, de manière générale et permanente.

Par exemple :

  • Réponds toujours de manière concise et en français
  • Donne-moi systématiquement des exemples techniques liés à Azure
  • Réponds toujours comme Maître Yoda, dans Star Wars

Comment marchent les instructions personnalisées ?

Voici une comparaison simple, montrant l’impact des instructions personnalisées, quand celui-ci est configuré pour toujours répondre comme Maître Yoda dans Star Wars :

Sans configuration d’instructions personnalisées :

Avec configuration d’instructions personnalisées :

Les instructions personnalisées changent radicalement la façon dont Copilot formule ses réponses. La même question peut donc donner deux réponses très différentes – l’une orientée divertissement, l’autre orientée expertise professionnelle.

Qu’est-ce que la mémoire Copilot ?

Jusqu’ici, Copilot répondait aux questions, mais oubliait cette interaction dans le temps dès que l’on fermait la fenêtre ou que l’on passait à une nouvelle conversation.

Avec la mémoire en plus, Copilot peut maintenant retenir des informations clés sur vous et votre travail et les réutiliser automatiquement dans vos prochaines interactions.

Mais depuis quelque temps, Microsoft a ajouté une nouvelle brique que Microsoft a ajoutée à son écosystème Copilot. En clair, c’est la capacité de Copilot à se souvenir d’éléments importants sur nous ou notre travail, et à les réutiliser automatiquement dans nos futures interactions.

Avec la mémoire, c’est comme un carnet personnel que Copilot garde toujours sous le coude. Grâce à lui, Copilot sait déjà que l’on préfère les listes à puces et que l’on travailles sur ce projet Suisse. En combinant les deux, Copilot devient à la fois plus précis et plus personnel.

Comment marche la mémoire Copilot ?

Voici une comparaison simple, montrant l’impact de la fonction Copilot Memory, quand celui-ci est configuré pour toujours répondre comme Maître Yoda dans Star Wars :

Sans configuration de mémoire Copilot

Avec une configuration de mémoire Copilot :

Comment puis-je configurer la mémoire et les instructions personnalisées dans Copilot ?

L’utilisateur a le contrôle total : tu peux consulter, modifier ou supprimer ce que Copilot retient, et activer ou désactiver ces options à tout moment, tout cela depuis la page d’accueil de Copilot

L’accès aux instructions et à la mémoire Copilot est possible depuis les menus suivants :

Les deux menus sont bien distingués :

Copilot utilisera ces informations dans toutes tes prochaines conversations. Il est même possible de désactiver temporairement la prise en compte des instructions personnalisées :

Du côté de la mémoire Copilot, vous retrouvez ici les deux sections d’information :

  • Le profil professionnel est une source officielle d’informations issues de votre tenant Microsoft. Ce n’est pas un profil crée dans Copilot, mais plutôt un contexte auquel il a accès via Microsoft Graph, lié à votre identité professionnelle (par exemple via Entra ID).
  • La mémoire Copilot est construite au fil des échanges pour enrichir le contexte et personnaliser les réponses :

Un bouton pour couper la mémoire à tout moment : Copilot redevient alors sans mémoire persistante :

Chaque entrée dans la mémoire Copilot doit se faire depuis la fenêtre de prompt :

Une liste de la mémoire Copilot est aussi disponible via un prompt :

La mémoire Copilot peut être ajustée : il est possible de l’éditer, de la supprimer ou même de demander à Copilot d’ignorer ce point à l’avenir :

Et voici le résultat d’un prompt après le changement de mémoire :

En plus des instructions globales de Copilot, il est aussi possible de configurer des instructions de rédaction spécifiques dans Outlook.

Lors de chaque demande à Copilot, ce dernier aidera à rédiger un mail (réponse, brouillon, résumé) en respectant ces consignes pour rester cohérent.

En résumé, ces différents paramétrages d’instructions suivent l’approche suivante :

AspectInstructions personnalisées (Copilot)Instructions de rédaction (Outlook)
PortéeGlobales – s’appliquent à toutes les apps où Copilot est présent (Word, Excel, Teams, Edge…).Spécifiques à Outlook et uniquement pour la rédaction d’e-mails.
ContenuQui vous êtes (rôle, secteur, contexte) et comment Copilot doit répondre (style, niveau de détail).Ton de rédaction (formel/informel), longueur (bref/détaillé), style de communication pour les mails.
ObjectifPersonnaliser le comportement général de Copilot dans toutes vos conversations.Harmoniser le style des e-mails générés ou suggérés par Copilot.
ConfigurationVia les paramètres Copilot (⚙️) > Instructions personnalisées.Via Outlook > Copilot > ⚙️ > Instructions de rédaction.
Exemple d’impactCopilot ajoute des exemples Azure dans ses réponses techniques.Copilot propose un mail concis et poli, adapté à une réponse client.

Conclusion

En conclusion, donner de la mémoire et des règles claires à Copilot, c’est comme passer d’un stagiaire à un collaborateur expérimenté : il comprend ton style, ton métier et peut t’aider plus vite et plus efficacement.

Les instructions personnalisées permettent de fixer le ton et la forme des réponses, une bonne fois pour toutes, tandis que la mémoire Copilot apprend et s’adapte au fil du temps, en intégrant ton contexte métier et tes préférences.

Pour tirer le meilleur parti de cette personnalisation, je vous conseille de :

  • Configurer des instructions personnalisées dès maintenant, avec un style adapté à votre usage (technique, concis, fun…).
  • Activer la mémoire Copilot et de l’ajuster au fil de l’eau pour qu’elle reflète au mieux le contexte.

Testez la fonction COPILOT() dans Excel

Excel a longtemps souffert d’un retard dans l’avancement du développement de Copilot au sein de la suite d’outils Microsoft 365 Copilot, surtout si on le compare à Word et PowerPoint. Pourquoi cela ? Car les tableaux Excel ne sont pas des phrases ou des textes comme aime avoir les LLMs. Ce qui a rendu l’intégration de Copilot plus complexe que celle dans Word (texte linéaire) ou PowerPoint (contenu visuel structuré).

Qui est en charge du développement de Copilot dans Excel, Word, PowerPoint, … ?

Microsoft a mis en place une équipe centrale dédiée à Copilot, appelée Microsoft 365 Copilot Product Group, qui pilote la vision, les modèles d’IA, et les interfaces transversales.

Cette équipe travaille en étroite collaboration avec les équipes produit de chaque application Office, qui adaptent Copilot à leurs spécificités fonctionnelles. sein de Microsoft 365 Apps. Par exemple, l’équipe Excel se concentre sur l’interprétation des tableaux et des formules, tandis que l’équipe PowerPoint travaille sur la génération de slides et de visuels.

L’intégration de Microsoft 365 Copilot dans Excel est donc dépendante de la division Excel au

Pourquoi ce retard de Copilot sur Excel ?

Les modèles de langage (LLMs) comme GPT sont conçus pour comprendre et générer du texte linéaire. Word et PowerPoint s’appuient sur des blocs de texte ou des structures visuelles faciles à interpréter. En revanche, Excel manipule :

  • Des tableaux
  • Des formules
  • Des relations entre cellules
  • Des modèles financiers ou statistiques

Cette complexité a rendu l’intégration de Copilot plus délicate, nécessitant des avancées spécifiques en compréhension tabulaire et en raisonnement mathématique.

Ce n’est que récemment que Microsoft a commencé à combler ce retard, en introduisant des fonctionnalités plus avancées dans Excel, comme les assistants contextuels via un clic droit, ou tout récemment la fameuse fonction COPILOT() que nous verrons plus loin dans cet article.

Que peut-on faire déjà avec Microsoft 365 Copilot dans Excel ?

Depuis plusieurs mois déjà, Copilot permet d’interroger les données en langage naturel, de générer des formules, de créer des graphiques, et même de détecter des tendances ou des anomalies. 

De nombreuses vidéos détaillant différents exemples fleurissent déjà et depuis un peu plus d’un an sur Internet :

Ou encore :

Petit Copilot vs Grand Copilot ?

Dans Excel, comme dans la majorité des outils Microsoft 365, Copilot se manifeste sous plusieurs formes complémentaires qui répondent à des usages distincts :

  • Le premier, situé dans le bandeau en haut de l’interface, agit comme un assistant global. Il permet de poser des questions en langage naturel sur l’ensemble du fichier, d’analyser des tendances, de générer des formules ou des graphiques, et d’interagir avec les données de manière transversale.
  • Le second Copilot, accessible via le clic droit sur une cellule ou une sélection, est plus contextuel. Il propose des actions ciblées comme expliquer une formule, reformater une plage de données, ou suggérer des opérations spécifiques sur les valeurs sélectionnées.

Passons maintenant à quelques exemples de prompts simples sur une feuille Excel contenant des données fictives.

Que peut-on prompter avec le Copilot d’Excel ?

A peu près ce que l’on veut ! Mais rien ne dit que Copilot va satisfaire toutes vos demandes…

  • Analyse de données
    • Quels sont les produits les plus vendus ce trimestre ?
    • Y a-t-il des anomalies dans les ventes mensuelles ?
    • Fais-moi un résumé des performances par région
  • Création de visualisations
    • Crée un graphique comparant les ventes de janvier à mars
    • Montre l’évolution des coûts fixes sur les 12 derniers mois
    • Génère un tableau croisé dynamique des ventes par catégorie
  • Formules et calculs
    • Écris une formule pour calculer la marge bénéficiaire
      • Explique cette formule : =SI(ET(A2>100;B2<50);\OK\;\NOK)
      • Calcule la moyenne des ventes par trimestre

Voici d’ailleurs quelques exemples de petits prompts réalisés sur une feuille Excel fictive afin de vous donner quelques idées.

  • Changez le format des nombres de la colonne F en format monétaire (€)
  • Ajoutez une colonne « Date de Fin » qui calcule automatiquement la date de fin en fonction de la colonne B sur laquelle on ajoute 15 mois
  • Supprimez la colonne K du tableau
  • Créez une nouvelle colonne appelée « Marge Directe » et calcule-lui une marge de 5% sur la colonne G.
  • Appliquez une mise en forme conditionnelle à la colonne « Marge Directe » pour afficher en rouge les valeurs entre 0 et 20 et en orange les valeurs entre 21 et 49
  • Triez la colonne de marge en ordre décroissant
  • Ajoutez une colonne avec une fonction RECHERCHEV pour récupérer la région depuis l’onglet Beta
  • Filtrez la colonne « Statut Vente » pour afficher uniquement les Echoué et En attente
  • Appliquez une mise en forme conditionnelle pour mettre en gras les clients dont le nom contient le chiffre 1
  • Cachez toutes les lignes dont le code postal est un nombre impair
  • Générez un graphique pertinent sur les tendances via l’outil Analyse de données
  • Créez un tableau croisé dynamique avec en colonne « Ville » et en ligne les « Produit » en filtrant sur les lignes dont la vente est sur le mois d’octobre pour afficher le total des ventes

Intéressons-nous maintenant aux dernières avancées proposées par Microsoft, dont la toute nouvelle fonction COPILOT().

Qu’est-ce que la fonction COPILOT() ?

La fonction COPILOT() fonctionne comme une formule Excel classique. Elle permet d’envoyer un prompt en langage naturel à Copilot, tout en lui fournissant des données contextuelles depuis la feuille Excel. Elle retourne en résultat une réponse générée par l’IA, sans passer par des macros ou scripts externe.

Voici la syntaxe à adopter :

=COPILOT(prompt, [contexte1], [contexte2], ...)

Voici un exemple de cette syntaxe :

=COPILOT("Classifie ces commentaires par sentiment",A2:A20)

Deux remarques intéressantes :

  • Il est actuellement possible de la combiner avec d’autres fonctions Excel (IF, SWITCH, LAMBDA, etc.)
  • Actualisation automatique : Le résultat se met à jour si les données référencées changent, comme une formule classique d’Excel.

Comment avoir la commande COPILOT() ?

Certaines limitations sont actuellement en place sur la fonction COPILOT(), encore en préversion :

  • Elle est disponible uniquement pour les clients commerciaux avec une licence Microsoft 365 Copilot
  • Elle ne fonctionne donc pas avec les abonnements Personnel ou Famille
  • Elle est limitée à 100 appels toutes les 10 minutes
  • Elle ne peut pas accéder à des données externes (web, autres fichiers)

Comment peut-on activer la fonction COPILOT() ?

A l’heure où ces lignes sont écrites, j’ai pu tester la fonction COPILOT() sur l’application Desktop d’Excel, simplement en changeant le canal de mise à jour de mes applications Microsoft 365.

Pour connaître le canal de mise à jour actuellement en place sur votre poste, ouvrez Excel, puis cliquez sur le menu suivant :

L’information du canal de mise à jour de vos applications Microsoft 365 doit s’afficher ici :

Pour basculer sur le canal de mise à jour Beta, ouvrez le Terminal Windows en mode administrateur :

Exécutez la commande suivante afin de forcer Office à passer sur le canal de mise à jour Beta, aussi appelé Insider Fast. C’est le canal le plus avancé, destiné aux tests des fonctionnalités expérimentales avant leur déploiement public :

reg add HKLM\Software\Policies\Microsoft\office\16.0\common\officeupdate /v updatebranch /t REG_SZ /d BetaChannel

Rouvrez l’application Excel sur votre poste, puis cliquez sur le menu suivant :

Constatez l’absence de changement de votre canal de mise à jour :

Lancez une mise à jour immédiate de vos applications Microsoft 365 :

La fenêtre suivante doit alors apparaître, et vous indique que de nouvelles mises à jour sont en cours d’installation :

Attendez quelques minutes, puis fermez cette fenêtre une fois les mises à jour terminées :

Retournez sur votre application Excel afin de constater un changement du canal de mise à jour :

Enfin la commande ci-dessous permet de forcer Excel (et les autres applications Office) à réutiliser le canal de mise à jour Current Channel :

reg add HKLM\Software\Policies\Microsoft\office\16.0\common\officeupdate /v updatebranch /t REG_SZ /d CurrentChannel

Que peut-on en faire actuellement ?

J’ai pris l’exemple classique d’une liste de codes postaux pour laquelle je souhaite retrouver le nom de la ville. J’utilise donc le prompt suivant :

=COPILOT("retrouve la ville en se basant sur le code postal français", A2)

Le système marche bien, mais montre rapidement une limite :

Je décide donc de tester la commande COPILOT() afin d’harmoniser mes valeurs :

=COPILOT("si valeur fait seulement 4 chiffres de long, rajoute un zéro devant, sinon laisse la valeur ", A2)

Cela semble très prometteur :

Enfin, je combine le tout pour retrouver le nom des villes quelle que soit la longueur du code postal :

=COPILOT("retrouve la ville en se basant sur le code postal francais", COPILOT("si valeur fait seulement 4 chiffres de long, rajoute un zéro devant, sinon laisse la valeur ",A2))

Malheureusement, plusieurs limites de la fonction COPILOT(), toujours en préversion, finissent par être atteintes :

  • Copilot effectue plusieurs erreurs sur le traitement de la donnée
  • Copilot a exécuté trop de requêtes, et me demande d’attendre pour continuer :

Mais, dans d’autres cas de création de contenu, les choses se passent un peu mieux :

Toujours envie de voir d’autres tests ?

J’ai trouvé cette excellente vidéo, réalisée par Elliott Pierret et disponible sur sa chaîne, qui nous montre justement, au moyen de petits exemples, comment bien comprendre le mécanisme de COPILOT(), mais aussi de pouvoir combiner toujours plus de prompts !

Conclusion

Avec la fonction =COPILOT(), Excel franchit enfin une étape décisive dans l’intégration de l’IA au cœur des feuilles de calcul. Là où auparavant Copilot n’était qu’un assistant “au-dessus” d’Excel, il devient désormais une fonction native, au même titre que RECHERCHEV ou SOMME.

Si vous travaillez déjà avec Microsoft 365 Copilot et que vous êtes prêts à basculer sur le canal Beta, je vous encourage à tester =COPILOT() dès maintenant. Vous verrez par vous-même comment il change la manière d’analyser et d’exploiter vos données.

Et comme toujours, n’hésitez pas à partager vos propres retours, astuces et scénarios d’usage dans les commentaires !

Accès sortant par défaut : Microsoft ferme le robinet en septembre 2025

Depuis toujours, Azure offrait une “porte de sortie cachée” vers Internet à toutes les machines virtuelles déployées dans un réseau virtuel sans configuration explicite : le fameux Accès sortant par défaut (Default Outbound Access). En clair, si vous créiez une VM sans NAT Gateway, sans Équilibreur de charge, sans IP publique attachée… eh bien Azure vous donnait quand même un accès internet de secours via une IP publique éphémère. Mais tout cela change bientôt !

À partir du 30 septembre 2025, cette facilité disparaît pour tous les nouveaux réseaux virtuels. Les workloads qui comptaient dessus devront désormais passer par des méthodes explicites de sortie (NAT Gateway, Load Balancer SNAT, ou IP publique directe).

Pas d’inquiétude donc pour vos environnements déjà en place ! Ce changement ne concerne pas les réseaux virtuels déjà déployés avant cette date. Mais une modernisation de ces derniers est à envisager afin de les harmoniser avec les nouveaux réseaux virtuels dépourvus de l’Accès sortant par défaut.

Qu’est-ce que l’Accès sortant par défaut ?

L’Accès sortant par défaut est une connectivité internet implicite que Microsoft Azure attribuait automatiquement aux machines virtuelles créées dans un réseau virtuel sans configuration explicite de sortie.

Dans Azure, lorsqu’une machine virtuelle (VM) est déployée dans un réseau virtuel sans méthode de connectivité sortante explicitement définie, une adresse IP publique sortante lui est automatiquement attribuée.

Cette adresse IP permet la connectivité sortante depuis les ressources vers Internet et vers d’autres points de terminaison publics au sein de Microsoft. Cet accès est appelé « accès sortant par défaut ».

Microsoft Learn

Comment et quand l’accès sortant par défaut était-il utilisé ?

Microsoft décrit ici l’ordre de résolution de la connectivité sortante d’une VM dans Azure par plusieurs tests chaque par ordre de priorité :

  • Firewall
    • NAT Gateway
      • IP publique
        • Équilibreur de charge
          • Accès sortant par défaut

L’accès sortant par défaut n’est donc qu’un dernier recours. Et après la fin septembre 2025, il disparaîtra pour les nouveaux réseaux virtuels, seules les méthodes explicites resteront.

Pourquoi Microsoft le retire ?

Microsoft met fin à ce mécanisme pour trois raisons principales :

  • La première est la sécurité : cette IP “fantôme” ne figurait souvent dans aucun inventaire, ce qui compliquait la gestion et exposait à des risques.
  • La deuxième est la stabilité : ces adresses publiques pouvaient changer sans prévenir, cassant certaines intégrations critiques avec des services externes.
  • Enfin, la troisième est la conformité : dans un contexte d’audit, il était difficile de tracer les flux sortants d’une VM utilisant ce mode implicite. L’objectif est donc de forcer les clients à adopter des méthodes explicites et maîtrisées de connectivité.

Voici un exemple concret avec un Accès sortant par défaut :

Vous déployez une VM, elle se met à parler à internet avec une IP que vous ne connaissiez pas, qui peut changer sans prévenir, et qui n’apparaît pas dans vos inventaires de sécurité. C’était cela l’Accès sortant par défaut.

Dès la fin septembre, Microsoft dit stop à cette approche :

En supprimant cette facilité, Microsoft pousse à adopter des designs réseau clairs, contrôlables et audités. Malgré la contrainte en tant que telle, cela reste une excellente nouvelle pour la gouvernance cloud.

Qui est impacté ?

Tout le monde. Mais seuls les nouveaux réseaux virtuels créés après le 30 septembre 2025 seront concernés :

Après le 30 septembre 2025, les nouveaux réseaux virtuels exigeront par défaut des méthodes de connectivité sortante explicites au lieu d’avoir un repli vers la connectivité d’accès sortant par défaut.

Azure Updates

Les réseaux existants continueront de fonctionner comme avant, mais Microsoft recommande déjà à tous les clients de migrer afin d’éviter les discordances entre les anciens et nouveaux réseaux virtuels :

Toutes les machines virtuelles (existantes ou nouvellement créées) dans les réseaux virtuels existants qui utilisent l’accès sortant par défaut continueront de fonctionner après cette modification. Cependant, nous vous recommandons vivement de passer à une méthode sortante explicite.

Azure Updates

Même confirmation sur le site Learn de Microsoft :

Aucune modification n’est apportée aux réseaux virtuels existants. Cela signifie que les machines virtuelles existantes et les machines virtuelles nouvellement créées dans ces réseaux virtuels continuent de générer des adresses IP sortantes par défaut, à moins que les sous-réseaux ne soient modifiés manuellement pour devenir privés.

Microsoft Learn

Quelles sont les alternatives recommandées ?

Afin de maintenir un accès internet à vos machines virtuelles, plusieurs services sont proposés par Microsoft selon vos besoins :

  • La solution de référence est le NAT Gateway, qui offre une connectivité sortante hautement disponible, scalable et simple à gérer.
  • Dans certains cas, on pourra également utiliser un Équilibreur de charge configuré avec des règles SNAT.
  • Pour des scénarios plus ponctuels, il reste possible d’associer une IP publique directement à une VM, même si cela n’est pas conseillé pour des environnements critiques.
  • Enfin, dans les architectures plus sécurisées, le trafic sortant peut être centralisé à travers un Azure Firewall, un proxy ou une appliance réseau virtuelle (NVA).

Comment préparer ma migration ?

La première étape est d’inventorier vos workloads et d’identifier ceux qui reposent encore sur ce mode implicite d’Accès sortant par défaut.

Ce script PowerShell parcourt toutes les souscriptions Azure et dresse, pour chaque réseau virtuels et sous-réseaux, l’état de l’option Accès sortant par défaut :

$results = New-Object System.Collections.Generic.List[object]
$subs = Get-AzSubscription -ErrorAction Stop

foreach ($sub in $subs) {
    Set-AzContext -SubscriptionId $sub.Id -Tenant $sub.TenantId | Out-Null
    $vnets = Get-AzVirtualNetwork -ErrorAction SilentlyContinue

    foreach ($vnet in $vnets) {
        foreach ($subnet in $vnet.Subnets) {
            $hasProp = $subnet.PSObject.Properties.Name -contains 'DefaultOutboundAccess'
            $raw = if ($hasProp) { $subnet.DefaultOutboundAccess } else { $null }

            $status = if ($raw -eq $false) { 'Disabled' } else { 'Enabled' }

            $results.Add([PSCustomObject]@{
                SubscriptionName = $sub.Name
                SubscriptionId   = $sub.Id
                ResourceGroup    = $vnet.ResourceGroupName
                VNet             = $vnet.Name
                Region           = $vnet.Location
                Subnet           = $subnet.Name
                DefaultOutbound  = $status
            }) | Out-Null
        }
    }
}

$results |
    Sort-Object SubscriptionName, ResourceGroup, VNet, Subnet |
    Format-Table -AutoSize

Ensuite, choisissez une stratégie adaptée :

  • Associez une passerelle NAT
  • Associez un équilibreur de charge
  • Associez une adresse IP publique
  • Ajoutez un pare-feu

Puis, testez ensuite vos flux réseau, notamment tout ce qui dépend de l’accès à Internet : mise à jour, activation Windows, appels API externes, DNS.

Quelles sont les limitations des subnets privés ?

Dans un sous-réseau privé entièrement fermé à Internet, certaines contraintes importantes impactent la bonne marche des machines virtuelles.

Plusieurs fonctionnalités essentielles demandent de mettre en place obligatoirement une méthode explicite de connectivité sortante.

  • Impossibilité d’utiliser les services Microsoft 365
  • Impossibilité d’activer le système d’exploitation
  • Impossibilité de mettre à jour le système d’exploitation via Windows Update
  • Impossibilité d’associer une machine virtuelle à Azure Virtual Desktop
  • Les routes configurées avec un next hop de type Internet deviennent inopérantes

Note : Les sous-réseaux privés ne s’appliquent pas non plus aux sous-réseaux délégués ou gérés utilisés par des services PaaS. Dans ces scénarios, c’est le service lui-même (par exemple Azure SQL, App Service, etc.) qui gère sa propre connectivité sortante.

Puis-je déjà désactiver l’Accès sortant par défaut avant septembre 2025 ?

Oui, il est déjà possible de désactiver ce mécanisme dans vos réseaux virtuels pour anticiper la transition.

Cela permet de vérifier vos workloads dans des conditions proches de ce qui deviendra la norme à partir de septembre 2025 et d’éviter les mauvaises surprises le jour où le support sera officiellement retiré.

Important : Il est nécessaire d’arrêter/désallouer les machines virtuelles concernées dans un sous-réseau pour que les modifications de l’Accès sortant par défaut soient prises en compte.

Une fois ces choses dites, je vous propose de tester cela depuis un environnement de démonstration afin de voir ce qu’il est actuellement possible de faire ou de ne pas faire de nôtre côté :

Maintenant, il ne nous reste plus qu’à tester tout cela 😎

Etape 0 – Rappel des prérequis :

Pour réaliser cet exercice, il vous faudra disposer de :

  • Un abonnement Azure valide
  • Un tenant Microsoft

Commençons par tester la connectivité à internet depuis un réseau Azure créé avant septembre 2025.

Test I – Connexion internet depuis un sous-réseau non privé :

Dans un réseau virtuel Azure déjà créé, j’ai commencé par créer un premier sous-réseau non privé :

J’ai crée une machine virtuelle sans adresse IP publique associée :

Une fois la VM démarrée, la machine obtient quand même un accès Internet sortant :

Et OneDrive se configure sans problème :

Tout fonctionne comme cela à toujours fonctionné. Passons maintenant à un test reposant sur un sous-réseau virtuel cette fois privé.

Test II – Connexion internet depuis un sous-réseau privé :

Sur ce même réseau virtuel, j’ai crée un second sous-réseau, avec l’option Private subnet cochée :

Une fois connecté à la machine virtuelle, dans les paramétrages Windows, l’état du réseau indique qu’il n’y a plus d’accès Internet :

Impossible d’ouvrir des sites web depuis le navigateur internet :

Windows Update échoue également à télécharger les mises à jour :

L’activation Windows ne se fait pas non plus :

Et cette fois, OneDrive refuse de se configurer :

Et pourtant, j’accède sans problème à un compte de stockage via son URL publique :

Tout montre que l’accès extérieur à Azure, y compris Microsoft 365, est bloqué dans ce sous-réseau privé.

Sur ce second sous-réseau, je décoche l’option précédemment activée, puis je sauvegarde :

Malgré cela, la machine n’a toujours pas retrouvé Internet :

Je tente même un redémarrage de la machine virtuelle depuis le portail Azure :

Mais après ce redémarrage, rien ne change côté accès Internet :

Après un arrêt complet puis un redémarrage manuel, la sortie vers Internet revient :

Cette fois, la VM a bien une IP publique éphémère pour sortir sur Internet :

Ce test nous montre l’impact de cette option sur les ressources externes accessibles à notre machine virtuelle. Continuons avec un test sur le comportement d’Azure Virtual Desktop dont les VMs seraient sur ce type de sous-réseau privé.

Test III – Connexion Azure Virtual Desktop depuis un sous-réseau privé :

Je dispose d’un environnement Azure Virtual Desktop contenant déjà plusieurs machines virtuelles dans le pool d’hôtes :

J’ai donc modifié le sous-réseau AVD pour qu’il soit privé :

J’ai ajouté une nouvelle machine virtuelle via le plan de mise à l’échelle AVD :

La création de la VM se déroule normalement et celle-ci apparaît :

Mais, elle n’a jamais rejoint automatiquement mon Active Directory :

Et elle n’a pas non plus intégré le pool d’hôtes AVD :

Enfin, au bout d’un certain temps, elle s’est même auto-supprimée :

Ce test nous montre qu’un environnement Azure Virtual Desktop déployé après septembre 2025 nécessitera des ressources supplémentaires pour fonctionner correctement.

Continuons nos tests en appliquant les méthodes proposées par Microsoft pour compenser le changement à venir.

Test IV – Connexion internet avec une adresse IP publique :

Je recoche l’option Private subnet sur mon 2ᵉ sous-réseau :

J’y crée une machine virtuelle, cette fois disposant d’une adresse IP publique associée :

La VM a bien accès à Internet, et l’IP vue depuis l’extérieur correspond à l’IP publique de la machine virtuelle :

Voici le coût de cette IP publique dans le Azure Pricing Calculator :

Il s’agit de la solution la plus économique pour retrouver un accès internet. Mais la question va se poser si un grand nombre de machines virtuelles existent. Si l’ajout d’une adresse IP publique sur une machine virtuelle n’est pas sans conséquence sur la sécurité.

Continuons avec le service Azure NAT Gateway.

Test V – Connexion internet avec Azure NAT Gateway :

Je crée un 3ᵉ sous-réseau privé, dédié cette fois à un test avec NAT Gateway :

Je déploie un service NAT Gateway et je lui assigne une IP publique :

Le nouveau sous-réseau privé est bien associé au service NAT Gateway :

Je crée une VM dans ce 3ᵉ sous-réseau :

Les tests montrent que la VM utilise bien l’adresse IP publique du NAT Gateway pour sortir sur Internet :

Je reproduis ensuite ce même test sur le sous-réseau dédié à Azure Virtual Desktop :

Je lance la création d’une 4ᵉ VM AVD :

Cette fois, la VM rejoint correctement mon Active Directory :

Elle est aussi intégrée automatiquement au host pool d’AVD, et devient accessible :

Voici le coût estimé par Azure Pricing Calculator pour un service NAT Gateway et son IP publique :

L’Azure NAT Gateway est un service géré qui permet aux machines virtuelles dans un sous-réseau privé de sortir sur Internet de manière sécurisée, performante et scalable.

Continuons avec le service Azure Firewall.

Test VI – Connexion internet avec Azure Firewall :

Je crée un 4ᵉ sous-réseau privé dédié cette fois à un test avec Azure Firewall :

Je crée aussi le sous-réseau spécifique réservé au service Azure Firewall :

Je déploie un Azure Firewall en SKU Basique pour ce test :

Deux adresses IP publiques sont automatiquement créées pour le Firewall :

Je configure une Firewall Policy avec plusieurs règles et adresses IPs cibles :

Je crée une nouvelle machine virtuelle sur ce nouveau sous-réseau privé :

Enfin je crée une table de routage associée à mon sous-réseau virtuel de test, dont le prochain saut envoie tout le trafic sortant vers l’adresse IP privée de mon Firewall Azure :

Les tests montrent que la sortie Internet se fait bien via l’IP publique de l’Azure Firewall :

Voici le coût estimé par Azure Pricing Calculator pour un service Azure Firewall et ses deux adresses IP publiques :

L’Azure Firewall a un rôle différent d’un NAT Gateway : ce n’est pas juste de la connectivité sortante, c’est une véritable appliance de sécurité managée par Microsoft. Mais d’autres appliances tierces auraient elles-aussi pu faire l’affaire.

Terminons avec un Équilibreur de charge Azure.

Test VII – Connexion internet avec Azure Load Balancer :

Je crée un 5ᵉ sous-réseau privé, cette fois pour tester Azure Load Balancer :

Je crée une nouvelle VM dans ce nouveau sous-réseau privé :

Je déploie un Équilibreur de charge et lui associe une IP publique :

La VM est ajoutée au backend pool :

Je configure une règle SNAT de sortie sur l’Équilibreur de charge :

En me connectant à la VM, je constate que la sortie Internet se fait bien via l’IP publique de l’Équilibreur de charge :

Voici le coût estimé par Azure Pricing Calculator pour un Équilibreur de charge et son adresse IP publique :

Ce service permet aux VM backend de sortir vers Internet sans IP publique dédiée, mais il est limité pour les gros volumes de connexions (NAT Gateway est plus adapté).

Conclusion

La fin de l’Accès sortant par défaut marque une étape clé dans la maturité du cloud Azure. Fini les “raccourcis” implicites : désormais, chaque sortie vers Internet devra être pensée, tracée et gouvernée.

Ce changement n’est pas une contrainte, mais une opportunité :

  • Opportunité de renforcer la sécurité en éliminant des flux fantômes.
  • Opportunité d’améliorer la stabilité et la prévisibilité des intégrations.
  • Opportunité de consolider vos architectures autour de designs réseau clairs, basés sur NAT Gateway, Azure Firewall ou un Équilibreur de charge.

Déployez un serveur MCP dans Azure

Le Model Context Protocol (MCP) ouvre la voie à une nouvelle façon de faire dialoguer les modèles d’IA et leurs outils. Que ce soit pour tester un environnement local ou déployer une architecture prête à l’emploi dans Azure, MCP apporte une approche standardisée, simple à expérimenter mais suffisamment flexible pour être adaptée à des besoins complexes.

Dans cet article, je vous propose un tutoriel pas à pas pour mettre en place un serveur MCP, le tester avec MCP Inspector, puis le déployer dans Azure afin d’explorer tout son potentiel.

Qu’est-ce que MCP ?

Mon premier article est un bon point de départ pour vous informer sur le sujet :

Le protocole MCP (Model Context Protocol) est un protocole qui permet à différents modèles et outils d’IA de communiquer entre eux. Il fournit un moyen standardisé pour les modèles de partager des informations et de collaborer sur des tâches. Le serveur MCP sert de pont entre différents modèles et outils, leur permettant de fonctionner ensemble de manière transparente.

GitHub

Je peux également vous conseiller de voir cette vidéo, mais également de consulter la page officielle du protocole MCP :

Vous trouverez ci-dessous le schéma d’architecture d’une configuration type de serveur MCP :

Enfin cette page rassemble une collection d’implémentations de serveurs MCP, qu’il s’agisse de versions officielles (références) ou proposées par la communauté. Elle sert de bibliothèque centrale pour explorer et découvrir des exemples de serveurs MCP capables de fournir aux modèles d’IA un accès contrôlé à des outils ou sources de données.

Qu’est-ce que MCP Inspector ?

MCP Inspector est un outil graphique fourni par l’équipe du Model Context Protocol qui sert à tester, déboguer et explorer un serveur MCP.

Il permet notamment de :

  • Se connecter à un serveur MCP local ou distant
  • Lister les outils (tools) que le serveur met à disposition.
  • Tester ces outils en leur envoyant des requêtes et en visualisant les réponses.
  • Explorer d’autres ressources exposées par le serveur, comme les prompts ou les files.
  • Vérifier en temps réel le statut de connexion et les échanges de données.

En résumé, c’est l’équivalent d’une console d’administration interactive qui te permet de voir comment ton serveur MCP réagit et d’expérimenter ses fonctionnalités sans devoir écrire du code côté client.

Envie de tester le déploiement d’un serveur MCP sur Azure ?

Cette page explique comment tester un serveur MCP en local ou hébergé sur Azure à l’aide de clients MCP sur desktop, comme Visual Studio Code ou MCP Inspector :

Ce guide constitue donc un point de départ idéal pour expérimenter la connexion et l’interaction avec un serveur MCP.

Afin de rendre la démonstration plus complète, j’y ai effectué quelques modifications, et j’ai publié le tout sur mon GitHub :

L’exercice consiste à configurer un serveur MCP, d’abord en local puis sur Azure, afin de comprendre son fonctionnement et tester ses outils :

  • Vous expérimentez ensuite les actions soit directement via ces outils, soit au travers de prompts, en observant le code généré à chaque étape.
  • La seconde partie de l’exercice consiste à déployer sur Azure Container Apps pour valider le bon fonctionnement du serveur MCP hébergé.

Maintenant, il ne nous reste plus qu’à tester tout cela 😎

Etape 0 – Rappel des prérequis :

Pour réaliser cet exercice, il vous faudra disposer de :

  • Un abonnement Azure valide
  • Un tenant Microsoft
  • Un modèle c’IA déployé sur Azure OpenAI

Commençons par tester la solution en local.

Etape I – Déploiement du serveur MCP en local :

Avant cela, rendez-vous sur la page Azure OpenAI, puis copiez une des clés d’API :

Copiez également le point de terminaison depuis cette même page :

Accédez au portail Azure AI Foundry, créez un modèle, puis copiez son nom :

Sur votre poste, ouvrez une fenêtre Terminal :

Lancez la commande suivante pour vérifier si Git est installé :

git --version

Si Git n’est pas encore installé, exécutez la commande suivante pour le faire :

winget install --id Git.Git -e --source winget

Attendez la fin de l’installation de Git :

Vérifiez que l’installation de Git s’est bien effectuée :

Lancez la commande suivante pour récupérer le package au format Git depuis mon dépôt GitHub :

git clone https://github.com/jlou07/mcp-intelligent-server.git

Accédez au dossier du package téléchargé :

cd .\mcp-intelligent-server\

Ouvrez Visual Studio Code avec la commande suivante :

Code .

Dans Visual Studio Code, ouvrez le terminal intégré :

Exécutez la commande suivante pour installer NPM (gestionnaire de paquets Node.js) :

npm install

Attendez la fin de l’installation des différents packages NPM :

Lancez le script suivant pour générer un token sur le serveur MCP :

npm run generate-token

Vérifiez la création du fichier .env et copiez la valeur du token généré :

Ajoutez la ligne suivante pour renseigner le point de terminaison Azure OpenAI, puis sauvegardez :

# Azure OpenAI Configuration (optional but recommended for intelligent prompts)
AZURE_OPENAI_API_KEY=your-azure-openai-api-key-here
AZURE_OPENAI_ENDPOINT=https://your-resource-name.openai.azure.com
AZURE_OPENAI_MODEL=gpt-4o

Lancez localement le serveur MCP avec la commande NPM suivante :

npm run dev

Vérifiez la création de la base de données SQLite en mémoire, ainsi que le lancement réussi du serveur MCP :

Notre environnement en local est maintenant déployé. Nous allons maintenant utiliser MCP Inspector pour explorer les fonctionnalités du serveur MCP.

Etape II – Tests du serveur MCP local :

Ouvrez une seconde fenêtre de Terminal :

Lancez l’outil MCP Inspector avec la commande suivante :

npm run inspect

Récupérez l’URL du proxy MCP Inspector contenant son propre token d’accès :

Ouvrez cette URL dans un navigateur et vérifiez la présence du token MCP Inspector :

Copiez ensuite la valeur du token du serveur MCP et ajoutez-la dans le fichier .env :

Complétez les champs requis pour la connexion au serveur MCP local, puis cliquez ici pour vous connecter :

Vérifiez dans les logs l’authentification réussie du client vers le serveur MCP :

Dans MCP Inspector, vérifiez le statut Connected, puis cliquez sur l’onglet Tools :

Cliquez sur Lister les Tools pour afficher les outils déclarés :

Constatez l’apparition de la liste des outils disponibles :

Observez les opérations effectuées du côté du serveur MCP :

Utilisez l’outil List_ToDo, lancez-le et vérifiez le résultat obtenu :

Analysez les logs générés par le serveur MCP pour cette opération :

Utilisez l’outil Add _ToDo pour créer une nouvelle tâche, puis constatez l’opération :

Observez les logs correspondant à l’ajout de la nouvelle tâche dans la base SQLite :

Ajoutez plusieurs tâches supplémentaires :


Relancez List_ToDo :

Analysez les logs générés par le serveur MCP pour cette opération :

Utilisez Complete_ToDo pour marquer une tâche comme complétée :

Vérifiez les logs correspondant à cette mise à jour :

Relancez List_ToDo pour constater que la tâche est complétée :

Observez les logs correspondant à cette liste mise à jour :

Passez à l’onglet Prompts, puis cliquez ici pour lister les assistants IA disponibles :

Vérifiez les logs générés par cette action :

Cliquez sur ToDo Assistant, entrez un exemple de requête (ex. : lister les tâches), puis constatez la réponse générée :

Observez les logs correspondant à ce prompt :

Testez un prompt de suppression d’une tâche, puis exécutez-le :

Vérifiez les logs générés et l’action effectuée sur la base SQLite :

Relancez List_ToDo pour constater que la tâche a bien été supprimée :

Testez un prompt de mise à jour de toutes les tâches :

Constatez le résultat dans les logs :

Créez une nouvelle tâche via un prompt :

Observez les logs correspondant à l’ajout de cette nouvelle tâche :

La démonstration sur l’environnement local est terminée, passons maintenant au déploiement sur Azure.

Etape III – Déploiement du serveur MCP sur Azure :

Rendez-vous sur l’URL de téléchargement de Docker Desktop, puis téléchargez la version correspondant à votre OS :

Lancez l’exécutable compatible avec votre architecture :

Suivez l’installation :

Cochez les options proposées puis cliquez sur OK :

Attendez la fin de l’installation (de 5 à 10 minutes) :

Cliquez sur Fermer, puis redémarrez l’ordinateur :

Après le redémarrage, ouvrez Docker Desktop, puis laissez le téléchargement des composants additionnels se terminer :

Patientez si des mises à jour sont nécessaires, puis redémarrez si demandé :

Attendez le démarrage complet de Docker Engine :

Vous devez voir l’écran principal de Docker Desktop avec un tableau de bord vide de conteneurs :

Ouvrez Visual Studio Code, puis ouvrez un nouveau terminal :

Lancez la commande azd pour vérifier si Azure Developer CLI est installé :

azd version

Si Azure Developer CLI n’est pas installé, exécutez la commande pour l’installer :

winget install microsoft.azd

Attendez la fin de l’installation :

Fermez puis rouvrez Visual Studio Code et vérifiez que azd est bien installé :

Depuis le dossier du serveur MCP, lancez la commande azd up pour déployer l’infrastructure sur Azure :

Connectez-vous avec votre compte Azure :

Patientez pendant la préparation de l’image du conteneur :

Constatez la création locale des images Docker dans Docker Desktop :

Donnez un nom à votre application unique sur Azure :

Choisissez votre souscription Azure :

Saisissez les informations liées à Azure OpenAI :

Sélectionnez la région Azure :

Attendez la fin du déploiement des ressources Azure :

Sur le portail Azure, vérifiez la création complète des ressources :

Quelques minutes plus tard :

Attendez encore la fin du déploiement de l’image :

Constatez le déploiement terminé dans Visual Studio Code :

Retournez sur Azure et ouvrez la page de votre Azure Container App :

Copiez l’URL publique de votre application :

Dans la section Revisions and Replicas, vérifiez que le conteneur est démarré :

Dans Environment Variables, récupérez ou vérifiez la présence du token d’application :

Depuis Visual Studio Code, relancez MCP Inspector en local :

npm run inspect

Copiez l’URL avec le token de MCP Inspector :

Connectez MCP Inspector à votre Azure Container App avec l’URL et le token :

Effectuez à nouveau des opérations List_ToDo et créez de nouvelles tâches :

Testez différents prompts de listing et de complétion :

Testez également la partie prompting :

Vérifiez que la base temporaire SQLite est bien mise à jour :

Conclusion

Avec ce déploiement, vous disposez désormais d’un serveur MCP pleinement opérationnel, capable de dialoguer avec vos modèles d’IA et de gérer des outils de manière sécurisée, que ce soit en local ou dans le cloud Azure.

Et la suite ?

Si le sujet vous intéresse, je vous recommande vivement de consulter cette page, vous y trouverez d’autres serveurs MCP déjà mis à disposition, que vous pourrez tester pour découvrir leurs capacités, et dont la liste ne cesse de s’allonger.

Enfin, il peut également être intéressant d’explorer la création de serveurs MCP personnalisés dans l’environnement Microsoft 365, d’autant qu’une vidéo très pertinente sur le sujet est également disponible :

VPN Azure : Attention au 30/09/25 !

Peu importe le fournisseur de Cloud choisi, d’anciens services sont régulièrement dépréciés au profit de nouveaux. Ces transitions sont fréquentes et planifiées. Mais, malgré les messages d’information, il est de notre responsabilité de les suivre, de les estimer afin de les traiter. Encore faut-il en comprendre les conséquences pour mesurer leur impact sur les environnements existants.

Pour vous aider à anticiper les changements à venir sur les VPN Gateways Azure, voici un tableau synthétique des impacts, échéances et actions nécessaires liés aux différentes annonces de retrait et de migration des SKU provenant de source officielle Microsoft :

ÉvénementImpact clientCalendrier prévuActions requisesDocumentation / Annonces
Migration IP publique Basic SKU (hors Basic SKU Gateway)– Nouvelle tarification
– Jusqu’à 10 min d’interruption
– Pré-requis IP/subnet
– 4 août 2025 : outil en preview
– Mi-nov. 2025 : GA prévue
– Jusqu’à fin mars 2026 : migration possible
– Avril 2026 : retrait des IP Basic
– Vérifier IP/subnet
– Migrer vers IP Standard SKU si nécessaire
Migration IP Basic SKU
Retrait IP Basic SKU
Migration IP publique Basic SKU (pour Basic SKU Gateway)– Pas de changement d’IP
– Pas d’interruption
– Fin oct. 2025 : automatisation disponible
– Fin mars 2026 : retrait complet
– Mettre à jour scripts/ARM si IP Basic référencéeRetrait IP Basic SKU
Retrait des SKU VPN Gateway non-AZ– Migration vers SKU AZ
– Pas d’interruption
– Nouvelle tarification
– Janv. 2025 : nouvelle tarification
– Mai 2025 à sept. 2026 : migration
– Sept. 2026 : retrait complet
– Migrer vers IP publique Standard SKU si encore en BasicMigration SKU VPN Gateway
Retrait des SKU Standard / High Perf– Migration vers VpnGw1/VpnGw2 ou AZ
– Pas d’interruption
– Mai à mars 2026 : migration
– Mars 2026 : retrait complet
– Aucune action requiseRetrait SKU Standard/High Perf
Retrait des VPN Gateways classiques– Décommissionnement complet– Août 2024 : début du retrait
– Août 2025 : fin du service
– Migrer vers un gateway Azure Resource ManagerMigration VPN classique

Comment Microsoft informe des futurs services dépréciés ?

Microsoft communique les dépréciations, changements et nouvelles fonctionnalités Azure par plusieurs canaux officiels. Voici les principaux moyens de rester informé sur ce sujet :

Comment savoir si mes ressources Azure seront impactées ?

Azure fournit une méthode directe pour voir quelles ressources dans votre propre tenant seront affectées par une dépréciation :

Le classeur Service Retirement fournit une vue unique et centralisée des ressources sur les retraits de services. Il vous aide à évaluer l’impact, les options et à planifier la migration des services et fonctionnalités retirés. Le modèle de classeur est disponible dans la galerie Azure Advisor.

Microsoft Learn

J’aime beaucoup ce classeur, car il affiche une vue simple et rapide des ressources de votre environnement, comme le montre le tableau ci-dessus avec des ressourcées créées il y a une heure à peine.

Concernant les services concernant les VPN Azure, qu’est-ce que Microsoft dépréciera au 30 septembre prochain ?

Microsoft a annoncé la fin de vie de certains services de réseaux Azure au 30/09/2025 :

  • Anciens SKU Standard et High Performance pour les Azure VPN Gateway. Dès le 30 septembre 2025, ces modèles ne seront plus supportés. Il est donc fortement recommandé de migrer dès maintenant vers les SKU modernes VpnGw1 ou VpnGw2, qui offrent de meilleures performances, une haute disponibilité via les zones (AZ), et un meilleur rapport qualité/prix.
  • Les adresses IP publiques Basic SKU vont disparaître. Dès le 31 mars 2025, il ne sera plus possible d’en créer, et au 30 septembre 2025, toutes les IP Basic encore utilisées seront désactivées. Pensez à les remplacer par des IP Standard SKU, compatibles avec les architectures modernes (zones redondantes, SLA, sécurité).

Microsoft effectuera t-il des migrations automatiquement ?

Oui, mais seulement en partie :

Nous simplifions notre portefeuille de références SKU de passerelle VPN. En raison de l’absence de redondance, de disponibilité inférieure et de coûts potentiels plus élevés associés aux solutions de basculement, nous transférons toutes les références SKU prises en charge par la zone de non-disponibilité (AZ) vers les références SKU prises en charge par AZ.

  • À compter du 1er juin 2025 : la création de nouvelles passerelles VPN à l’aide de références SKU VpnGw1-5 (non-AZ) ne sera plus possible. Cette date a été mise à jour à partir de la date initialement annoncée le 1er janvier 2025
  • Période de migration : de septembre 2025 à septembre 2026, toutes les passerelles VPN existantes utilisant des références SKU VpnGw1-5 (non-AZ SKU) peuvent être migrées en toute transparence vers des références SKU VpnGw1-5 (AZ).

Cela concerne t-il aussi les VPN Standard et High Performance ?

Pas de panique si vous utilisez encore des SKU Standard ou High Performance pour vos VPN Gateway : aucune action immédiate n’est requise. En attendant, les services existants continuent de fonctionner normalement.

Une communication officielle, accompagnée d’une documentation détaillée, sera envoyée pour guider les administrateurs pas à pas dans cette transition :

Ne pouvant plus créer de passerelle VPN Standard ou High Performance, je ne pourrais pas partager avec vous mon retour d’expérience :

Et qu’en est-il du VPN Basic ?

Pendant plusieurs mois, je pensais que le VPN Basic allait disparaître. Mais j’étais dans l’erreur, et je ne pense pas être le seul :

Visiblement, Microsoft ne classe plus le VPN Basic comme un SKU Legacy :

Cette personne travaillant chez Microsoft donne du crédit à ce raisonnement :

Mais même certaines intelligences artificielles se trompent encore !

Microsoft met également fin au support du SKU VPN Basic, souvent utilisé dans les déploiements de test ou à faible coût. À partir du 30 septembre 2025, les passerelles VPN Basic ne fonctionneront plus du tout. Il est impératif de migrer vers un SKU plus récent, comme VpnGw1, pour garantir la continuité de service.

ChatGPT

En regardant au plus près la documentation Microsoft, voici la réponse à notre question :

Donc il n’y aura rien à faire pour les liaisons VPN Basic ?

Cela n’est pas tout à faire juste :

L’information de taille à prendre en compte concerne les adresses IP Basic. Celles-ci sont utilisées dans différents services Azure comme :

  • VPN Basic
  • VPN Standard
  • Machine virtuelle
  • Équilibreur de charge

Concernant le VPN Basic Azure, au travers d’une autre page de la documentation Microsoft, on y apprend que l’on va devoir gérer le processus de migration manuellement. Ce qui entraînera mécaniquement un downtime :

Et qu’en plus, l’adresse IP publique aura changé après cette migration manuelle :

Une fois ces choses dites, je vous propose de tester cela depuis un environnement de démonstration afin de voir ce qu’il est actuellement possible de faire ou de ne pas faire de nôtre côté :

Maintenant, il nous reste plus qu’à tester tout cela 😎

Etape 0 – Rappel des prérequis :

Pour réaliser cet exercice, il vous faudra disposer de :

  • Un abonnement Azure valide
  • Un tenant Microsoft
  • Un réseau virtuel Azure

Test I – Migration d’une IP publique basique statique :

J’ai souhaité commencé au plus simple en créant simplement une adresse IP publique basique et statique.

J’ai créé cette ressource Azure au moyen d’une seule commande CLI depuis Azure Cloud Shell :

az network public-ip create \
  --name myPublicIP0 \
  --resource-group vpn-rg \
  --sku Basic \
  --allocation-method static \
  --location uksouth

Une fois l’adresse IP publique créée, je suis allé sur la page de cette ressource, et j’ai constaté le message d’information suivant :

J’ai cliqué sur ce message d’information, puis j’ai confirmé mon choix de migration :

A peine une seconde plus tard, la notification Azure suivante est apparue :

De retour sur la page de la ressource, j’ai pu confirmer la réussite de la migration de mon IP vers le SKU Standard, ainsi que la conservation de mon adresse IP publique :

Cette migration du SKU basique vers le SKU standard est donc très simple et rapide et conserve la même adresse IP publique

Test II – Migration d’une IP publique basique statique attachée :

Continuons les tests, toujours avec une adresse IP publique basique et statique :

az network public-ip create \
  --name myPublicIP4 \
  --resource-group vpn-rg \
  --sku Basic \
  --allocation-method static \
  --location uksouth

Une fois l’adresse IP publique créée, je suis allé sur la page de cette ressource :

J’ai rattaché cette adresse IP publique à une machine virtuelle Azure :

Comme mon adresse IP publique est rattachée, la fonction de migration vers le SKU standard précédemment utilisé ne me permet plus de le faire :

Azure confirme cela dans la page de configuration :

Il est nécessaire de désassocier l’adresse IP de la carte réseau de la machine virtuelle :

Une fois l’adresse IP publique désassociée, j’ai recliqué sur le message d’information :

Mais j’ai cette fois confirmé mon choix :

De retour sur la page de la ressource, j’ai pu confirmer la réussite de la migration de mon IP vers le SKU Standard :

Par la suite, il m’a fallu résassocier l’adresse IP publique à la carte réseau :

A la carte réseau de la machine virtuelle :

De retour sur la page de la machine virtuelle, j’ai pu confirmer la réussite de la migration de mon IP publique vers le SKU Standard, ainsi que la conservation de l’adresse publique :

Ces deux premiers tests nous montre que lorsque l’adresse publique est basique et de type statique, alors la migration vers le SKU standard ne pose alors aucun souci.

Intéressons-nous maintenant aux adresses IP basiques dynamiques.

Test III – Migration d’une IP publique basique dynamique attachée :

Dans ce test, j’ai souhaité voir s’il était possible de migrer une IP basique rattachée à une passerelle VPN basique.

Microsoft a restreint la création de nouvelles passerelles VPN Basic ainsi que l’utilisation de nouvelles adresses IP publiques Basic SKU statiques, j’ai dû partir sur une adresse IP dynamique :

az network public-ip create \
  --name myPublicIP \
  --resource-group vpn-rg \
  --sku Basic \
  --allocation-method Dynamic \
  --location switzerlandnorth

Pour cela, j’ai donc commencé par ajouter un sous-réseau dédié à ma passerelle :

Et comme il n’est plus possible de créer une passerelle VPN depuis le portail Azure, j’ai créé la ressource depuis Azure Cloud Shell :

az network vnet-gateway create \
  --name myVpnGateway \
  --resource-group vpn-rg \
  --location switzerlandnorth \
  --public-ip-addresses myPublicIP \
  --vnet vnet-vpn \
  --gateway-type Vpn \
  --vpn-type RouteBased \
  --sku Basic \
  --no-wait

Voici le groupe de ressources avec tous les éléments nécessaires à ma connexion VPN :

Le SKU de ma passerelle VPN créée est bien basique :

Une connexion depuis cette passerelle VPN est bien active :

Le SKU de mon adresse IP publique est bien basique :

Là aussi, j’ai cliqué sur le message d’information suivant :

Comme mon adresse IP publique est rattachée, la fonction de migration ne me permet pas de le faire :

Il m’est donc nécessaire de commencer par désassocier l’adresse IP, mais cela est impossible pour une passerelle VPN :

Je commence donc par supprimer la connexion de ma passerelle VPN :

Je confirme mon choix en cliquant sur Oui :

Puis je supprime ma passerelle VPN :

La suppression de la passerelle VPN prend plusieurs minutes :

Une fois l’adresse IP publique désassociée, j’ai recliqué sur le message d’information :

Mon adresse IP publique n’est plus rattachée, mais la fonction de migration refuse toujours de le faire car l’adresse IP publique est dynamique et non statique :

Je n’ai d’autres choix que de supprimer l’adresse IP publique dynamique :

Et je confirme mon choix en cliquant sur Oui :

Je créé donc une seconde adresse IP publique depuis le portail Azure :

Mais cette fois, je la créé avec le SKU de type standard :

Voici le SKU et l’adresse IP publique une fois la ressource Azure créée :

Cette adresse IP est bien redondante entre plusieurs zones Azure :

Je continue en créant la passerelle VPN de type basique via la commande CLI suivante :

az network vnet-gateway create \
  --name myVpnGatewaygood \
  --resource-group vpn-rg \
  --location switzerlandnorth \
  --public-ip-addresses myPublicIPgood \
  --vnet vnet-vpn \
  --gateway-type Vpn \
  --vpn-type RouteBased \
  --sku Basic \
  --no-wait

J’attends quelques minutes la fin de la création de la passerelle VPN

Je recréé à nouveau ma connexion VPN :

Ce test nous a monté que la migration d’une passerelle VPN basique avec une adresse IP dynamique n’est pas automatique. Nous avons dû supprimer et recréer les ressources, comme la documentation Microsoft nous l’indiquait :

Et qu’en plus, l’adresse IP publique a changé :

Conclusion

La dépréciation annoncée des anciens SKU VPN Gateway et des adresses IP Basic dans Azure n’est pas un simple changement cosmétique : elle implique une révision proactive de vos architectures réseau. Comme nous l’avons vu, certaines migrations sont simples et automatiques, d’autres nécessitent des manipulations plus lourdes, incluant la suppression et la recréation de ressources critiques.

Il est essentiel d’anticiper ces évolutions, non seulement pour assurer la continuité de service, mais aussi pour aligner votre environnement sur les meilleures pratiques Azure : haute disponibilité, sécurité, et scalabilité.

Le 30 septembre 2025 est une échéance technique mais surtout stratégique. N’attendez pas l’automne pour agir : identifiez, planifiez, migrez.

AVD/W365 + RDP Multipath = 😍

Excellente nouvelle pour celles et ceux rencontrant des soucis de connexion à Azure Virtual Desktop ou Windows 365 ! Disponible en préversion depuis début 2025, le RDP Multipath vient d’être annoncé il y a peu en disponibilité générale par Microsoft. Nous allons justement voir comment en bénéficier, et qu’est-ce que cela apporte par rapport à du TCP ou à l’UDP simple-path.

Comment fonctionne la connexion d’un utilisateur à une VM AVD ?

Azure Virtual Desktop héberge des sessions client sur des hôtes de session s’exécutant sur Azure. Microsoft gère des parties des services au nom du client et fournit des points de terminaison sécurisés pour la connexion des clients et des hôtes de session.

Le diagramme suivant fournit une vue d’ensemble générale des connexions réseau utilisées par Azure Virtual Desktop.

Microsoft Learn

Azure Virtual Desktop (AVD) utilise le protocole RDP pour établir et acheminer vos sessions vers les machines virtuelles ; voici comment la connexion se déroule :

  1. Découverte du feed (Feed Discovery)
    • L’utilisateur s’authentifie auprès de Microsoft Entra ID et obtient un jeton OAuth.
    • Le client envoie ce jeton au service de feed AVD, qui retourne la liste des desktops et applications disponibles sous forme de fichiers .rdp signés numériquement Microsoft Learn.
  2. Connexion au gateway AVD
    • Quand l’utilisateur lance l’un des fichiers .rdp, le client se connecte via TLS 1.2 (HTTPS) à Azure Front Door, qui redirige vers l’instance du Remote Connection Gateway la plus proche (latence minimale et charge équilibrée) Microsoft Learn.
    • Le gateway valide la requête et fait appel au Connection Broker pour orchestrer la suite.
  3. Établissement du canal de contrôle
    • L’hôte de session (VM AVD) maintient en permanence un canal de communication sortant chiffré (TLS) vers le broker AVD, géré par le service Reverse Connect Transport plutôt qu’un listener TCP classique Microsoft Learn.
    • Le broker utilise ce canal pour indiquer au session host de joindre le même gateway que le client.
  4. Ouverture du canal de données (RDP data channel)
    • Reverse connect transport (TCP via le gateway) : le trafic RDP transite en TCP chiffré sur 443 via le gateway, idéal si UDP est bloqué ou non configuré.
    • RDP Shortpath (UDP direct) : le client et le session host créent un canal UDP direct (STUN/TURN + ICE), évitant le relay du gateway pour réduire latence et jitter Microsoft Learn.
    • Le basculement entre TCP et UDP Shortpath est transparent et contrôlé par le client selon la configuration et la qualité réseau.
  5. Session active et résilience
    • Une fois le canal de données établi, RDP gère l’envoi d’affichage, d’audio, de redirections périphériques, etc.
    • En mode Shortpath, chaque paquet voyage de façon indépendante : en cas de perte ou de réordonnancement, RDP multi‑path ou le TCP se chargent des retransmissions, tandis que le reverse connect TCP reprend toujours – garantissant la continuité de la session même sur des réseaux instables.

Le bon vieux duel TCP vs UDP ?

Voici un tableau comparatif des principaux aspects de TCP et UDP :

CritèreTCP (Transmission Control Protocol)UDP (User Datagram Protocol)
Type de connexionOrienté connexion (handshake en trois temps)Sans connexion (pas de handshake)
FiabilitéFiable : accusés de réception et retransmissions automatiquesNon fiable : pas d’accusés de réception ni retransmissions
OrdonnancementGarantit l’ordre des paquetsPas d’ordre garanti
Contrôle de fluxOui (fenêtre glissante)Non
Contrôle de congestionOui (algorithmes AIMD, slow start, etc.)Non
Taille de l’en‑têteAu moins 20 octets8 octets
Vitesse (latence)Plus lente (overhead de contrôle)Plus rapide (faible overhead)
Utilisations courantesHTTP, HTTPS, FTP, SMTP, SSH, bases de donnéesDNS, VoIP, streaming vidéo, jeux en temps réel
Gestion des erreursVérification de somme de contrôle + retransmissionVérification de somme de contrôle uniquement
Transmission multipleFlux unique, multiplexé par portDatagrammes indépendants par port
Connection keep‑aliveOui (optionnel)Non
Adapté pour…Applications nécessitant intégrité et fiabilitéApplications temps réel et tolérantes à la perte

Dans quels cas ne pas utiliser l’UDP pour AVD ?

Certains utilisateurs ont ressenti des difficultés lors de session Azure Virtual Desktop lorsque on passe systématiquement à l’UDP. On évitera d’activer le transport UDP sur Azure Virtual Desktop dans les cas suivants :

  • Réseaux d’entreprise très « verrouillés » :
    • Pare‑feu ou appliance de sécurité qui ne laissent passer que le trafic HTTPS/TCP sur le port 443.
    • Proxies ou load‑balancers interdisant ou foreçant l’inspection de flux UDP.
    • Absence d’ouvrages STUN/TURN nécessaires au Shortpath UDP.
  • Topologies NAT ou VPN problématiques :
    • NAT très restrictif (symmetric NAT) qui empêche la découverte de chemin direct STUN.
    • VPN d’entreprise qui n’autorise que le protocole TCP encapsulé (SSLVPN, SSTP…), rendant l’UDP inopérant.
  • Contraintes de conformité ou d’audit :
    • Politiques de sécurité interne imposant que tout le trafic soit chiffré/TLS sur TCP pour centraliser la journalisation et l’inspection.
    • Nécessité de passer via des IDS/IPS qui ne gèrent que le TCP.
  • Scénarios de diagnostic ou de troubleshooting :
    • Pour isoler un problème de connectivité ou comparer les performances TCP vs UDP : on désactive l’UDP pour forcer le fallback TCP.
    • Lorsque vous suspectez que le UDP est la source de coupures intempestives (perte, réordonnancement).
  • Clients legacy ou plateformes non supportées :
    • Certains clients RDP anciens ou intégrés (HTML5 via RemoteApp) ne gèrent pas le Shortpath UDP.

Un article écrit sur ce blog montre comment justement rester sur du TCP via une configuration depuis la machine AVD ou le poste local.

Qu’est-ce que le RDP Multipath ?

Le RDP Multipath (ou « UDP Multi‑Path ») est une évolution du transport RDP Shortpath qui évite les coupures et micro‑latences en :

  1. Ouvrant plusieurs sous‑canaux UDP simultanément entre le client et l’hôte de session, au lieu d’un seul.
  2. Surveillant en continu la qualité (latence, perte, gigue) de chacun de ces chemins via ICE/STUN/TURN.
  3. Bascule instantanée du trafic sur le ou les sous‑canaux les plus sains dès qu’un chemin se dégrade, sans interrompre la session.

Concrètement, si l’un des liens subit une perte de paquets élevée, un pic de gigue ou tombe complètement, Multipath redirige automatiquement les paquets vers un autre sous‑chemin en quelques dizaines de millisecondes, assurant une expérience fluide et sans reconnexion visible pour l’utilisateur.

Comment fonctionne le RDP Multipath pour Azure Virtual Desktop ?

RDP Multipath pour Azure Virtual Desktop établit plusieurs sous‑canaux UDP simultanés (via ICE, STUN et TURN) et mesure en continu leur qualité (latence, perte, gigue).

  • Dès qu’un lien se dégrade, il bascule automatiquement en quelques dizaines de millisecondes vers le canal le plus performant, sans interrompre la session.
  • Si tous les canaux UDP tombent, Multipath retombe de façon transparente sur TCP, garantissant ainsi une expérience AVD quasi ininterrompue et nettement plus stable sur des réseaux instables.

L’excellente vidéo de Dean Cefola depuis sa chaîne YouTube Azure Academy nous permet d’en savoir un peu plus :

Le diagramme suivant illustre le fonctionnement de RDP Multipath avec Azure Virtual Desktop. Dans ce scénario, le principal chemin actif est la connexion UDP via STUN, complétée par deux connexions UDP redondantes via un serveur TURN :

Microsoft Learn

Comment en bénéficier ?

RDP Multipath fonctionne automatiquement lorsque les conditions suivantes sont remplies :

  • Assurez-vous que RDP Shortpath est configuré comme protocole de transport principal. Pour plus d’informations, voir Configurer RDP Shortpath. Nous ne prenons pas actuellement en charge les connexions WebSocket (basées sur le protocole TCP) et ces utilisateurs n’en tirent aucun avantage pour le moment.
  • Les connexions doivent être établies à partir d’un appareil Windows local utilisant Windows App, version 2.0.366.0 ou ultérieure, ou le client Remote Desktop, version 1.2.6074 ou ultérieure. Les autres plateformes ne sont pas prises en charge actuellement.

Afin de comprendre mieux le fonctionnement et l’impact entre les 3 protocoles disponibles pour Azure Virtual Desktop, j’ai préparé un environnement dédié.

Voici les différentes étapes que j’ai suivies :

Maintenant, il nous reste plus qu’à tester tout cela 😎

Etape 0 – Rappel des prérequis :

Pour réaliser cet exercice, il vous faudra disposer de :

  • Une abonnement Azure valide
  • Un tenant Microsoft

Etape I – Création de l’environnement AVD

J’ai créé un nouvel environnement Azure Virtual Desktop composé de 3 machines virtuelles et placées dans un même pool d’hôtes :

Comme le recommandait Microsoft avant la fin de la préversion, mon pool d’hôtes est encore être configuré en tant qu’environnement de validation :

Enfin j’ai laissé par défaut la configuration de la fonctionnalité RDP shortpath afin de gérer le protocole utilisé de façon individuelle sur chacune des 3 machines virtuelles AVD :

Commençons par configurer la première machine virtuelle AVD afin que celle-ci n’accepte que les connexions RDP en TCP.

Etape II – VM1 Forcer le flux TCP côté serveur :

Il est possible de forcer le serveur à n’accepter que des connexions TCP, ce qui est particulièrement utile dans des environnements où la stabilité prime. Pour cela, vous pouvez modifier le registre du serveur ou déployer une GPO.

Avant modification, le serveur accepte par défaut les connexions en UDP. Pour forcer TCP, la modification est simple : il suffit d’ajouter la clé de registre SelectTransport.

Voici la commande permettant d’ajouter automatiquement cette clé de registre Windows avec des droits administrateur :

REG ADD "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v SelectTransport /t REG_DWORD /d 1 /f

Après avoir mis à jour la clé de registre, il est nécessaire de redémarrer la machine AVD pour que la modification prenne effet.

Après modification, la connexion se fait exclusivement en TCP. Cette commande force le serveur à utiliser uniquement TCP pour les connexions RDP.

Continuons par configurer la seconde machine virtuelle AVD pour que celle-ci n’accepte que les connexions RDP en UDP simple-path.

Etape III – VM2 Forcer le flux UDP simple-path côté serveur :

Avant modification, le configuration par défaut de mon AVD accepte les connexions en UDP Multipath si cela est possible.

Mais il est possible de forcer le serveur à n’accepter que des connexions UDP sans Multipath. Pour cela, vous pouvez modifier le registre du serveur ou déployer une GPO.

Voici la commande permettant d’ajouter automatiquement cette clé de registre Windows avec des droits administrateur :

reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\RdpCloudStackSettings" /v SmilesV3ActivationThreshold /t REG_DWORD /d 0 /f

Après avoir mis à jour la clé de registre, les utilisateurs doivent se déconnecter et se reconnecter à l’hôte de la session pour que la modification prenne effet.

Après la modification, la connexion AVD se fait exclusivement en UDP simple-path :

Terminons de préparer notre environnement par la configuration de la dernière machine virtuelle AVD pour que celle-ci accepte les connexions RDP en UDP Multipath.

Etape IV – VM3 Forcer le flux UDP Multipath côté serveur :

Compte tenu de la configuration de notre nouvel environnement Azure Virtual Desktop, il n’y a rien à faire. La connexion de notre utilisateur de test nous le prouve :

Nos machines virtuelles AVD sont prêtes. Continuons maintenant sur la préparation de notre protocole de test.

Etape V – Préparation de l’environnement de test :

J’ai utilisé la version d’essai gratuite de Connection Emulator.

Connection Emulator est un outil qui vous permet de simuler des conditions réseau dégradées (latence, perte, gigue, réordonnancement, duplication, corruption).

Voici le lien pour le télécharger en version d’essai, cliquez-ici pour télécharger et installer la version Windows :

Caractéristiques principales de l’outil

  • Limite la vitesse de connexion
  • Imite une latence fixe ou variable
  • Simule la perte, la corruption, la duplication et la réorganisation de paquets individuels et séquentiels.
  • Affiche un graphique de simulation de paquets en direct
  • Prend en charge plusieurs profils de simulation

Etape VI – Réalisation des 2 tests :

J’ai réalisé deux scénarios d’émulation réseau avec Connection Emulator :

  • Test 1 : latence 100 ms, perte 8 %, duplication 5 %, réordonnancement 30 %, corruption 2 %
  • Test 2 : latence 200 ms, perte 16 %, duplication 10 %, réordonnancement 40 %, corruption 4 %

Pour chaque scénario, j’ai démarré simultanément trois VM AVD configurées en TCP, UDP simple-path et UDP Multipath, puis lancé la même vidéo sur chacune.

Cette méthode met en évidence, de manière visuelle, la dégradation de la qualité pour TCP et UDP mono-chemin et la résilience supérieure de l’UDP Multipath face aux pires conditions réseau.

Voici ma vidéo de comparaison des 3 protocoles de connexion :

Etape VII – Configuration sur Windows 365 :

Finissons cette dernière étape par la configuration sur Windows 365. Voici les informations de connection sur un poste Windows 365 avant la modification de registre :

Pour activer RDP Multipath avant le déploiement complet, définissez la valeur de la clé de registre suivante sur 100, puis relancez la session de votre utilisateur

reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\RdpCloudStackSettings" /v SmilesV3ActivationThreshold /t REG_DWORD /d 100 /f

Voici les informations de connection sur un poste Windows 365 après la modification de registre :

Si vous préférez désactiver RDP Multipath jusqu’à ce que le déploiement soit terminé, définissez la valeur de la clé de registre sur 0 :

reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\RdpCloudStackSettings" /v SmilesV3ActivationThreshold /t REG_DWORD /d 0 /f

Conclusion

En synthèse, RDP Multipath représente une véritable avancée pour Azure Virtual Desktop : il combine la rapidité et la légèreté du transport UDP avec robustesse et la redondance.

Grâce à la création et à la surveillance en continu de plusieurs sous‑canaux UDP, vos sessions basculent en quelques dizaines de millisecondes vers le chemin le plus sain, tout en retombant de façon transparente sur TCP si nécessaire.

Le résultat ?

Une expérience utilisateur fluide, sans micro‑coupure ni latence excessive, même sur des réseaux fortement dégradés.

N’attendez plus pour activer RDP Multipath sur vos environnements AVD : testez-le dès aujourd’hui et constatez par vous‑même l’amélioration significative de la résilience et de la qualité de vos connexions distantes.

Ajoutez du MCP à votre IA !

Alex Wolf, de la chaîne YouTube The Code Wolf, continue de peaufiner son application DBChatPro version après version et dévoile la v6 ! Cette nouvelle version intègre maintenant un serveur MCP, exposant les fonctionnalités clés de DBChatPro à d’autres outils d’IA (GitHub Copilot, etc.) ou même à vos propres applications. Dans cet article, nous explorons les fondamentaux du MCP, puis nous détaillons l’installation du serveur MCP de DBChatPro.

Avant toute manipulation technique, et pour bien saisir l’intérêt d’une architecture MCP, je vous recommande la lecture de l’excellent billet disponible sur Digidop, écrit par Thibaut Legrand. Voici un extrait de ce billet qui illustre parfaitement l’avantage d’une architecture MCP :

Qu’est-ce que le Model Context Protocol (MCP) ?

Le Model Context Protocol (MCP) est un standard ouvert conçu par Anthropic (l’entreprise à l’origine de Claude) qui offre aux modèles d’IA un accès sécurisé à diverses sources de données et outils externes.

Il fonctionne comme un « USB-C universel » pour l’IA, facilitant la communication avec n’importe quel service ou base de données.

Pourquoi le MCP a été créé ?

Avant le MCP, relier un LLM à des sources externes était laborieux et non standardisé. Les grands modèles de langage (GPT, Claude, Gemini…) présentent deux limites majeures :

  1. Limite de contexte : Ils ne peuvent raisonner que sur les informations présentes dans leur contexte immédiat
  2. Impossibilité d’action : Ils peuvent générer du texte mais ne peuvent pas agir sur le monde extérieur

La métaphore du « problème M×N » illustre parfaitement cette situation : pour connecter un nombre M modèles d’IA à un nombre N outils externes, il fallait créer M×N intégrations différentes. Le MCP transforme cette équation en M+N, réduisant drastiquement la complexité d’intégration.

Prenons un exemple concret :

une entreprise utilisant 4 modèles d’IA différents (Claude, GPT-4, Gemini, Deepseek) qui souhaite les connecter à 5 services externes (GitHub, Slack, Google Drive, Salesforce, base de données interne).

Sans MCP, cela nécessiterait 4×5=20 intégrations personnalisées. Avec MCP, on passe à seulement 4+5=9 composants (4 clients MCP et 5 serveurs MCP), soit une réduction de 55% de la complexité et du temps de développement.

MCP vs API traditionnelles : quelles différences ?

Pour comprendre l’importance du MCP, comparons-le aux API REST traditionnelles :

CaractéristiqueMCPAPI REST traditionnelles
CommunicationBidirectionnelle et en temps réelGénéralement requête-réponse unidirectionnelle
Découverte d’outilsAutomatique et dynamiqueConfiguration manuelle nécessaire
Conscience du contexteIntégréeLimitée ou inexistante
ExtensibilitéPlug-and-playEffort d’intégration linéaire
StandardisationProtocole unifié pour tous les modèlesVariable selon les services
OrientationConçu spécifiquement pour les modèles d’IAUsage général

Cette standardisation représente un changement de paradigme pour quiconque souhaite développer des applications IA véritablement connectées.

Architecture et fonctionnement du MCP

L’architecture du MCP repose sur trois composants principaux qui interagissent de façon coordonnée :

Les composants clés du MCP

  1. Hôtes MCP : Ce sont les applications qui intègrent l’IA et ont besoin d’accéder à des données externes. Par exemple, Claude Desktop, un IDE comme Cursor, ou toute application intégrant un LLM.
  2. Clients MCP : Ce sont des intermédiaires qui maintiennent les connexions sécurisées entre l’hôte et les serveurs. Chaque client est dédié à un serveur spécifique pour garantir l’isolation.
  3. Serveurs MCP : Ce sont des programmes externes qui fournissent des fonctionnalités spécifiques et se connectent à diverses sources comme Google Drive, Slack, GitHub, ou des bases de données.

Le flux de communication MCP se déroule typiquement en quatre étapes bien définies :

  1. Découverte : L’hôte (comme Claude Desktop) identifie les serveurs MCP disponibles dans son environnement
  2. Inventaire des capacités : Les serveurs MCP déclarent leurs fonctionnalités disponibles (outils, ressources, prompts)
  3. Sélection et utilisation : Quand l’utilisateur pose une question nécessitant des données externes, l’IA demande l’autorisation d’utiliser un outil spécifique
  4. Exécution et retour : Le serveur MCP exécute l’action demandée (recherche web, accès à un fichier, etc.) et renvoie les résultats à l’IA qui peut alors formuler une réponse complète

Ce processus standardisé permet une communication fluide entre l’IA et les sources de données externes, tout en maintenant un contrôle transparent pour l’utilisateur.

Serveurs MCP existants

Plutôt que de développer vos propres serveurs MCP depuis zéro, vous pouvez exploiter l’écosystème grandissant de serveurs préexistants. Ces solutions prêtes à l’emploi vous permettent d’intégrer rapidement des fonctionnalités avancées dans vos projets IA :

Serveurs officiels et communautaires

  • GitHub : Ce serveur MCP vous permet d’interagir avec des dépôts de code directement depuis votre application IA. Vous pouvez rechercher des fichiers, créer des issues, analyser des pull requests, ou même générer des commits et du code. Idéal pour les assistants de développement qui nécessitent une compréhension du contexte du code.
  • Google Drive : Offre un accès complet aux documents stockés sur Google Drive. Votre modèle d’IA peut ainsi lire, créer, modifier ou organiser des documents, présentations et feuilles de calcul, en conservant le contexte des informations partagées.
  • Slack : Permet à vos modèles d’IA d’interagir avec les canaux et conversations Slack. Ils peuvent envoyer des messages, surveiller des chaînes spécifiques, ou même répondre automatiquement à certains types de requêtes, créant ainsi une intégration transparente dans les flux de communication d’équipe.
  • Puppeteer : Un puissant serveur MCP qui apporte la capacité de naviguer sur le web. Vos modèles d’IA peuvent visiter des sites, remplir des formulaires, capturer des captures d’écran et extraire des données, ouvrant la voie à l’automatisation avancée des tâches web.
  • Brave Search : Donne à vos modèles d’IA la capacité d’effectuer des recherches web en temps réel via le moteur Brave. Cela permet de répondre à des questions sur l’actualité récente ou d’accéder à des informations au-delà de la date limite de formation du modèle.
  • PostgreSQL : Connecte vos modèles d’IA directement à vos bases de données PostgreSQL. Les modèles peuvent effectuer des requêtes SQL, analyser des données et même assister à la conception de schémas de base de données.
  • SQLite : Variante plus légère pour les bases de données locales, particulièrement utile pour les applications de bureau ou les projets avec des exigences de stockage plus modestes.
  • Qdrant : Serveur spécialisé pour les bases de données vectorielles, essentiel pour les applications IA nécessitant une recherche sémantique ou par similarité.

Afin de voir comment cela marche, voici les différentes étapes que nous allons suivre sur un environnement de test :

Maintenant, il nous reste plus qu’à tester tout cela 😎

Etape 0 – Rappel des prérequis :

Pour réaliser cet exercice, il vous faudra disposer de :

  • Un tenant Microsoft
  • Une souscription Azure valide

Commençons par créer quelques ressources (IA et DB) sur Azure et Entra.

Etape I – Création des ressources Azure :

Connectez-vous au portail Entra Admin Center pour enregistrer une nouvelle application, puis récupérez ensuite l’Application ID et le Tenant ID :

Créez un secret client puis copiez immédiatement sa valeur car elle ne sera plus visible par la suite :

Ouvrez une session Windows PowerShell, puis définissez trois variables d’environnement pour l’App ID, le Directory ID et le Client Secret :

setx AZURE_CLIENT_ID    "xxx"
setx AZURE_TENANT_ID    "yyy"
setx AZURE_CLIENT_SECRET "zzz"

Vérifiez ces variables dans les Propriétés système de Windows, section « Variables d’environnement », afin de confirmer leur bonne configuration :

Créez un service Azure OpenAI depuis le portail Azure, puis ajoutez votre application en tant que « Cognitive Services OpenAI User » dans « Contrôle d’accès (IAM) » :

Revenez à la page principale de votre service Azure OpenAI, puis cliquez sur Ouvrir dans la Fonderie pour accéder à l’interface de déploiement :

Dans la Fonderie, ouvrez l’onglet Déploiements et cliquez sur Nouveau déploiement, puis nommez-le (par ex : gpt-4o) et copiez l’URL de l’endpoint :

Créez une base de données Azure SQL Database avec des données en exemple, puis copiez la chaîne de connexion complète pour la réutiliser plus tard :

Notre environnement Azure est prêt. Nous allons maintenant pouvoir déployer l’application DBChatPro sur notre poste en local.

Etape II – Déploiement et test de l’application DBChatPro :

Accédez au dépôt GitHub de l’application via le lien, puis téléchargez l’archive ZIP sur votre poste :

Extrayez l’archive ZIP, puis placez-vous dans le dossier extrait pour préparer l’ouverture du projet :

Lancez Visual Studio Code, puis cliquez ici pour sélectionner le dossier du projet :

Sélectionnez le dossier extrait contenant le projet, puis validez pour l’ouvrir dans VS Code :

Observez la nouvelle architecture de DBChatPro avec la partie MCP distincte de l’interface graphique, puis passez à la configuration UI :

Commencez par l’interface graphique en renseignant les endpoints de votre choix dans le fichier de configuration, puis sauvegardez vos modifications :

Dans mon cas, j’ai utilisé le modèle Azure OpenAI :

Ouvrez la console intégrée Terminal de VS Code, positionnez-vous dans le dossier racine de l’application, lancez l’application, puis patientez quelques secondes pour que le serveur local démarre :

Copiez l’URL locale générée par l’application, puis ouvrez-la dans votre navigateur préféré :

Dans le navigateur, constatez que la base de données n’est pas encore configurée, puis cliquez sur Connexion :

Collez votre chaîne de connexion SQL en modifiant le mot de passe, puis cliquez sur Check Connection pour tester la liaison :

Vérifiez la découverte automatique du schéma de la base de données, puis cliquez ici pour sauvegarder pour valider l’import :

Dans le terminal, observez également l’import du plan et du schéma de votre base SQL :

Sur la page principale de l’application, sélectionnez le modèle et la plateforme d’IA, puis saisissez votre prompt :

Patientez quelques secondes pour afficher le résultat généré par le modèle :

Consultez l’onglet Insight pour obtenir des informations complémentaires sur la réponse, puis analysez les données fournies :

Sur l’onglet SQL Editor, constatez la transformation de votre requête en SQL :

Observez les résultats sous forme de tableau retournés par la requête SQL :

Accédez à l’historique des requêtes exécutées, puis identifiez celles que vous souhaitez réutiliser :

La fonction Chat vous permet de relancez une seconde requête basée sur les résultats de la première :

Testez cette seconde requête et constatez les résultats :

Au final, on constate que l’interface graphique de DBChatPro ne cesse d’évoluer pour offrir plus de facilité et une meilleure gestion des bases de données.

Passons maintenant à la partie MCP qui nous intéresse également.

Etape III – Déploiement du serveur MCP :

Revenez sur Visual Studio Code dans le programme MCP afin de paramétrer l’endpoint Azure OpenAI :

Collez également votre connexion SQL complète :

Cliquez sur le bouton Démarrer pour lancer le serveur MCP, puis patientez quelques instants :

Vérifiez que le serveur est démarré et affiche l’état Running :

Ouvrez la fenêtre Chat dans Visual Studio Code :

Assurez-vous que vous êtes en mode agent pour l’intelligence artificielle :

Dans la boîte à outils, confirmez que le serveur MCP et ses sous-modules sont actifs, puis refermez le panneau :

Effectuez un test de base pour vérifier que l’IA vous répond :

Lancez un prompt en spécifiant l’utilisation de DBChatPro avec un modèle et une plateforme AI, puis validez l’alerte :

use DbChatPro to get 10 customers from the database using AzureOpenAI and gpt-4o

Constatez que la connexion à la base de données et au modèle a bien fonctionné :

Observez en chat l’input et l’output de la requête :

Visualisez le résultat sous forme de tableau retourné par l’IA :

Lancez un second prompt sans redéfinir les paramètres du modèle, puis constatez que la réponse est tout de même générée :

Effectuez un autre test avec un prompt différent sur la même base :

Observez le résultat structuré cette fois en liste :

Si vous le souhaitez, testez la plateforme IA de GitHub en paramétrant un token d’accès sur cette page, puis copiez-le :

Sur ce token, autorisez l’accès en lecture pour interroger les modèles GitHub Copilot, puis confirmez cette permission :

Renseignez le modèle GitHub dans la configuration MCP et redémarrez le serveur, puis patientez quelques instants :

Relancez un prompt en utilisant le modèle GitHub Copilot comme plateforme IA :

Constatez le retour de résultats :

Envoyez cette fois un prompt combiné, interrogeant le serveur MCP via les deux modèles d’IA, puis constatez la fusion des réponses :

Enfin, découvrez sur sa vidéo, toujours depuis Visual Studio Code, des fonctions de troubleshooting très pratiques :

Conclusion

L’intégration du MCP transforme votre assistant en un véritable pont entre l’IA et le monde réel. Fini les intégrations sur mesure : grâce à ce protocole standard, un modèle peut interagir avec des bases de données, GitHub Copilot ou tout autre outil compatible.

On passe d’une complexité M×N à un système modulaire, extensible et sécurisé.

En adoptant le Model Context Protocol dès aujourd’hui, vous préparez vos solutions à l’IA de demain : une IA connectée, actionnable et interopérable, capable de faire bien plus que répondre, mais également d’interagir.

Déployez une passerelle VPN OPNsense

Azure VPN Gateway est un service plébiscité pour sa sécurité, sa redondance et la simplicité de son intégration native dans Microsoft Azure. Cependant, pour des projets de plus petite envergure ou lorsque vous disposez déjà de compétences réseau et d’infrastructures maîtrisées, il peut être judicieux d’explorer des solutions open source ou des distributions spécialisées. C’est dans cette optique que nous verrons comment déployer un VPN OPNsense sur Azure.

Comment fonctionne un tunnel IPsec ?

Les tunnels IPsec se mettent en place en deux grandes étapes :

Phase 1 – IKE (Internet Key Exchange)

  • Les deux extrémités (pair A et pair B) négocient d’abord une association de sécurité IKE SA.
  • Elles s’authentifient mutuellement (certificat, clé pré-partagée, etc.) et conviennent des paramètres de chiffrement (algorithme, mode DH, durée de vie des clés).
  • À l’issue, un canal chiffré et authentifié est établi pour protéger les échanges de la phase 2.

Phase 2 – IPsec SA

  • Dans ce canal sécurisé, les pairs négocient plusieurs Security Associations secondaires (appelées Child SA), qui définiront le chiffrement et l’intégrité du trafic utilisateur.
  • Elles conviennent des sous-réseaux à protéger, des ports et protocoles autorisés, puis génèrent les clés de session IPsec.
  • Une fois la Child SA montée, le tunnel est opérationnel : tout paquet envoyé vers le sous-réseau distant est chiffré et encapsulé dans IPsec.

Qu’est-ce qu’une passerelle VPN Azure ?

Une passerelle VPN Azure (Azure VPN Gateway) agit comme un point de terminaison chiffré permettant d’établir des tunnels IPsec/IKE entre votre réseau on-premises (ou vos clients VPN individuels) et vos réseaux virtuels Azure.

Elle prend en charge plusieurs scénarios :

  • Site-à-Site (connexion permanente entre votre datacenter et Azure)
  • Point-à-Site (accès distant des utilisateurs)
  • VNet-à-VNet (liaison sécurisée entre réseaux virtuels)

Quels sont les SKUs disponibles pour les passerelles VPN Azure ?

Les passerelles VPN Azure se déclinent en versions classiques et zone-redondantes :

GénérationSKUTunnels S2S/VNet-to-VNetConnexions P2S (IKEv2/OpenVPN)Débit agrégé BGP supportéZone-redondant
Gen 1BasicMax. 10Non supporté100 MbpsNonNon
VpnGw1Max. 30Max. 250650 MbpsOuiNon
VpnGw2Max. 30Max. 5001 GbpsOuiNon
VpnGw3Max. 30Max. 10001,25 GbpsOuiNon
VpnGw1AZMax. 30Max. 250650 MbpsOuiOui
VpnGw2AZMax. 30Max. 5001 GbpsOuiOui
VpnGw3AZMax. 30Max. 10001,25 GbpsOuiOui
Gen 2VpnGw2Max. 30Max. 5001,25 GbpsOuiNon
VpnGw3Max. 30Max. 10002,5 GbpsOuiNon
VpnGw4Max. 100*Max. 50005 GbpsOuiNon
VpnGw5Max. 100*Max. 1000010 GbpsOuiNon
VpnGw2AZMax. 30Max. 5001,25 GbpsOuiOui
VpnGw3AZMax. 30Max. 10002,5 GbpsOuiOui
VpnGw4AZMax. 100*Max. 50005 GbpsOuiOui
VpnGw5AZMax. 100*Max. 1000010 GbpsOuiOui

Combien coûte les passerelles VPN Azure ?

Le prix de la passerelle VPN dépend du SKU choisi. Voici quelques tarifs :

SKUPrix mensuel estimé (€)
Basic22,95 €
VpnGw1121,11 €
VpnGw2312,33 €
VpnGw3796,77 €
VpnGw41 338,57 €
VpnGw52 326,56 €

Attention : ces prix correspondent uniquement au coût de compute de la passerelle (744 heures d’utilisation par mois) et n’incluent pas les frais de transfert de données sortantes.

L’ancien VPN de type basique présente un tarif particulièrement attractif :

Le 2ème service le moins cher est maintenant le SKU VpnGw1, mais le prix est plus élevé :

En comparaison, le service OPNsense déployé via une VM affiche un coût un plus faible :

Voici également le tarif appliqué pour le VPN OPNsense pour un engagement d’un an sur la machine virtuelle :

Qu’est-ce que la passerelle VPN OPNsense sur Azure ?

OPNsense VPN est la solution de création de tunnels sécurisés intégrée à OPNsense, un pare-feu/routeur open-source basé sur FreeBSD. Elle prend en charge plusieurs protocoles majeurs :

  • IPsec : idéal pour les liaisons site-à-site ou les connexions distantes, avec négociation IKEv1/IKEv2, clés pré-partagées ou certificats, et prise en charge de BGP pour le routage dynamique.
  • OpenVPN : pour les accès distants sur TCP ou UDP, avec authentification par utilisateur, certificats ou serveur RADIUS, et options de chiffrement AES-GCM.
  • WireGuard : un protocole moderne, léger et performant, offrant des temps de mise en place réduits et une empreinte cryptographique simplifiée.

Peut-on déployer la passerelle VPN OPNsense sur Azure ?

Oui, il est tout à fait possible de déployer OPNsense dans Azure en tant que machine virtuelle. Afin de voir si cela marche vraiment, voici les différentes étapes que nous allons suivre sur un environnement de test :

Maintenant, il nous reste plus qu’à tester tout cela 😎💪

Etape 0 – Rappel des prérequis :

Pour réaliser cet exercice, il vous faudra disposer de :

  • Un tenant Microsoft
  • Une souscription Azure valide

Pour tester mon environnement, j’ai également provisionné les deux machines virtuelles suivantes pour simuler des ressources opposées :

J’y ai également mis en place une passerelle Bastion :

Enfin, j’ai également déployé une passerelle VPN Azure pour tester le tunnel :

Commençons par créer une nouvelle machine virtuelle Azure contenant la passerelle VPN OPNsense.

Etape I – Préparation de la machine virtuelle OPNsense :

Pour cela, cliquez sur le lien GitHub suivant pour déployer le template ARM sur votre environnement Azure : https://github.com/dmauser/opnazure

Sélectionnez ensuite le scénario OPNsense souhaité et renseignez les informations de base, puis cliquez sur Suivant :

Conservez ou ajustez la taille de la VM, puis validez en cliquant Suivant :

Constatez la présence de deux sous-réseaux, Trusted et Untrusted, puis lancez la validation Azure :

Une fois la validation réussie, le déploiement des ressources démarre automatiquement :

Patientez quelques minutes, puis cliquez ici pour accéder aux ressources créées :

Copiez les adresses IP privées et publiques de la VM OPNsense :

Modifiez la règle de pare-feu pour autoriser l’accès HTTPS à la VM :

Vérifiez la présence du sous-réseau Trusted, puis copiez son plan d’adressage :

Connectons-nous maintenant à notre console d’administration OPNsense pour avancer sur la configuration de notre tunnel.

Etape II – Configuration d’OPNsense :

Ouvrez votre navigateur, collez-y l’IP publique de la VM OPNsense, renseignez les identifiants ci-dessous, puis cliquez sur Login :

  • Login : root
  • Mot de passe : opnsense

Changez immédiatement le mot de passe pour des raisons de sécurité :

Commencez par créer une clé partagée destinée au handshake IPsec :

Dans la section VPN IPsec, cliquez-ici pour créer une nouvelle connexion et choisissez vos propositions de chiffrement :

Renseignez les champs requis : l’IP locale de la VM OPNsense et l’adresse IP publique de la passerelle VPN Azure :

Ajoutez une authentification locale en réutilisant la clé partagée, puis enregistrez :

Répétez l’opération pour l’authentification distante, puis sauvegardez :

Éditez ensuite la section Child en renseignant les plans d’adressage respectifs, puis cliquez sur Enregistrer :

Cliquez sur Sauvegarder :

Enfin, cliquez sur Appliquer pour finaliser la configuration IPsec :

Dans la section pare-feu, constatez la règle sortante déjà préconfigurée :

Créez une nouvelle règle entrante pour autoriser l’accès depuis la passerelle VPN Azure :

Activez cette nouvelle règle pare-feu :

Sur le pare-feu OPNsense, ajoutez les règles nécessaires pour établir la liaison IPsec dans la section WAN :

La configuration OPNsense est maintenant terminée. La prochaine étape consiste à configurer la passerelle VPN Azure pour se connecter à la première.

Etape III – Configuration de la passerelle VPN Azure :

Copiez l’adresse IP publique de la passerelle VPN Azure :

Dans le Network Security Group de votre VM OPNsense, créez une règle pour autoriser l’IP de la passerelle VPN Azure :

Créez une Local Network Gateway en renseignant l’IP publique de votre passerelle VPN OPNsense et le plan d’adressage du sous-réseau Trusted :

Établissez ensuite la connexion VPN Azure pour finaliser l’interconnexion entre les deux passerelles :

Collez la clé d’authentification, puis enregistrez la configuration de la connexion :

Associez également une table de routage au sous-réseau Trusted, en y incluant le préfixe 0.0.0.0/0 afin de diriger tout le trafic via la VM OPNsense :

Tout est maintenant en place pour le test de connectivité entre nos deux machines virtuelles.

Etape IV – Test de la connexion VPN :

Retournez dans le menu des connexions IPsec OPNsense, puis cliquez ici pour démarrer la connexion IPsec côté OPNsense :

Attendez quelques secondes jusqu’à l’apparition de la Phase 2 de la connexion IPsec :

Une fois la Phase 2 affichée, cliquez ici pour visualiser le journal contenant les événements IPsec :

Constatez l’apparition des différents états de la connexion entre les deux passerelles VPN :

Vérifiez l’apparition de Security Associations dans la base de données IPsec :

Vérifiez l’apparition de Security Policies dans la base de données IPsec :

Retournez sur le portail Azure et observez le changement de statut de la connexion VPN Azure :

Démarrez les deux machines virtuelles de test pour valider la liaison :

Sur les deux VM de test, désactivez temporairement la règle de pare-feu ICMP suivante pour autoriser le ping :

Effectuez des tests de ping réciproques entre les deux machines virtuelles :

Interrompez la connexion depuis OPNsense :

Constatez la disparition de la Phase 2 dans la console OPNsense :

Vérifiez également l’échec du ping entre les deux VM :

Relancez la connexion IPsec depuis OPNsense et observez la réapparition de la Phase 2 :

Confirmez la reprise du ping sur les deux machines virtuelles de test :

Conclusion

Si Azure VPN Gateway reste la solution de référence pour une interconnexion cloud sécurisée et redondante, l’utilisation d’une VM OPNsense sur Azure offre une alternative open source particulièrement adaptée aux petits projets ou aux environnements où vous souhaitez tirer parti de vos compétences réseau existantes.

Vous gagnez en flexibilité de configuration, en contrôle détaillé des politiques VPN et en possibilité d’étendre facilement vers d’autres protocoles (OpenVPN, WireGuard).

Cette approche hybride combine la robustesse du cloud Azure et la puissance d’OPNsense pour bâtir un VPN sur mesure parfaitement aligné avec vos besoins.