Qu’est ce que Azure Private Endpoint ?
L’objectif d’un Private Endpoint est de pouvoir communiquer avec des ressources Azure de manières privées.
Prenons l’exemple d’un service PaaS classique avec une adresse IP publique. Ce service PaaS pourrait communiquer nativement avec toutes les ressources présentes dans le subnet en utilisant son adresse IP Publique.
Un Private Endpoint est une interface réseau qui utilise une adresse IP privée. Cette interface réseau vous connecte de manière privée et sécurisée à un service fonctionnant avec Azure Private Link. En activant un Private Endpoint, vous intégrez le service à votre réseau virtuel. Un private Endpoint doit se trouver dans un subnet.
Dans l’exemple ci-dessous, on peut ainsi bloquer l’accès publique entrant et sortant d’un service PaaS. Tout en étant capable d’accéder aux services en se connectant à une VM dans un subnet où ont été configurés des Private Endpoint pointant sur certains services (Storage Account par exemple).
Connecter votre infrastructure locale et vos services Azure avec Private Endpoint
Pour résumer, un Private Endpoint est une adresse IP privée. N’importe quel service qui se connecte au subnet comportant le Private Endpoint et qui a les droits nécessaires pour l’utiliser peut donc se servir du Private Endpoint et bénéficier des services auxquels il est relié.
Si votre infrastructure On-Premises est connecté au VNet avec une ExpressRoute ou un S2S VPN, il sera donc en mesure de communiquer avec votre service PaaS à l’aide du lien privé. De même pour un autre VNet qui est connecté avec le VNet contenant le Private Endpoint.
DNS
Lorsqu’un Private Endpoint est intégré à un service, celui-ci va créer un autre CNAME avec Private Link à l’intérieur du nom de domaine. Voici ce que nous aurions pour un Storage account :
- Point d’accès standard : Storage.blob.core.windows .net
- Point d’accès Private Link : StoragePrivatelink.blob.core.windows.net
Pour résoudre l’adresse IP privée du point de terminaison privé, vous devez modifier votre configuration DNS. Le nom DNS CNAME permet de pouvoir pointer sur notre ressource sans avoir à retenir l’adresse IP complète.
Voici un très bon exemple d’une résolution DNS en utilisant Azure Private Link :
Le privatelink à l’intérieur du DNS Record permet de différencier les ressources ayant été configurées avec un Private Endpoint des ressources n’ayant pas été configurées avec un Private Endpoint.
Private Link Center
Pour créer un Private Endpoint, il faut aller dans le service nommé Private Link Center. Pour des raisons de sécurité, certaines ressources PaaS vont nativement vous proposer de créer un Private Endpoint lors de la création de la ressource.
Mise en situation avec une Azure Web App
Exemple d’architecture test
Dans l’exemple ci-dessous nous allons créer une Web App dans Azure et bloquer tout accès provenant d’Internet. Pour accéder à cette Web App nous allons créer une VM et un Private Endpoint au sein du même subnet. Nous serons donc capable d’accéder à notre Web App de manière privé depuis n’importe quel objet se trouvant dans le Subnet. Dans mon cas, je vais faire l’exemple avec 1 VM.
Création de la Web App
Lors de la création de la Web App vous aller devoir lui donner un nom, choisir un ressource groupe, un Runtime Stack, une région ainsi qu’un Plan. Ces données ne sont pas importantes pour notre tutoriel et vous utilisez les options que vous préférez. En revanche, pour notre démo, nous allons sélectionner l’option Off dans la partie networking pour que la Web App ne soit pas exposé à Internet.
Une fois notre Web app créée, nous pouvons tenter de nous connecter de manière publique à l’URL du site Internet : [WebAppNAME.azurewebsites.net]. Vous devriez être bloqué et avoir le résultat ci-dessous :
Configuration Réseau
Nous allons maintenant créer un VNet, un subnet, un endpoint puis une VM. Vous pouvez choisir le nom qui vous plaît le mieux et conserver les réglages par défaut – sauf ceux que je mets en évidence ci-dessous. Pour la région choisie, notez la, nous en aurons besoin pour la suite.
Pour la partie adresse IP, vous pouvez prendre la plage qui vous convient. Dans mon cas, j’ai choisi 10.0.0.0/16.
Pour la création du Subnet :
- Cliquez sur subnet dans le menu déroulant gauche de votre VNet (1)
- Ajoutez un Subnet (2)
- J’ai choisi de découper mon VNet avec un Subnet ayant la configuration 10.0.1.0/24. Cliquez sur Add pour valider la création (3).
Nous allons maintenant créer une VM Windows Server dans ce subnet. N’oubliez pas de faire en sorte de pouvoir vous y connecter en laissant accessible le port 3389/TCP pour faire du RDP.
Dans la partie Networking, veuillez sélectionnez le subnet que vous avez précédemment créé :
Nous allons maintenant créer un Private Endpoint à l’intérieur de ce subnet pour que les ressources à l’intérieur de ce subnet (en l’occurrence notre VM) puisse afficher le contenu de notre Web App.
Pour créer un Endpoint aller dans la VM, puis dans la partie Networking sur le menu déroulant gauche cliquez sur private endpoint. Enfin cliquez sur Add –> Express.
Veuillez placer votre Private Endpoint dans le même subnet que votre VM. Vous pouvez ensuite valider la configuration.
Résultat et test
Pour tester notre solution nous allons devoir nous connecter à la VM en RDP. Pour voir le tuto, cliquez ici. Une fois connecté à votre VM, vous allez maintenant pouvoir utiliser le navigateur afin d’accéder à la page web (certes par défaut) de notre Azure Web app : [WebAppNAME.azurewebsites.net].
Si vous avez bien suivi toutes les étapes, vous serez capable d’accéder à votre Web App, un service (PaaS) pris en charge par Azure Private Link en utilisant votre Private Endpoint.
Leo PARENT 😀
Si vous avez d’autres questions n’hésitez pas à me contacter sur Linkedin ou directement via mon site.