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

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.By setting up access restrictions, you can define a priority-ordered allow/deny list that controls network access to your app. La liste peut inclure des adresses IP ou des sous-réseaux de Réseau virtuel Microsoft Azure.The list can include IP addresses or Azure Virtual Network subnets. Lorsqu’il y a une ou plusieurs entrées, une règle implicite Tout refuser se trouve à la fin de la liste.When there are one or more entries, an implicit deny all exists at the end of the list.

Les restrictions d’accès fonctionnent avec toutes les charges de travail hébergées dans Azure App Service.The access restriction capability works with all Azure App Service-hosted workloads. Les charges de travail peuvent inclure des applications web, des applications API, des applications Linux, des applications de conteneur Linux et des fonctions.The workloads can include web apps, API apps, Linux apps, Linux container apps, and Functions.

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.When a request is made to your app, the FROM address is evaluated against the rules in your access restriction list. Si l’adresse dont provient la demande 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.If the FROM address is in a subnet that's configured with service endpoints to Microsoft.Web, the source subnet is compared against the virtual network rules in your access restriction list. 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.If the address isn't allowed access based on the rules in the list, the service replies with an HTTP 403 status code.

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.The access restriction capability is implemented in the App Service front-end roles, which are upstream of the worker hosts where your code runs. C’est pourquoi les restrictions d’accès sont comparables à des listes de contrôle d’accès (ACL) réseau.Therefore, access restrictions are effectively network access-control lists (ACLs).

La possibilité de restreindre l’accès à votre application web à partir d’un réseau virtuel Azure est activée par des points de terminaison de service.The ability to restrict access to your web app from an Azure virtual network is enabled by service endpoints. Avec les points de terminaison de service, vous pouvez restreindre l’accès à un service multilocataire à partir de sous-réseaux sélectionnés.With service endpoints, you can restrict access to a multi-tenant service from selected subnets. Il est impossible de limiter le trafic vers les applications hébergées dans un environnement App Service Environment.It doesn't work to restrict traffic to apps that are hosted in an 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.If you're in an App Service Environment, you can control access to your app by applying IP address rules.

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.The service endpoints must be enabled both on the networking side and for the Azure service that they're being enabled with. 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.For a list of Azure services that support service endpoints, see Virtual Network service endpoints.

Diagramme du flux des restrictions d’accès.

Gérer les règles de restriction d’accès dans le portailManage access restriction rules in the portal

Pour ajouter une règle de restriction d’accès à votre application, procédez comme suit :To add an access restriction rule to your app, do the following:

  1. Connectez-vous au portail Azure.Sign in to the Azure portal.

  2. Dans le volet gauche, sélectionnez Mise en réseau.On the left pane, select Networking.

  3. Dans le volet Mise en réseau, sous Restrictions d’accès, sélectionnez Configurer des restrictions d’accès.On the Networking pane, under Access Restrictions, select Configure Access Restrictions.

    Capture d’écran du volet Options réseau d’App Service dans le portail Azure.

  4. 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.On the Access Restrictions page, review the list of access restriction rules that are defined for your app.

    Capture d’écran de la page Restrictions d’accès dans le portail Azure montrant la liste des règles de restriction d’accès définies pour l’application sélectionnée.

    La liste affiche toutes les restrictions actuelles qui sont appliquées à l’application.The list displays all the current restrictions that are applied to the app. 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.If you have a virtual network restriction on your app, the table shows whether the service endpoints are enabled for Microsoft.Web. Si aucune restriction n’est définie sur votre application, l’application est accessible de partout.If no restrictions are defined on your app, the app is accessible from anywhere.

Ajouter une règle de restriction d’accèsAdd an access restriction rule

Pour ajouter une règle de restriction d’accès à votre application, dans le volet Restrictions d’accès, sélectionnez Ajouter une règle.To add an access restriction rule to your app, on the Access Restrictions pane, select Add rule. Une fois qu’une règle a été ajoutée, elle est appliquée immédiatement.After you add a rule, it becomes effective immediately.

Les règles sont appliquées par ordre de priorité, en commençant par le chiffre le moins élevé dans la colonne Priorité.Rules are enforced in priority order, starting from the lowest number in the Priority column. Une règle implicite Tout refuser s’applique dès que vous ajoutez une règle.An implicit deny all is in effect after you add even a single rule.

Dans le volet Ajouter une restriction d’accès, lorsque vous créez une règle, procédez comme suit :On the Add Access Restriction pane, when you create a rule, do the following:

  1. Sous Action, sélectionnez Autoriser ou Refuser.Under Action, select either Allow or Deny.

    Capture d’écran du volet « Ajouter une restriction d’accès ».

  2. En option, vous pouvez entrez un nom et une description pour la règle.Optionally, enter a name and description of the rule.

  3. Dans la zone Priorité, entrez une valeur de priorité.In the Priority box, enter a priority value.

  4. Dans la liste déroulante Type, sélectionnez le type de règle.In the Type drop-down list, select the type of rule.

Les différents types de règles sont décrits dans les sections suivantes.The different types of rules are described in the following sections.

Notes

  • Il existe une limite de 512 règles de restriction d’accès.There is a limit of 512 access restriction rules. 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).If you require more than 512 access restriction rules, we suggest that you consider installing a standalone security product, such as Azure Front Door, Azure App Gateway, or an alternative WAF.

Définir une règle basée sur une adresse IPSet an IP address-based rule

Suivez la procédure décrite dans la section précédente, mais en ajoutant la configuration suivante :Follow the procedure as outlined in the preceding section, but with the following addition:

  • Pour l’étape 4, dans la liste déroulante Type, sélectionnez IPv4 ou IPv6.For step 4, in the Type drop-down list, select IPv4 or IPv6.

Spécifiez le bloc d’adresses IP dans la notation de routage CIDR (Classless InterDomain Routing) pour les adresses IPv4 et IPv6.Specify the IP Address Block in Classless Inter-Domain Routing (CIDR) notation for both the IPv4 and IPv6 addresses. 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.To specify an address, you can use something like 1.2.3.4/32, where the first four octets represent your IP address and /32 is the mask. La notation CIDR IPv4 est 0.0.0.0/0 pour toutes les adresses.The IPv4 CIDR notation for all addresses is 0.0.0.0/0. Pour plus d’informations sur la notation de routage CIDR, consultez Routage CIDR (Classless InterDomain Routing).To learn more about CIDR notation, see Classless Inter-Domain Routing.

Définir une règle basée sur un point de terminaison de serviceSet a service endpoint-based rule

  • Pour l’étape 4, dans la liste déroulante Type, sélectionnez Réseau virtuel.For step 4, in the Type drop-down list, select Virtual Network.

    Capture d’écran du volet « Ajouter une restriction » avec le type Réseau virtuel sélectionné.

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.Specify the Subscription, Virtual Network, and Subnet drop-down lists, matching what you want to restrict access to.

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.By using service endpoints, you can restrict access to selected Azure virtual network subnets. Si les points de terminaison de service ne sont pas encore activés avec Microsoft.Web pour le sous-réseau que vous avez sélectionné, ils seront automatiquement activés, sauf si vous cochez la case Ignorer les points de terminaison de service Microsoft.Web manquants.If service endpoints aren't already enabled with Microsoft.Web for the subnet that you selected, they'll be automatically enabled unless you select the Ignore missing Microsoft.Web service endpoints check box. 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.The scenario where you might want to enable service endpoints on the app but not the subnet depends mainly on whether you have the permissions to enable them on the subnet.

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.If you need someone else to enable service endpoints on the subnet, select the Ignore missing Microsoft.Web service endpoints check box. Votre application sera configurée pour les points de terminaison de service en prévision de leur activation ultérieure sur le sous-réseau.Your app will be configured for service endpoints in anticipation of having them enabled later on the subnet.

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.You can't use service endpoints to restrict access to apps that run in an 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.When your app is in an App Service Environment, you can control access to it by applying IP access rules.

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).With service endpoints, you can configure your app with application gateways or other web application firewall (WAF) devices. Vous pouvez également configurer des applications à plusieurs niveaux avec des serveurs principaux sécurisés.You can also configure multi-tier applications with secure back ends. 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.For more information, see Networking features and App Service and Application Gateway integration with service endpoints.

Notes

  • Les points de terminaison de service ne sont actuellement pas pris en charge pour les applications web qui utilisent une adresse IP virtuelle IP SSL.Service endpoints aren't currently supported for web apps that use IP Secure Sockets Layer (SSL) virtual IP (VIP).

Définir une règle basée sur une étiquette de serviceSet a service tag-based rule

  • Pour l’étape 4, dans la liste déroulante Type, sélectionnez Étiquette de service.For step 4, in the Type drop-down list, select Service Tag.

    Capture d’écran du volet « Ajouter une restriction » avec le type Étiquette de service sélectionné.

Chaque étiquette de service représente une liste de plages d’adresses IP des services Azure.Each service tag represents a list of IP ranges from Azure services. La documentation sur les étiquettes de service fournit une liste de ces services et des liens vers les plages spécifiques.A list of these services and links to the specific ranges can be found in the service tag documentation.

Toutes les étiquettes de service disponibles sont prises en charge dans les règles de restriction d’accès.All available service tags are supported in access restriction rules. Par souci de simplicité, seule une liste des étiquettes les plus courantes est disponible via le Portail Azure.For simplicity, only a list of the most common tags are available through the Azure portal. 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.Use Azure Resource Manager templates or scripting to configure more advanced rules like regional scoped rules. Les étiquettes disponibles via le Portail Azure sont les suivantes :These are the tags available through Azure portal:

  • ActionGroupActionGroup
  • ApplicationInsightsAvailabilityApplicationInsightsAvailability
  • AzureCloudAzureCloud
  • AzureCognitiveSearchAzureCognitiveSearch
  • AzureEventGridAzureEventGrid
  • AzureFrontDoor.BackendAzureFrontDoor.Backend
  • AzureMachineLearningAzureMachineLearning
  • AzureTrafficManagerAzureTrafficManager
  • LogicAppsLogicApps

Modifier une règleEdit a rule

  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.To begin editing an existing access restriction rule, on the Access Restrictions page, select the rule you want to edit.

  2. Dans le volet Modifier la restriction d’accès, effectuez vos modifications, puis sélectionnez Mettre à jour la règle.On the Edit Access Restriction pane, make your changes, and then select Update rule. Les modifications sont appliquées immédiatement, y compris les changements de priorité.Edits are effective immediately, including changes in priority ordering.

    Capture d’écran du volet « Modifier la restriction d’accès » dans le portail Azure montrant les champs d’une règle de restriction d’accès existante.

    Notes

    Lorsque vous modifiez une règle, vous ne pouvez pas basculer entre les types de règles.When you edit a rule, you can't switch between rule types.

Supprimer une règleDelete a rule

Pour supprimer une règle, sur la page Restrictions d’accès, sélectionnez les points de suspension ( ... ) en regard de la règle à supprimer, puis sélectionnez Supprimer.To delete a rule, on the Access Restrictions page, select the ellipsis (...) next to the rule you want to delete, and then select Remove.

Capture d’écran de la page « Restrictions d’accès » montrant les points de suspension « Supprimer » en regard de la règle de restriction d’accès à supprimer.

Scénarios avancés de restriction d’accèsAccess restriction advanced scenarios

Les sections suivantes décrivent certains scénarios avancés utilisant des restrictions d’accès.The following sections describe some advanced scenarios using access restrictions.

Filtrer par en-tête HTTPFilter by http header

Dans le cadre d’une règle, vous pouvez ajouter des filtres d’en-tête HTTP supplémentaires.As part of any rule, you can add additional http header filters. Les noms d’en-têtes HTTP suivants sont pris en charge :The following http header names are supported:

  • X-Forwarded-ForX-Forwarded-For
  • X-Forwarded-HostX-Forwarded-Host
  • X-Azure-FDIDX-Azure-FDID
  • X-FD-HealthProbeX-FD-HealthProbe

Pour chaque nom d’en-tête, vous pouvez ajouter jusqu’à 8 valeurs séparées par des virgules.For each header name you can add up to 8 values separated by comma. 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.The http header filters are evaluated after the rule itself and both conditions must be true for the rule to apply.

Règles à plusieurs sourcesMulti-source rules

Les règles à plusieurs sources vous permettent de combiner jusqu’à 8 plages d’adresses IP ou 8 étiquettes de service dans une seule règle.Multi-source rules allow you to combine up to 8 IP ranges or 8 Service Tags in a single rule. Vous pouvez les utiliser si vous avez plus de 512 plages d’adresses IP ou si vous souhaitez créer des règles logiques où plusieurs plages d’adresses IP sont combinées avec un seul filtre d’en-tête HTTP.You might use this if you have more than 512 IP ranges or you want to create logical rules where multiple IP ranges are combined with a single http header filter.

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.Multi-source rules are defined the same way you define single-source rules, but with each range separated with comma.

Exemple PowerShell :PowerShell example:

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 uniqueBlock a single IP address

Lorsque vous ajoutez votre première règle de restriction d’accès, le service ajoute une règle Tout refuser ayant la priorité 2147483647.When you add your first access restriction rule, the service adds an explicit Deny all rule with a priority of 2147483647. Dans la pratique, la règle explicite Tout refuser est la dernière règle exécutée et bloque l’accès à toute adresse IP n’étant pas autorisée de manière explicite par une règle Autoriser.In practice, the explicit Deny all rule is the final rule to be executed, and it blocks access to any IP address that's not explicitly allowed by an Allow rule.

Si vous souhaitez bloquer explicitement une seule adresse IP ou un bloc d’adresses IP, mais autoriser l’accès à tout autre élément, ajoutez une règle explicite Tout autoriser.For a scenario where you want to explicitly block a single IP address or a block of IP addresses, but allow access to everything else, add an explicit Allow All rule.

Capture d’écran de la page « Restrictions d’accès » dans le portail Azure montrant une seule adresse IP bloquée.

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

Outre la possibilité de contrôler l’accès à votre application, vous pouvez également restreindre l’accès au site SCM utilisé par votre application.In addition to being able to control access to your app, you can restrict access to the SCM site that's used by your app. Le site SCM est le point de terminaison de déploiement web, ainsi que la console Kudu.The SCM site is both the web deploy endpoint and the Kudu console. 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.You can assign access restrictions to the SCM site from the app separately or use the same set of restrictions for both the app and the SCM site. Lorsque vous activez la case à cocher Restrictions identiques à <app name> , tout reste vide. Si vous décochez la case, les paramètres de votre site SCM sont réappliqués.When you select the Same restrictions as <app name> check box, everything is blanked out. If you clear the check box, your SCM site settings are reapplied.

Capture d’écran de la page « Restrictions d’accès » dans le portail Azure indiquant qu’aucune restriction d’accès n’est définie pour le site SCM ou l’application.

Restreindre l’accès à une instance Azure Front Door spécifiqueRestrict access to a specific Azure Front Door instance

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.Traffic from Azure Front Door to your application originates from a well known set of IP ranges defined in the AzureFrontDoor.Backend service tag. Une règle de restriction d’étiquette de service vous permet de limiter le trafic à partir d’Azure Front Door.Using a service tag restriction rule, you can restrict traffic to only originate from Azure Front Door. Pour garantir que le trafic provient uniquement 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.To ensure traffic only originates from your specific instance, you will need to further filter the incoming requests based on the unique http header that Azure Front Door sends.

Capture d’écran de la page « Restrictions d’accès » dans le Portail Azure montrant comment ajouter une restriction Azure Front Door.

Exemple PowerShell :PowerShell example:

$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 des règles de restriction d’accès par programmationManage access restriction rules programmatically

Vous pouvez ajouter des restrictions d’accès par programmation en procédant de l’une des façons suivantes :You can add access restrictions programmatically by doing either of the following:

  • Utilisez Azure CLI.Use the Azure CLI. Par exemple :For example:

    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
    
  • Utilisez Azure PowerShell.Use Azure PowerShell. Par exemple :For example:

    Add-AzWebAppAccessRestrictionRule -ResourceGroupName "ResourceGroup" -WebAppName "AppName"
        -Name "Ip example rule" -Priority 100 -Action Allow -IpAddress 122.133.144.0/24
    

    Notes

    L’utilisation d’étiquettes de service, d’en-têtes HTTP ou de règles à plusieurs sources nécessite au moins la version 5.7.0.Working with service tags, http headers or multi-source rules requires at least version 5.7.0. Vous pouvez vérifier la version du module installé avec : Get-InstalledModule -Name AzYou can verify the version of the installed module with: Get-InstalledModule -Name Az

Vous pouvez également définir les valeurs manuellement en procédant de l’une des façons suivantes :You can also set values manually by doing either of the following:

  • Utilisez une opération PUT de l’API REST Azure sur la configuration de l’application dans Azure Resource Manager.Use an Azure REST API PUT operation on the app configuration in Azure Resource Manager. Dans Azure Resource Manager, ces informations se trouvent à l’emplacement suivant :The location for this information in Azure Resource Manager is:

    management.azure.com/subscriptions/subscription ID/resourceGroups/resource groups/providers/Microsoft.Web/sites/web app name/config/web?api-version=2020-06-01management.azure.com/subscriptions/subscription ID/resourceGroups/resource groups/providers/Microsoft.Web/sites/web app name/config/web?api-version=2020-06-01

  • Utilisez un modèle Resource Manager.Use a Resource Manager template. Par exemple, vous pouvez utiliser resources.azure.com et modifier le bloc ipSecurityRestrictions pour ajouter le code JSON nécessaire.As an example, you can use resources.azure.com and edit the ipSecurityRestrictions block to add the required JSON.

    La syntaxe JSON de l’exemple précédent est la suivante :The JSON syntax for the earlier example is:

    {
      "properties": {
        "ipSecurityRestrictions": [
          {
            "ipAddress": "122.133.144.0/24",
            "action": "Allow",
            "priority": 100,
            "name": "IP example rule"
          }
        ]
      }
    }
    

    Voici la syntaxe JSON d’un exemple avancé utilisant une étiquette de service et une restriction d’en-tête HTTP :The JSON syntax for an advanced example using service tag and http header restriction is:

    {
      "properties": {
        "ipSecurityRestrictions": [
          {
            "ipAddress": "AzureFrontDoor.Backend",
            "tag": "ServiceTag",
            "action": "Allow",
            "priority": 100,
            "name": "Azure Front Door example",
            "headers": {
              "x-azure-fdid": [
                "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
              ]
            }
          }
        ]
      }
    }
    

Configurer des restrictions d’accès Azure FunctionsSet up Azure Functions access restrictions

Les restrictions d’accès sont également disponibles pour les applications de fonctions, avec les mêmes fonctionnalités que les plans App Service.Access restrictions are also available for function apps with the same functionality as App Service plans. 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.When you enable access restrictions, you also disable the Azure portal code editor for any disallowed IPs.

Étapes suivantesNext steps

Restrictions d’accès pour Azure FunctionsAccess restrictions for Azure Functions
Intégration d’Application Gateway par des points de terminaison de serviceApplication Gateway integration with service endpoints