Tutoriel : Établir l’accès privé aux sites avec Azure Functions

Ce tutoriel vous montre comment activer l’accès privé aux sites avec Azure Functions. En utilisant l’accès privé aux sites, vous pouvez exiger que le code de votre fonction soit déclenché uniquement à partir d’un réseau virtuel spécifique.

L’accès privé aux sites est utile dans les scénarios où l’accès à l’application de fonction doit être limité à un réseau virtuel spécifique. Par exemple, l’application de fonction peut être applicable uniquement aux employés d’une organisation spécifique ou aux services qui se trouvent dans le réseau virtuel spécifié (par exemple, une autre fonction Azure, une machine virtuelle Azure ou un cluster AKS).

Si une application Functions doit accéder aux ressources Azure au sein du réseau virtuel ou connectées via des points de terminaison de service, l’intégration au réseau virtuel est nécessaire.

Dans ce tutoriel, vous allez apprendre à configurer l’accès privé aux sites pour votre application de fonction :

  • Création d'une machine virtuelle
  • Créer un service Azure Bastion
  • Créer une application Azure Functions
  • Configurer un point de terminaison de service de réseau virtuel
  • Créer et déployer une fonction Azure
  • Appeler la fonction à partir de l’extérieur et dans le réseau virtuel

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

Topologie

Le diagramme suivant représente l’architecture de la solution à créer :

High-level architecture diagram for private site access solution

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.

Se connecter au portail Azure

Connectez-vous au portail Azure.

Création d'une machine virtuelle

La première étape de ce tutoriel consiste à créer une machine virtuelle à l’intérieur d’un réseau virtuel. La machine virtuelle sera utilisée pour accéder à votre fonction une fois que vous aurez rendu cette dernière accessible uniquement depuis le réseau virtuel.

  1. Sélectionnez le bouton Créer une ressource.

  2. Dans le champ de recherche, tapez Windows Server, puis sélectionnez Windows Server dans les résultats de la recherche.

  3. Sélectionnez Windows Server 2019 Datacenter dans la liste des options de Windows Server, puis appuyez sur le bouton Créer.

  4. Sous l’onglet De base, utilisez les paramètres de machine virtuelle de la manière spécifiée dans le tableau sous l’image :

    Basics tab for a new Windows VM

    Paramètre Valeur suggérée Description
    Abonnement Votre abonnement Abonnement sous lequel vos ressources sont créées.
    Groupe de ressources myResourceGroup Choisissez le groupe de ressources qui doit contenir toutes les ressources de ce tutoriel. Le fait d’utiliser le même groupe simplifie la suppression des ressources à la fin de ce tutoriel.
    Nom de la machine virtuelle myVM Le nom de la machine virtuelle doit être unique dans le groupe de ressources
    Région (États-Unis) USA Centre Nord Choisissez une région proche de chez vous ou près des fonctions qui doivent être accessibles.
    Ports d’entrée publics None Sélectionnez Aucun pour qu’il n’existe aucune connectivité entrante à la machine virtuelle à partir d’Internet. L’accès à distance à la machine virtuelle sera configuré par le biais du service Azure Bastion.
  5. Choisissez l’onglet Mise en réseau et sélectionnez Créer nouveau pour configurer un nouveau réseau virtuel.

    Screenshot that shows the

  6. Dans Créer un réseau virtuel, utilisez les paramètres figurant dans le tableau sous l’image :

    Create a new virtual network for the new VM

    Paramètre Valeur suggérée Description
    Nom myResourceGroup-vnet Vous pouvez utiliser le nom par défaut généré pour votre réseau virtuel.
    Plage d’adresses 10.10.0.0/16 Utilisez une plage d’adresses unique pour le réseau virtuel.
    Nom du sous-réseau Didacticiel Nom du sous-réseau.
    Plage d’adresses (sous-réseau) 10.10.1.0/24 La taille du sous-réseau définit le nombre d’interfaces qui peuvent être ajoutées au sous-réseau. Ce sous-réseau est utilisé par la machine virtuelle. Un sous-réseau /24 fournit 254 adresses d’hôte.
  7. Sélectionnez OK pour créer le réseau virtuel.

  8. De retour sous l’onglet Mise en réseau, assurez-vous que l’option Aucune est sélectionnée pour Adresse IP publique.

  9. Choisissez l’onglet Gestion, puis dans Compte de stockage des diagnostics, choisissez Créer nouveau pour créer un compte de stockage.

  10. Laissez les valeurs par défaut pour les sections Identité, Arrêt automatique et Sauvegarde.

  11. Sélectionnez Revoir + créer. Une fois la validation terminée, sélectionnez Créer. Le processus de création d’une machine virtuelle prend quelques minutes.

Configurer Azure Bastion

Azure Bastion est un service Azure complètement managé qui fournit un accès RDP et SSH sécurisé aux machines virtuelles directement à partir du portail Azure. L’utilisation du service Azure Bastion supprime la nécessité de configurer les paramètres réseau liés à l’accès RDP.

  1. Dans le portail, choisissez Ajouter en haut de la vue de groupe de ressources.

  2. Dans le champ de recherche, tapez Bastion.

  3. Sélectionnez Bastion dans les résultats de la recherche.

  4. Sélectionnez Créer pour commencer le processus de création d’une ressource Azure Bastion. Vous remarquerez un message d’erreur dans la section Réseau virtuel, car il n’existe pas encore de sous-réseau AzureBastionSubnet. Le sous-réseau est créé au cours des étapes suivantes. Utilisez les paramètres indiqués dans le tableau sous l’image ci-après :

    Start of creating Azure Bastion

    Paramètre Valeur suggérée Description
    Nom myBastion Nom de la nouvelle ressource Bastion
    Région Centre-Nord des États-Unis Choisissez une région près de chez vous ou près d’autres services auxquels ont accès vos fonctions.
    Réseau virtuel myResourceGroup-vnet Réseau virtuel dans lequel la ressource Bastion est créée
    Sous-réseau AzureBastionSubnet Sous-réseau dans votre réseau virtuel auquel la nouvelle ressource d’hôte Bastion est déployée. Vous devez créer un sous-réseau à l’aide de la valeur de nom AzureBastionSubnet. Cette valeur permet à Azure de savoir dans quel sous-réseau déployer les ressources Bastion. Vous devez utiliser un sous-réseau de /27 ou plus (/27, /26, etc.).

    Notes

    Pour obtenir un guide pas à pas détaillé de la création d’une ressource Azure Bastion, reportez-vous au tutoriel Créer un hôte Azure Bastion.

  5. Créez un sous-réseau dans lequel Azure peut provisionner l’hôte Azure Bastion. Le fait de choisir Gérer la configuration du sous-réseau ouvre un nouveau volet dans lequel vous pouvez définir un nouveau sous-réseau. Choisissez + Sous-réseau pour créer un sous-réseau.

  6. Le sous-réseau doit avoir pour nom AzureBastionSubnet et pour préfixe au minimum /27. Sélectionnez OK pour créer le sous-réseau.

    Create subnet for Azure Bastion host

  7. Dans la page Créer un bastion, sélectionnez le sous-réseau AzureBastionSubnet récemment créé dans la liste des sous-réseaux disponibles.

    Create an Azure Bastion host with specific subnet

  8. Sélectionnez Vérifier & créer. Une fois la validation terminée, sélectionnez Créer. La création de la ressource Azure Bastion prendra quelques minutes.

Créer une application Azure Functions

L’étape suivante consiste à créer une application de fonction dans Azure à l’aide du plan de consommation. Vous déploierez le code de votre fonction sur cette ressource ultérieurement dans le tutoriel.

  1. Dans le portail, choisissez Ajouter en haut de la vue de groupe de ressources.

  2. Sélectionnez Compute > Function App.

  3. Dans la section De base, utilisez les paramètres d’application de fonction comme indiqué dans le tableau.

    Paramètre Valeur suggérée Description
    Groupe de ressources myResourceGroup Choisissez le groupe de ressources qui doit contenir toutes les ressources de ce tutoriel. L’utilisation du même groupe de ressources pour l’application de fonction et la machine virtuelle facilitera le nettoyage des ressources quand vous aurez terminé ce tutoriel.
    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 à 9 et -.
    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.
    Région Centre-Nord des États-Unis Choisissez une région près de chez vous ou près d’autres services auxquels ont accès vos fonctions.

    Sélectionnez le bouton Suivant : Hébergement >.

  4. Pour la section Hébergement, sélectionnez le Compte de stockage, le Système d’exploitation et le Plan appropriés, comme indiqué dans le tableau suivant.

    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.
    Planification Consommation Le plan d’hébergement régit la mise à l’échelle de l’application de fonction est la mise à disposition des ressources pour chaque instance.
  5. Sélectionnez Vérifier + créer pour passer en revue les sélections de configuration d’application.

  6. Sélectionnez Créer pour configurer et déployer l’application de fonction.

Configurer des restrictions d’accès

L’étape suivante consiste à configurer des restrictions d’accès pour que seules les ressources sur le réseau virtuel puissent appeler la fonction.

Vous activez l’accès privé aux sites en créant un point de terminaison de service de réseau virtuel Azure entre l’application de fonction et le réseau virtuel spécifié. Les restrictions d’accès sont implémentées par le biais de points de terminaison de service. Les points de terminaison de service garantissent que seul le trafic provenant du réseau virtuel spécifié peut accéder à la ressource désignée. Dans ce cas, la ressource désignée est la fonction Azure.

  1. Dans l’application de fonction, sélectionnez le lien Mise en réseau sous l’en-tête de section Paramètres.

  2. La page Mise en réseau est le point de départ de la configuration d’Azure Front Door, d’Azure CDN ainsi que des restrictions d’accès.

  3. Sélectionnez Configurer des restrictions d’accès pour configurer l’accès privé aux sites.

  4. Dans la page Restrictions d’accès, vous voyez uniquement la restriction par défaut en place. La configuration par défaut ne place aucune restriction sur l’accès à l’application de fonction. Sélectionnez Ajouter une règle pour créer une configuration de restriction d’accès privé aux sites.

  5. Dans le volet Ajouter une restriction d’accès, indiquez un Nom, une Priorité et une Description pour la nouvelle règle.

  6. Sélectionnez Réseau virtuel dans la zone de liste déroulante Type, puis sélectionnez le réseau virtuel précédemment créé, et enfin le sous-réseau Tutoriel.

    Notes

    L’activation du point de terminaison de service peut prendre plusieurs minutes.

  7. La page Restrictions d’accès montre maintenant qu’il existe une nouvelle restriction. Quelques secondes peuvent être nécessaires pour que l’État du point de terminaison passe de Désactivé à Mise en service en cours puis à Activé.

    Important

    Chaque application de fonction a un site Kudu (outil avancé) permettant de gérer les déploiements d’applications de fonction. Ce site est accessible à partir d’une URL telle que : <FUNCTION_APP_NAME>.scm.azurewebsites.net. L’activation des restrictions d’accès sur le site Kudu empêche le déploiement du code de projet à partir d’une station de travail de développeur locale, et un agent est alors nécessaire au sein du réseau virtuel pour effectuer le déploiement.

Accéder à l’application de fonction

  1. Revenez à l’application de fonction créée. Dans la section Présentation, copiez l’URL.

    Get the Function app URL

    Si vous essayez d’accéder à l’application de fonction maintenant à partir de votre ordinateur situé en dehors de votre réseau virtuel, une page HTTP 403 indiquant que l’accès est interdit s’affiche.

  2. Revenez au groupe de ressources, puis sélectionnez la machine virtuelle créée précédemment. Pour accéder au site à partir de la machine virtuelle, vous devez vous connecter à celle-ci par le biais du service Azure Bastion.

  3. Sélectionnez Se connecter, puis choisissez Bastion.

  4. Indiquez le nom d’utilisateur et le mot de passe requis pour vous connecter à la machine virtuelle.

  5. Sélectionnez Connecter. Une nouvelle fenêtre de navigateur s’affiche pour vous permettre d’interagir avec la machine virtuelle. Il est possible d’accéder au site à partir du navigateur web présent sur la machine virtuelle car cette dernière accède au site via le réseau virtuel. Alors que le site n’est accessible qu’à partir du réseau virtuel désigné, une entrée DNS publique est conservée.

Créer une fonction

L’étape suivante de ce tutoriel consiste à créer une fonction Azure déclenchée par HTTP. L’appel de la fonction via une requête HTTP GET ou POST doit aboutir à une réponse « Hello, {nom} ».

  1. Suivez l’un des guides de démarrage rapide suivants pour créer et déployer votre application Azure Functions.

  2. Lors de la publication de votre projet Azure Functions, choisissez la ressource d’application de fonction que vous avez créée plus tôt dans ce tutoriel.

  3. Vérifiez que la fonction est déployée.

    Deployed function in list of functions

Appeler la fonction directement

  1. Pour tester l’accès à la fonction, vous devez copier l’URL de la fonction. Sélectionnez la fonction déployée, puis sélectionnez Obtenir l’URL de la fonction. Ensuite, cliquez sur le bouton Copier pour copier l’URL dans le Presse-papiers.

    Copy the function URL

  2. Collez l’URL dans un navigateur web. Quand vous essayez maintenant d’accéder à l’application de fonction à partir d’un ordinateur situé en dehors de votre réseau virtuel, une réponse HTTP 403 indiquant que l’accès à l’application est interdit s’affiche.

Appeler la fonction à partir du réseau virtuel

L’accès à la fonction via un navigateur web (à l’aide du service Azure Bastion) sur la machine virtuelle configurée sur le réseau virtuel est couronné de succès !

Access the Azure Function via Azure Bastion

Nettoyer les ressources

Au cours des étapes précédentes, vous avez créé des ressources Azure au sein d’un groupe de ressources. Si vous ne pensez pas avoir besoin de ces ressources à l’avenir, vous pouvez les supprimer en supprimant le groupe de ressources.

Dans le menu ou la page d’accueil du portail Azure, sélectionnez Groupes de ressources. Ensuite, dans la page Groupes de ressources, sélectionnez myResourceGroup.

Dans la page myResourceGroup, assurez-vous que les ressources répertoriées sont bien celles que vous souhaitez supprimer.

Sélectionnez Supprimer le groupe de ressources, tapez myResourceGroup dans la zone de texte pour confirmer, puis sélectionnez Supprimer.

Étapes suivantes