Azure Private Link
Usages avec une application web utilisant l'intégration vNet
Présentation du Service
Private Link est une offre qui comprend deux composants : Private Endpoint et Private Link Service.
Private Endpoint vous permet de configurer un point de terminaison d'adresse IP privée pour vos applications PaaS tout en permettant à vos ressources internes et à vos clients de s'y connecter via votre VPN ou des réseaux appairés. Cela élimine la nécessité pour le service d'être accessible au public et ne nécessite plus l'administration des NSG, des pare-feu PaaS ou des listes d'adresses IP des clients. Le trafic vers ces points de terminaison privés traverse le réseau fédérateur Microsoft sans jamais sortir sur l'Internet public.
Le service Azure Private Link va plus loin en permettant d'étendre les points de terminaison privés à des partenaires commerciaux ou à des clients. Ce service nécessite un processus d'approbation en tant que couche de sécurité supplémentaire pour empêcher tout accès involontaire à vos ressources internes.
Avantages du service Private Link/Endpoint
Le principal avantage d'Azure Private Link est qu'il élimine un énorme obstacle pour certaines organisations qui sont liées par des exigences de conformité ou de gouvernance selon lesquelles le trafic est sécurisé de manière privée dans toute l'organisation. Désormais, les organisations peuvent se connecter à des points de terminaison privés via un VPN de site à site ou ExpressRoute, répondant ainsi aux exigences de sécurité des services PaaS disponibles sans avoir à traverser l'Internet public.
Private Link bénéficie également d'un DNS privé et d'un adressage IP. Cela vous permet de gérer et de maintenir vos espaces IP privés et vos systèmes DNS internes sans nécessiter de mises à jour IP publiques ou DNS qui sont souvent gérées par des parties externes. Ce scénario atténue également les règles de routage complexes qui obligeraient les applications internes à envoyer des demandes de services PaaS vers Internet. Désormais, ces appels peuvent être envoyés en interne.
Chaque point de terminaison privé est lié à l'instance spécifique de la ressource PaaS qu'il représente pour éviter les fuites de données. Cela signifie que chaque point de terminaison privé facilite uniquement l'accès au serveur SQL, au compte de stockage ou à l'application Web auquel il est lié. De cette manière, les fuites de données sont considérablement réduites car les applications et les ressources doivent faire référence à la combinaison spécifique de service et d'instance, plutôt qu'à l'ensemble du service.
L'extension des ressources internes à d'autres services ou clients est un autre avantage clé de Private Link. L'utilisation de Private Link en parallèle avec Azure Standard Load Balancer vous permet de rendre les services PaaS ou IaaS internes disponibles via Private Endpoint pour les unités commerciales ou les clients externes sans autoriser le trafic vers ou depuis Internet. C'est ce qu'on appelle le service de lien privé.
Logging and Monitoring
Comme pour de nombreuses ressources Azure, les stratégies de journalisation et de surveillance sont également une considération importante dans Azure Private Link. Cependant, dans ce cas, nous ne parlons pas de la surveillance des points de terminaison privés en tant que ressources, mais plutôt de la manière dont nous pouvons utiliser Private Link pour faciliter la surveillance dans un environnement Azure existant.
Azure Monitor Private Link Scope (AMPLS) a été conçu pour permettre l'accès privé à Azure Monitor. Cette solution utilise le service Private Link pour activer la surveillance Azure pour une étendue spécifique de ressources principales. La solution de surveillance peut envoyer des informations de journalisation et de diagnostic directement à un point de terminaison privé limité à l'espace de travail Log Analytics désigné (et à d'autres composants) plutôt qu'au point de terminaison public Azure Monitor général, éliminant ainsi la nécessité pour de nombreuses ressources d'avoir accès à l'Internet public. Cela a l'avantage supplémentaire de garantir que les journaux de votre application ne sont accessibles que via un point de terminaison privé.
Accès aux services back-end depuis une Web Application
Dans notre contexte, depuis une web app utilisant un l'option d'intégration à un VNet, nous souhaitons mettre en place un accès privé aux services back-end PaaS. L'objectif est de pouvoir interroger, depuis la web app, différents services PaaS Azure identifiés tel que:
- une base de données SQL Server ou Comsos SQL
- un Key Vault
- un Storage Account
Voici un schéma simplifié détaillant la solution proposée:
Ici, nous retrouvons, derrière le Firewall et une App Gateway, une Web App interconnectée à ces services backends via l'intégration à un vNet et un peering à un second vNet sur lequel sont connectés les endpoints privés.
Configuration
Web Application
Côté configuration réseau, les "access restrictions" restent inchangés par rapport au design et la sécurité actuellement en place :
L’intégration au réseau virtuel permet à votre application d’accéder aux ressources de votre réseau virtuel, mais sans pour autant accorder d’accès privé entrant à votre application à partir du réseau virtuel. L’accès aux sites privés fait référence au fait de rendre une application accessible uniquement à partir d’un réseau privé, par exemple à partir d’un réseau virtuel Azure. La fonctionnalité Intégration du réseau virtuel sert uniquement à passer des appels sortants de votre application vers votre réseau virtuel.
Le paramètre d’application WEBSITE_VNET_ROUTE_ALL doit être utilisé pour activer tout le routage du trafic:
Private Endpoints
Le private endpoint va permettre de définir le lien entre la ressource Azure en spécifiant sa typologie (blob, sqlServer, storage ou Vault), son sous-réseaux et sa zone DNS privée.
Private DNS
Azure crée un enregistrement de nom canonique (CNAME) DNS sur le DNS public. L’enregistrement CNAME redirige la résolution vers le nom de domaine privé. Vous pouvez remplacer la résolution par l’adresse IP privée de vos points de terminaison privés. Vos applications n’ont pas besoin de modifier l’URL de connexion. Lors de la résolution sur un service DNS public, le serveur DNS est résolu sur vos points de terminaison privés. Le processus n’a pas d’impact sur vos applications existantes.
La diffusion de ses DNS privés sur un réseau spécifique doit être réalisé via l'ajout des "virtual network links":
Network
Sur le sous-réseau "frontend" dédié à l'intégration réseau de la web app il faut rajouter la délégation nécessaire "Microsoft.Web/serverFarms" :
FAQs
Quelle est la différence entre Private Endpoint, Private Link et Private Link Service ?
- Private Link: service Azure sous lequel vous pouvez rendre vos ressources PaaS disponibles en privé sur un réseau virtuel.
- Private Endpoint: ressource logique Azure , un point de terminaison privé, qui est mappée à une adresse IP privée. Il s'agit de l'interface à laquelle vous serez connecté lors de l'accès aux ressources PaaS sur votre réseau virtuel privé.
- Private Link service: Le service que vous mettez à disposition sur un réseau privé d'appairage avec d'autres unités commerciales ou clients. Le service utilise un équilibreur de charge standard Azure interne pour mapper l'adresse IP du service de liaison privée au frontal de l'équilibreur de charge. Vous pouvez référencer ce service via un point de terminaison privé pour accéder à ces ressources sans jamais interagir avec Internet. Cela peut être accompli sur les locataires Azure AD.
Quels services prennent en charge Azure Private Link ? Le support de service peut être trouvé ici : Disponibilité d'Azure Private Link
Quelle est le type de ressource à définir sur mon Private Endpoint ? Le tableau suivant répertorie les ressources disponibles qui prennent en charge un point de terminaison privé : Configuration DNS des points de terminaison privés Azure
Quel private DNS dois-je utiliser en fonction de mon service Azure ? L'entrée dans le DNS privé doit utiliser un des endpoints définis par Microsoft, pour le retrouver voici un lien vers la documentation officielle: Configuration de la zone DNS des services Azure
GitHub repository
Voici en complément de cet article, un exemple complet écrit en Terraform: