Configurer des restrictions d’accès dans Azure App Service

En configurant des restrictions d’accès, vous pouvez définir une liste verte/d’exclusion classée par ordre de priorité qui contrôle l’accès réseau à votre application. La liste peut inclure des adresses IP ou des sous-réseaux de Réseau virtuel Microsoft Azure. Lorsqu’il y a une ou plusieurs entrées, une règle implicite Tout refuser se trouve à la fin de la liste. Pour en savoir plus sur les restrictions d’accès, accédez à la vue d’ensemble des restrictions d’accès.

Les restrictions d’accès fonctionnent avec toutes les charges de travail hébergées dans Azure App Service. Les charges de travail peuvent inclure des applications web, des applications API, des applications Linux, des conteneur personnalisés Linux et des fonctions.

Lorsqu’une requête est envoyée à votre application, l’adresse dont provient la demande est vérifiée par rapport aux règles de votre liste de restriction des accès. Si l’adresse FROM se trouve dans un sous-réseau configuré avec des points de terminaison de service sur Microsoft.Web, le sous-réseau source est comparé aux règles de réseau virtuel de votre liste des restrictions d’accès. Si l’adresse n’est pas autorisée à y accéder selon les règles définies dans la liste, le service répond avec le code d’état HTTP 403.

La fonctionnalité de restriction des accès est implémentée dans les rôles frontaux App Service, qui sont en amont des hôtes de travail où votre code s’exécute. C’est pourquoi les restrictions d’accès sont comparables à des listes de contrôle d’accès (ACL) réseau.

La possibilité de restreindre l’accès à votre application web depuis un réseau virtuel Azure utilise des points de terminaison de service. Avec les points de terminaison de service, vous pouvez restreindre l’accès à un service multilocataire à partir de sous-réseaux sélectionnés. Il est impossible de limiter le trafic vers les applications hébergées dans un environnement App Service Environment. Si vous êtes dans un environnement App Service Environment, vous pouvez contrôler l’accès à votre application en appliquant des règles d’adresses IP.

Notes

Les points de terminaison de service doivent être activés côté mise en réseau et pour le service Azure avec lequel il sont activés. Pour obtenir la liste des services Azure qui prennent en charge les points de terminaison de service, consultez Points de terminaison de service de réseau virtuel.

Diagram of the flow of access restrictions.

Gérer les règles de restriction d’accès dans le portail

Pour ajouter une règle de restriction d’accès à votre application, procédez comme suit :

  1. Connectez-vous au portail Azure.

  2. Sélectionnez l’application à laquelle vous voulez ajouter des restrictions d’accès.

  3. Dans le menu de gauche, sélectionnez Mise en réseau.

  4. Dans la page Mise en réseau, sous Configuration du trafic entrant, sélectionnez le paramètre Accès réseau public.

    Screenshot of the App Service networking options page in the Azure portal.

  5. Sur la page Restrictions d'accès, vous pouvez consulter la liste des règles de restriction d’accès définies pour votre application.

    Screenshot of the Access Restrictions page in the Azure portal, showing the list of access restriction rules defined for the selected app.

    La liste affiche toutes les restrictions actuelles qui sont appliquées à l’application. Si une restriction de réseau virtuel s’applique à votre application, le tableau indique si des points de terminaison de service sont activés pour Microsoft.Web. Si aucune restriction n’est définie sur votre application et que votre règle sans correspondance n’est pas définie sur Refuser, l’application est accessible de partout.

Autorisations

Les autorisations de contrôle d’accès en fonction du rôle suivantes sur le sous-réseau ou à un niveau supérieur sont nécessaires pour configurer des restrictions d’accès via le portail Azure, l’interface CLI ou quand vous définissez les propriétés de configuration du site directement :

Action Description
Microsoft.Web/sites/config/read Récupère les paramètres de configuration des applications web.
Microsoft.Web/sites/config/write Met à jour les paramètres de configuration d’application web.
Microsoft.Network/virtualNetworks/subnets/joinViaServiceEndpoint/action* Joint des ressources telles qu’un compte de stockage ou une base de données SQL à un sous-réseau.
Microsoft.Web/sites/write** Mettre à jour les paramètres de l’application web

*uniquement nécessaire lors de l’ajout d’une règle de réseau virtuel (point de terminaison de service).

**Obligatoire seulement si vous mettez à jour des restrictions d’accès via le portail Azure.

Si vous ajoutez une règle basée sur un point de terminaison de service et que le réseau virtuel se trouve dans un abonnement différent de celui de l’application, vous devez vérifier que l’abonnement avec le réseau virtuel est inscrit pour le fournisseur de ressources Microsoft.Web. Vous pouvez inscrire explicitement le fournisseur en suivant cette documentation, mais il est également inscrit automatiquement lors de la création de la première application web dans un abonnement.

Ajouter une règle de restriction d’accès

Pour ajouter une règle de restriction d’accès à votre application, dans la page Restrictions d’accès, sélectionnez Ajouter. La règle n’est effective qu’après l’enregistrement.

Les règles sont appliquées par ordre de priorité, en commençant par le chiffre le moins élevé dans la colonne Priorité. Si vous ne configurez pas de règle sans correspondance, un comportement Tout refuser implicite est en vigueur après l’ajout même d’une seule règle.

Dans le volet Ajouter une restriction d’accès, lorsque vous créez une règle, procédez comme suit :

  1. Sous Action, sélectionnez Autoriser ou Refuser.

    Screenshot of the 'Add Access Restriction' pane.

  2. En option, vous pouvez entrez un nom et une description pour la règle.

  3. Dans la zone Priorité, entrez une valeur de priorité.

  4. Dans la liste déroulante Type, sélectionnez le type de règle. Les différents types de règles sont décrits dans les sections suivantes.

  5. Sélectionnez Ajouter une règle après avoir entré les informations spécifiques de la règle pour ajouter la règle à la liste.

Enfin, sélectionnez Enregistrer dans la page Restrictions d’accès.

Remarque

  • Il existe une limite de 512 règles de restriction d’accès. Si vous avez besoin de plus de 512 règles de restriction d’accès, nous vous suggérons d’envisager d’installer un produit de sécurité autonome, tel qu’Azure Front Door, Azure App Gateway ou un autre pare-feu d'applications web (WAF).

Définir une règle basée sur une adresse IP

Suivez la procédure décrite dans la section précédente, mais en ajoutant la configuration suivante :

  • Pour l’étape 4, dans la liste déroulante Type, sélectionnez IPv4 ou IPv6.

Spécifiez le bloc d’adresses IP dans la notation de routage CIDR (Classless InterDomain Routing) pour les adresses IPv4 et IPv6. Pour spécifier une adresse, vous pouvez utiliser le format 1.2.3.4/32, où les quatre premiers octets représentent votre adresse IP et /32 correspond au masque. La notation CIDR IPv4 est 0.0.0.0/0 pour toutes les adresses. Pour plus d’informations sur la notation de routage CIDR, consultez Routage CIDR (Classless InterDomain Routing).

Notes

Les règles de restriction d’accès basées sur l’IP ne gèrent les plages d’adresses de réseau virtuel que lorsque votre application se trouve dans un App Service Environment. Si votre application se trouve dans le service multilocataire, vous devez utiliser des points de terminaison de service pour limiter le trafic à certains sous-réseaux de votre réseau virtuel.

Définir une règle basée sur un point de terminaison de service

  • Pour l’étape 4, dans la liste déroulante Type, sélectionnez Réseau virtuel.

    Screenshot of the 'Add Restriction' pane with the Virtual Network type selected.

Dans les listes déroulantes Abonnement, Réseau virtuel et Sous-réseau, spécifiez les éléments auxquels vous souhaitez restreindre l’accès.

Grâce aux points de terminaison de service, vous pouvez restreindre l’accès à une sélection de sous-réseaux de réseau virtuel Azure. Si les points de terminaison de service ne sont pas déjà activés avec Microsoft.Web pour le sous-réseau que vous avez sélectionné, ils sont activés, sauf si vous cochez la case Ignorer les points de terminaison de service Microsoft.Web manquants. Le scénario dans lequel vous voudriez activer des points de terminaison de service sur l’application, mais pas sur le sous-réseau, dépend principalement du fait que vous disposiez ou non des autorisations pour les activer sur le sous-réseau.

Si vous avez besoin que quelqu’un d’autre active les points de terminaison de service sur le sous-réseau, cochez la case Ignorer les points de terminaison de service Microsoft.Web manquants. Votre application est configurée pour les points de terminaison de service en prévision de leur activation ultérieure sur le sous-réseau.

Vous ne pouvez pas utiliser des points de terminaison de service pour restreindre l’accès aux applications qui s’exécutent dans un environnement App Service Environment. Si votre application se trouve dans un environnement App Service Environment, vous pouvez contrôler l’accès à celle-ci avec des règles d’accès IP.

Avec les points de terminaison de service, vous pouvez configurer votre application avec les passerelles d’application ou d’autres appareils de pare-feu d'applications web (WAF). Vous pouvez également configurer des applications à plusieurs niveaux avec des serveurs principaux sécurisés. Pour plus d’informations, consultez Fonctionnalités de mise en réseau et App Service et Intégration d’Application Gateway avec les points de terminaison de service.

Remarque

  • Les points de terminaison de service ne sont actuellement pas pris en charge pour les applications web qui utilisent des liaisons TLS/SSL basées sur IP avec une adresse IP virtuelle (VIP).

Définir une règle basée sur une étiquette de service

  • Pour l’étape 4, dans la liste déroulante Type, sélectionnez Étiquette de service.

    Screenshot of the 'Add Restriction' pane with the Service Tag type selected.

Toutes les étiquettes de service disponibles sont prises en charge dans les règles de restriction d’accès. Chaque étiquette de service représente une liste de plages d’adresses IP des services Azure. La documentation sur les étiquettes de service fournit une liste de ces services et des liens vers les plages spécifiques. Utilisez des modèles Azure Resource Manager ou des scripts pour configurer des règles plus avancées, comme des règles à étendue régionale.

Modifier une règle

  1. Pour commencer à modifier une règle de restriction d’accès existante, sur la page Restrictions d’accès, sélectionnez la règle que vous souhaitez modifier.

  2. Dans le volet Modifier la restriction d’accès, effectuez vos modifications, puis sélectionnez Mettre à jour la règle.

  3. Sélectionnez Enregistrer pour enregistrer les modifications.

    Screenshot of the 'Edit Access Restriction' pane in the Azure portal, showing the fields for an existing access restriction rule.

    Remarque

    Lorsque vous modifiez une règle, vous ne pouvez pas basculer entre les types de règles.

Supprimer une règle

  1. Pour supprimer une règle, dans la page Restrictions d’accès, cochez la ou les règles que vous voulez supprimer, puis sélectionnez Supprimer.

  2. Sélectionnez Enregistrer pour enregistrer les modifications.

Screenshot of the 'Access Restrictions' page, showing the 'Remove' ellipsis next to the access restriction rule to be deleted.

Scénarios avancés de restriction d’accès

Les sections suivantes décrivent certains scénarios avancés utilisant des restrictions d’accès.

Filtrer par en-tête HTTP

Dans le cadre d’une règle, vous pouvez ajouter des filtres d’en-tête HTTP. Les noms d’en-têtes HTTP suivants sont pris en charge :

  • X-Forwarded-For
  • X-Forwarded-Host
  • X-Azure-FDID
  • X-FD-HealthProbe

Pour chaque nom d’en-tête, vous pouvez ajouter jusqu’à huit valeurs séparées par des virgules. Les filtres d’en-tête HTTP sont évalués après la règle elle-même et les deux conditions doivent être vraies pour que la règle s’applique.

Règles à plusieurs sources

Les règles à plusieurs sources vous permettent de combiner jusqu’à huit plages d’adresses IP ou huit étiquettes de service dans une seule règle. Vous utilisez des règles multisources si vous avez plus de 512 plages d’adresses IP ou si vous souhaitez créer des règles logiques. Des règles logiques peuvent être utilisées pour combiner plusieurs plages d’adresses IP avec un seul filtre d’en-tête HTTP.

Les règles à plusieurs sources sont définies de la même façon que vous définissez des règles à source unique, mais chaque plage est séparée par une virgule.

Exemple PowerShell :

Add-AzWebAppAccessRestrictionRule -ResourceGroupName "ResourceGroup" -WebAppName "AppName" `
  -Name "Multi-source rule" -IpAddress "192.168.1.0/24,192.168.10.0/24,192.168.100.0/24" `
  -Priority 100 -Action Allow

Bloquer une adresse IP unique

Pour un scénario où vous souhaitez bloquer explicitement une seule adresse IP ou un bloc d’adresses IP, mais autoriser l’accès à tout le reste, ajoutez une règle Refuser pour l’adresse IP spécifique et configurez l’action de règle non correspondante sur Autoriser.

Screenshot of the 'Access Restrictions' page in the Azure portal, showing a single blocked IP address.

Limiter l'accès à un site du Gestionnaire de contrôle des services (SCM)

En plus de la possibilité de contrôler l’accès à votre application, vous pouvez également restreindre l’accès au site SCM (outil avancé) utilisé par votre application. Le site SCM est le point de terminaison de déploiement web, ainsi que la console Kudu. Vous pouvez affecter des restrictions d’accès au site SCM à partir de l’application séparément ou utiliser le même ensemble de restrictions pour l’application et le site SCM. Quand vous cochez la case Utiliser les règles du site principal, la liste des règles est masquée et utilise les règles du site principal. Si vous décochez la case, les paramètres de votre site SCM réapparaissent.

Screenshot of the 'Access Restrictions' page in the Azure portal, showing that no access restrictions are set for the SCM site or the app.

Restreindre l’accès à une instance Azure Front Door spécifique

Le trafic entre Azure Front Door et votre application provient d’un ensemble bien connu de plages d’adresses IP définies dans l’étiquette de service AzureFrontDoor.Backend. Une règle de restriction d’étiquette de service vous permet de limiter le trafic à partir d’Azure Front Door. Pour garantir que le trafic provient seulement de votre instance spécifique, vous devez filtrer davantage les demandes entrantes en fonction de l’en-tête HTTP unique envoyé par Azure Front Door.

Screenshot of the 'Access Restrictions' page in the Azure portal, showing how to add Azure Front Door restriction.

Exemple PowerShell :

$afd = Get-AzFrontDoor -Name "MyFrontDoorInstanceName"
Add-AzWebAppAccessRestrictionRule -ResourceGroupName "ResourceGroup" -WebAppName "AppName" `
  -Name "Front Door example rule" -Priority 100 -Action Allow -ServiceTag AzureFrontDoor.Backend `
  -HttpHeader @{'x-azure-fdid' = $afd.FrontDoorId}

Gérer la restriction d’accès par programmation

Vous pouvez gérer la restriction d’accès par programme. Vous trouverez ci-dessous des exemples de la façon d’ajouter des règles aux restrictions d’accès et de modifier l’action de règle sans correspondance pour le site principal et le site d’outils avancé.

Ajouter des règles de restrictions d’accès pour le site principal

Vous pouvez ajouter des règles de restrictions d’accès pour le site principal par programmation en choisissant l’une des options suivantes :

Vous pouvez exécuter la commande suivante dans le Cloud Shell. Pour plus d’informations sur la commandeaz webapp config access-restriction, consultez cette page.

az webapp config access-restriction add --resource-group ResourceGroup --name AppName \
  --rule-name 'IP example rule' --action Allow --ip-address 122.133.144.0/24 --priority 100

az webapp config access-restriction add --resource-group ResourceGroup --name AppName \
  --rule-name "Azure Front Door example" --action Allow --priority 200 --service-tag AzureFrontDoor.Backend \
  --http-header x-azure-fdid=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

Ajouter des règles de restrictions d’accès pour le site d’outils avancé

Vous pouvez ajouter des règles de restrictions d’accès pour le site d’outils avancé par programmation en choisissant l’une des options suivantes :

Vous pouvez exécuter la commande suivante dans le Cloud Shell. Pour plus d’informations sur la commandeaz webapp config access-restriction, consultez cette page.

az webapp config access-restriction add --resource-group ResourceGroup --name AppName \
  --rule-name 'IP example rule' --action Allow --ip-address 122.133.144.0/24 --priority 100 --scm-site true

Modifier une action de règle sans correspondance pour le site principal

Vous pouvez modifier l’action de règle sans correspondance pour le site principal par programme en choisissant l’une des options suivantes :

Vous pouvez exécuter la commande suivante dans le Cloud Shell. Pour plus d’informations sur la commandeaz resource, consultez cette page. Les valeurs acceptées pour ipSecurityRestrictionsDefaultAction sont Allow ou Deny.

az resource update --resource-group ResourceGroup --name AppName --resource-type "Microsoft.Web/sites" \
  --set properties.siteConfig.ipSecurityRestrictionsDefaultAction=Allow

Modifier une action de règle sans correspondance pour le site d’outils avancé

Vous pouvez modifier l’action de règle sans correspondance pour le site d’outils avancé par programme en choisissant l’une des options suivantes :

Vous pouvez exécuter la commande suivante dans le Cloud Shell. Pour plus d’informations sur la commandeaz resource, consultez cette page. Les valeurs acceptées pour scmIpSecurityRestrictionsDefaultAction sont Allow ou Deny.

az resource update --resource-group ResourceGroup --name AppName --resource-type "Microsoft.Web/sites" \
  --set properties.siteConfig.scmIpSecurityRestrictionsDefaultAction=Allow

Configurer des restrictions d’accès Azure Functions

Les restrictions d’accès sont également disponibles pour les applications de fonctions, avec les mêmes fonctionnalités que les plans App Service. Lorsque vous activez des restrictions d’accès, vous désactivez également l’éditeur de code du portail Azure pour les adresses IP non autorisées.

Étapes suivantes

Restrictions d’accès pour Azure Functions
Intégration d’Application Gateway par des points de terminaison de service
Scénarios avancés de restriction d’accès dans Azure App Service - billet de blog