Tutoriel : Contrôler l’adresse IP sortante Azure Functions avec une passerelle NAT de réseau virtuel Azure

La traduction d’adresses réseau (NAT) simplifie la connectivité Internet sortante-uniquement pour les réseaux virtuels. Quand il est configuré sur un sous-réseau, toute la connectivité sortante utilise vos adresses IP publiques statiques spécifiées. Une NAT peut être utile pour les applications qui doivent consommer un service tiers qui utilise une liste d’autorisation d’adresses IP comme mesure de sécurité. Pour en savoir plus, consultez Présentation d’Azure NAT Gateway.

Ce tutoriel montre comment utiliser la passerelle NAT pour router le trafic sortant à partir d’une fonction de déclencheur par HTTP. Cette fonction vous permet de vérifier sa propre adresse IP sortante. Dans ce tutoriel, vous allez :

  • Créer un réseau virtuel
  • Créer une application de fonction dans un plan Premium.
  • Créer une adresse IP publique
  • Créer une passerelle NAT.
  • Configurer une application de fonction de manière à router le trafic sortant via la passerelle NAT.

Topologie

Le diagramme suivant représente l’architecture de la solution que vous créez :

UI for NAT gateway integration

Les fonctions qui s’exécutent dans le plan Premium ont les mêmes fonctionnalités d’hébergement que les applications web dans Azure App Service, ce qui inclut la fonctionnalité d’intégration de réseau virtuel. Pour en savoir plus sur l’intégration d’un réseau virtuel, y compris la résolution des problèmes et la configuration avancée, consultez Intégrer une application à un réseau virtuel Azure.

Prérequis

Pour ce tutoriel, il est important de comprendre l’adressage IP et la gestion des sous-réseaux. Vous pouvez commencer par cet article qui couvre les principes fondamentaux de l’adressage et de la gestion de sous-réseaux. De nombreux autres articles et vidéos sont disponibles en ligne.

Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.

Si vous avez déjà suivi le tutoriel d’intégration de fonctions avec un réseau virtuel Azure, vous pouvez passer à Créer une fonction de déclencheur HTTP.

Créez un réseau virtuel

  1. Dans le menu du Portail Azure, sélectionnez Créer une ressource. À partir de la Place de marché Azure, sélectionnez Mise en réseau>Réseau virtuel.

  2. Dans Créer un réseau virtuel, entrez ou sélectionnez les paramètres spécifiés comme indiqué dans le tableau suivant :

    Paramètre Valeur
    Abonnement Sélectionnez votre abonnement.
    Resource group Sélectionnez Créer nouveau, entrez myResourceGroup et sélectionnez OK.
    Nom Entrez myResourceGroup-vnet.
    Location Sélectionnez USA Est.
  3. Sélectionnez Suivant : Adresses IP et, pour Espace d’adressage IPv4, entrez 10.10.0.0/16.

  4. Sélectionnez Ajouter un sous-réseau, puis entrez Tutorial-Net pour Nom de sous-réseau et 10.10.1.0/24 pour la Plage d’adresses de sous-réseau.

    IP Addresses tab for creating a vnet

  5. Sélectionnez Ajouter, puis Vérifier + créer. Conservez les autres valeurs par défaut, puis sélectionnez Créer.

  6. Dans Créer un réseau virtuel, sélectionnez Créer.

Maintenant, vous allez créer une application de fonction dans le plan Premium. Ce plan fournit une mise à l’échelle serverless lors de la prise en charge de l’intégration d’un réseau virtuel.

Créer une application de fonction sur le plan Premium

Ce tutoriel vous montre comment créer votre application de fonction dans un plan Premium. La même fonctionnalité est également disponible lors de l’utilisation d’un plan dédié (App service).

Notes

Pour une expérience optimale dans ce tutoriel, choisissez .NET pour la pile d’exécution et Windows comme système d’exploitation. Créez votre application de fonction dans la même région que votre réseau virtuel.

  1. Dans le menu du portail Azure ou dans la page Accueil, sélectionnez Créer une ressource.

  2. Dans la page Nouveau, sélectionnez Calcul>Application de fonction.

  3. Dans la page De base, utilisez les paramètres d’application de fonction comme indiqué dans le tableau ci-dessous :

    Paramètre Valeur suggérée Description
    Abonnement Votre abonnement Abonnement sous lequel est créée cette nouvelle application de fonction.
    Groupe de ressources myResourceGroup Nom du nouveau groupe de ressources dans lequel créer votre Function App.
    Nom de l’application de fonction Nom globalement unique Nom qui identifie votre nouvelle Function App. Les caractères valides sont a-z (insensible à la casse), 0-9et -.
    Publier Code Option de publication de fichiers de code ou d'un conteneur Docker.
    Pile d’exécution Langage préféré Choisissez un runtime qui prend en charge votre langage de programmation de fonction favori. La modification sur le portail n’est pas prise en charge pour le développement Python.
    Région Région recommandée Choisissez une région près de chez vous ou près d’autres services auxquels ont accès vos fonctions.
  4. Sélectionnez Suivant : Hébergement. Dans la page Hébergement, entrez les paramètres suivants :

    Paramètre Valeur suggérée Description
    Compte de stockage Nom globalement unique Créez un compte de stockage utilisé par votre application de fonction. Les noms des comptes de stockage doivent comporter entre 3 et 24 caractères, uniquement des lettres minuscules et des chiffres. Vous pouvez également utiliser un compte existant qui doit répondre aux exigences relatives aux comptes de stockage.
    Système d’exploitation Système d’exploitation préféré Un système d’exploitation est présélectionné pour vous en fonction de la sélection de votre pile d’exécution, mais vous pouvez modifier le paramètre si nécessaire. Python est pris en charge sur Linux uniquement. La modification sur le portail est prise en charge sur Windows uniquement.
    Plan Premium Plan d’hébergement qui définit la façon dont les ressources sont allouées à votre Function App. Sélectionnez Premium. Par défaut, un plan App Service est créé. Référence et taille est défini avec la valeur par défaut EP1, où EP signifie élastique premium. Pour plus d’informations, consultez la liste des références SKU Premium.
    Lorsque vous exécutez des fonctions JavaScript dans un plan Premium, vous devez choisir une instance qui comporte moins de processeurs virtuels. Pour plus d’informations, consultez Choisir des plans Premium à un cœur.
  5. Sélectionnez Suivant : Supervision. Dans la page Supervision, entrez les paramètres suivants :

    Paramètre Valeur suggérée Description
    Application Insights Default Crée une ressource Application Insights avec le même nom de l’application dans la région prise en charge la plus proche. En développant ce paramètre, vous pouvez changer le Nouveau nom de ressource ou choisir un autre Emplacement dans une Zone géographique Azure où stocker vos données.
  6. Sélectionnez Vérifier + créer pour passer en revue les sélections de configuration d’application.

  7. Dans la page Vérifier + créer, vérifiez vos paramètres, puis sélectionnez Créer pour provisionner et déployer l’application de fonction.

  8. Cliquez sur l’icône Notifications en haut à droite du portail pour voir le message Le déploiement a été effectué.

  9. Sélectionnez Accéder à la ressource pour afficher votre nouvelle application de fonction. Vous pouvez également sélectionner Épingler au tableau de bord. L’épinglage permet de revenir plus facilement à cette ressource d’application de fonction à partir de votre tableau de bord.

    Deployment notification

Connecter l’application de fonction au réseau virtuel

Vous pouvez maintenant connecter votre application de fonction au réseau virtuel.

  1. Dans votre application de fonction, sélectionnez Réseau dans le menu de gauche puis, sous Intégration au réseau virtuel, sélectionnez Cliquez ici pour configurer.

    Choose networking in the function app

  2. Dans la page Intégration au réseau virtuel, sélectionnez Ajouter un réseau virtuel.

  3. Dans État de la fonctionnalité réseau, utilisez les paramètres figurant dans le tableau sous l’image :

    Define the function app virtual network

    Paramètre Valeur suggérée Description
    Réseau virtuel MyResourceGroup-vnet Ce réseau virtuel est celui que vous avez créé précédemment.
    Sous-réseau Créer un sous-réseau Créez un sous-réseau dans le réseau virtuel que votre application de fonction utilisera. L’intégration au réseau virtuel doit être configurée pour utiliser un sous-réseau vide.
    Nom du sous-réseau Function-Net Nom du nouveau sous-réseau.
    Bloc d’adresses du réseau virtuel 10.10.0.0/16 Vous devez avoir un seul bloc d’adresses défini.
    Bloc d’adresses du sous-réseau 10.10.2.0/24 La taille du sous-réseau limite le nombre total d’instances vers lequel votre application de fonction du plan Premium peut effectuer un scale-out. Cet exemple utilise un sous-réseau /24 avec 254 adresses d’hôte disponibles. Ce sous-réseau est surprovisionné, mais facile à calculer.
  4. Sélectionnez OK pour ajouter le sous-réseau. Fermez les pages Intégration de réseau virtuel et État de la fonctionnalité réseau pour revenir à la page de votre application de fonction.

L’application de fonction peut maintenant accéder au réseau virtuel. Lorsque la connectivité est activée, le paramètre de site vnetrouteallenabled est défini sur 1. Ce paramètre de site ou le paramètre d’application hérité WEBSITE_VNET_ROUTE_ALL doivent avoir la valeur 1.

Ensuite, vous allez ajouter une fonction déclenchée par HTTP à l’application de fonction.

Créer une fonction de déclencheur HTTP

  1. Dans le menu de gauche de la fenêtre Fonctions, sélectionnez Fonctions, puis Ajouter dans le menu supérieur.

  2. Dans la fenêtre Nouvelle fonction, sélectionnez Déclencheur HTTP et acceptez le nom par défaut pour la Nouvelle fonction ou entrez un nouveau nom.

  3. Dans Coder + Tester, remplacez le code du script C# généré par un modèle (.csx) par le code suivant :

    #r "Newtonsoft.Json"
    
    using System.Net;
    using Microsoft.AspNetCore.Mvc;
    using Microsoft.Extensions.Primitives;
    using Newtonsoft.Json;
    
    public static async Task<IActionResult> Run(HttpRequest req, ILogger log)
    {
        log.LogInformation("C# HTTP trigger function processed a request.");
    
        var client = new HttpClient();
        var response = await client.GetAsync(@"https://ifconfig.me");
        var responseMessage = await response.Content.ReadAsStringAsync();
    
        return new OkObjectResult(responseMessage);
    }
    

    Ce code appelle un site web externe qui retourne l’adresse IP de l’appelant, en l’occurrence cette fonction. Cette méthode vous permet de déterminer facilement l’adresse IP sortante utilisée par votre application de fonction.

Vous êtes maintenant prêt à exécuter la fonction et à vérifier les adresses IP sortantes actuelles.

Vérifier les adresses IP sortantes actuelles

Vous pouvez maintenant exécuter la fonction. Mais avant, consultez le portail pour vérifier quelles adresses IP sortantes sont utilisées par l’application de fonction.

  1. Dans votre application de fonction, sélectionnez Propriétés et examinez le champ Adresses IP sortantes.

    View function app outbound IP addresses

  2. À présent, revenez à votre fonction de déclencheur HTTP, sélectionnez Coder + Tester, puis Tester/Exécuter.

    Test function

  3. Sélectionnez Exécuter pour exécuter la fonction, puis basculez vers la Sortie.

    Test function output

  4. Vérifiez que l’adresse IP mentionnée dans le corps de la réponse HTTP est l’une des valeurs des adresses IP sortantes que vous avez vues précédemment.

À présent, vous pouvez créer une adresse IP publique et utiliser une passerelle NAT pour modifier cette adresse IP sortante.

Créer une adresse IP publique

  1. À partir de votre groupe de ressources, sélectionnez Ajouter, recherchez Adresse IP publique sur la Place de marché Azure, puis sélectionnez Créer. Utilisez les paramètres indiqués dans le tableau sous l’image ci-après :

    Create Public IP Address

    Paramètre Valeur suggérée
    Version de l’adresse IP IPv4
    Référence (SKU) Standard
    Niveau Régionale
    Nom Adresse IP sortante
    Abonnement Vérifiez que votre abonnement est affiché
    Groupe de ressources myResourceGroup (ou le nom que vous avez donné à votre groupe de ressources)
    Lieu USA Est (ou l’emplacement que vous avez affecté à vos autres ressources)
    Zone de disponibilité Aucune zone
  2. Sélectionnez Créer pour soumettre le déploiement.

  3. Une fois le déploiement terminé, accédez à la ressource d’adresse IP publique que vous venez de créer et affichez l’adresse IP dans la Vue d’ensemble.

    View Public IP Address

Créer une passerelle NAT

Nous allons maintenant créer la passerelle NAT. Si vous avez commencé avec le précédent tutoriel sur les réseaux virtuels, Function-Net est le nom de sous-réseau suggéré et MyResourceGroup-vnet est le nom de réseau virtuel suggéré dans ce tutoriel.

  1. À partir de votre groupe de ressources, sélectionnez Ajouter, recherchez Passerelle NAT sur la Place de marché Azure, puis sélectionnez Créer. Utilisez les paramètres du tableau sous l’image pour renseigner l’onglet Informations de base :

    Create NAT gateway

    Paramètre Valeur suggérée
    Abonnement Votre abonnement
    Groupe de ressources myResourceGroup (ou le nom que vous avez donné à votre groupe de ressources)
    Nom de la passerelle NAT myNatGateway
    Région USA Est (ou la région que vous avez affectée à vos autres ressources)
    Zone de disponibilité None
  2. Sélectionnez Suivant : Adresse IP sortante. Dans le champ Adresses IP publiques, sélectionnez l’adresse IP publique que vous avez créée. Laissez l’option Préfixes d’adresses IP publiques désélectionnée.

  3. Sélectionnez Suivant : Sous-réseau. Sélectionnez la ressource myResourceGroup-vnet dans le champ Réseau virtuel et le sous-réseau Function-Net.

    Select subnet

  4. Sélectionnez Vérifier + créer, puis Créer pour soumettre le déploiement.

Une fois le déploiement terminé, la passerelle NAT est prête à router le trafic du sous-réseau de votre application de fonction vers Internet.

Vérifier les nouvelles adresses IP sortantes

Répétez les étapes précédentes pour réexécuter la fonction. L’adresse IP sortante que vous avez configurée dans la traduction d’adresses réseau doit maintenant être visible dans la sortie de la fonction.

Nettoyer les ressources

Vous avez créé des ressources pour suivre ce tutoriel. Vous serez facturé pour ces ressources en fonction de l’état de votre compte et de la tarification du service. Pour éviter les coûts supplémentaires, supprimez les ressources lorsque vous n’en avez plus besoin.

  1. Dans le portail Azure, accédez à la page Groupe de ressources.

    Pour accéder à cette page à partir de la page de l’application de fonction, sélectionnez l’onglet Vue d’ensemble, puis le lien situé sous Groupe de ressources.

    Screenshot that shows select the resource group to delete from the function app page.

    Pour accéder à la page à partir du tableau de bord, sélectionnez Groupes de ressources, puis le groupe de ressources que vous avez utilisé pour cet article.

  2. Dans la page Groupe de ressources, passez en revue la liste des ressources incluses et vérifiez qu’elles correspondent à celles que vous souhaitez supprimer.

  3. Sélectionnez Supprimer le groupe de ressources et suivez les instructions.

    La suppression peut prendre quelques minutes. Une fois terminée, une notification s’affiche pendant quelques secondes. Vous pouvez également sélectionner l’icône représentant une cloche en haut de la page pour afficher la notification.

Étapes suivantes