Integración de Application Gateway

Tres variaciones de Azure App Service requieren una configuración ligeramente diferente de la integración con Azure Application Gateway. Las variaciones incluyen App Service normal (también conocido como multiinquilino), un App Service Environment de equilibrador de carga interno (ILB) y un App Service Environment externo.

Este artículo explica cómo configurar Application Gateway con App Service (multiinquilino) mediante puntos de conexión de servicio para proteger el tráfico. El artículo también analiza consideraciones sobre el uso de puntos de conexión privados y la integración con ILB y entornos de App Service externos. Finalmente, el artículo describe cómo establecer restricciones de acceso en un sitio de Source Control Manager (SCM).

Integración con App Service (multiinquilino)

App Service (multiinquilino) tiene un punto de conexión público orientado a Internet. Al utilizar los puntos de conexión de servicio, puede permitir el tráfico solo desde una subred específica dentro de una red virtual de Azure y bloquear todo lo demás. En el siguiente escenario, se utiliza esta funcionalidad para garantizar que una instancia de App Service pueda recibir tráfico solo desde una puerta de enlace de aplicaciones específica.

Diagram that shows the internet flowing to an application gateway in an Azure virtual network and then flowing through a firewall icon to instances of apps in App Service.

Esta configuración consta de dos partes, además de crear la instancia de App Service y la puerta de enlace de aplicaciones. La primera parte consiste en habilitar puntos finales de servicio en la subred de la red virtual donde se implementa la puerta de enlace de aplicaciones. Los puntos de conexión del servicio garantizan que todo el tráfico de red que sale de la subred hacia App Service esté etiquetado con el ID de subred específico.

La segunda parte consiste en establecer una restricción de acceso en la aplicación web específica para garantizar que solo se permita el tráfico etiquetado con este ID de subred específico. Puede configurar la restricción de acceso utilizando diferentes herramientas, según sus preferencias.

Configurar servicios mediante Azure Portal

Con Azure Portal, debe seguir cuatro pasos para crear y configurar la instalación de App Service y Application Gateway. Si ya tiene los recursos, puede saltarse los primeros pasos.

  1. Cree una instancia de App Service mediante uno de los inicios rápidos de la documentación de App Service. Un ejemplo es el inicio rápido de .NET Core.
  2. Cree una puerta de enlace de aplicaciones mediante el inicio rápido del portal, pero omita la sección sobre cómo agregar destinos de back-end.
  3. Configure App Service como back-end en Application Gateway, pero omita la sección sobre cómo restringir el acceso.
  4. Cree la restricción de acceso mediante puntos finales de servicio.

Ahora puede acceder a App Service a través de Application Gateway. Si intenta acceder directamente a App Service, debería recibir un error HTTP 403 que indica que la aplicación web ha bloqueado el acceso.

Screenshot shows the text of Error 403 - Forbidden.

Configurar servicios mediante una plantilla de Azure Resource Manager

La La plantilla de implementación de Azure Resource Manager crea un escenario completo. El escenario consta de una instancia de App Service que está bloqueada con puntos de conexión de servicio y una restricción de acceso para recibir tráfico solo desde Application Gateway. La plantilla incluye muchos valores predeterminados inteligentes y sufijos únicos agregados a los nombres de los recursos para que sea simple. Para invalidarlos, tiene que clonar el repositorio o descargar la plantilla y editarla.

Para aplicar la plantilla, puede usar el botón Implementar en Azure en la descripción de la plantilla. O bien, puede usar el código adecuado de PowerShell o la CLI de Azure.

Configurar servicios mediante la CLI de Azure

El ejemplo de la CLI de Azure crea una instancia de App Service que está bloqueada con puntos de conexión de servicio y una restricción de acceso para recibir tráfico solo desde Application Gateway. Si solo necesita aislar el tráfico a una instancia de App Service existente desde una puerta de enlace de aplicaciones existente, use el siguiente comando:

az webapp config access-restriction add --resource-group myRG --name myWebApp --rule-name AppGwSubnet --priority 200 --subnet mySubNetName --vnet-name myVnetName

En la configuración predeterminada, el comando garantiza la configuración del punto de conexión del servicio en la subred y la restricción de acceso en App Service.

Consideraciones sobre el uso de puntos de conexión privados

Como alternativa a los puntos de conexión de servicio, puede usar puntos de conexión privados para proteger el tráfico entre Application Gateway y App Service (multiinquilino). Debe asegurarse de que Application Gateway pueda usar DNS para resolver la dirección IP privada de las aplicaciones de App Service. Alternativamente, puede usar la dirección IP privada en el grupo de back-end y anular el nombre de host en la configuración HTTP.

Diagram that shows traffic flowing to an application gateway in an Azure virtual network and then flowing through a private endpoint to instances of apps in App Service.

Application Gateway almacena en caché los resultados de búsqueda de DNS. Si usa nombres de dominio completos (FQDN) y confía en la búsqueda de DNS para obtener la dirección IP privada, es posible que deba reiniciar la puerta de enlace de aplicaciones si la actualización de DNS o el vínculo a una zona DNS privada de Azure se produjo después de configurar la copia de seguridad. piscina final.

Para reiniciar la puerta de enlace de aplicaciones, deténgala e iníciela mediante la CLI de Azure:

az network application-gateway stop --resource-group myRG --name myAppGw
az network application-gateway start --resource-group myRG --name myAppGw

Consideraciones sobre un App Service Environment de ILB

Un App Service Environment de ILB no se expone a Internet. El tráfico entre la instancia y una puerta de enlace de aplicaciones ya está aislado en la red virtual. Para configurar un App Service Environment de ILB e integrarlo con una puerta de enlace de aplicaciones mediante el Azure Portal, consulte la guía paso a paso.

Si desea asegurarse de que solo el tráfico de la subred de Application Gateway llegue a App Service Environment, puede configurar un grupo de seguridad de red (NSG) que afecte a todas las aplicaciones web en App Service Environment. Para NSG, puede especificar el rango de IP de la subred y, opcionalmente, los puertos (80/443). Para que App Service Environment funcione correctamente, asegúrese de no anular las reglas de NSG requeridas.

Para aislar el tráfico a una aplicación web individual, debe usar restricciones de acceso basadas en IP, porque los puntos finales de servicio no funcionan con un App Service Environment. La dirección IP debe ser la IP privada de la puerta de enlace de la aplicación.

Consideraciones para un App Service Environment externo

Un App Service Environment externo tiene un equilibrador de carga orientado al público, como App Service multiinquilino. Los puntos de conexión de servicio no funcionan para una App Service Environment. Es por eso que tiene que usar restricciones de acceso basadas en IP mediante la dirección IP pública de la puerta de enlace de aplicaciones. Para crear un App Service Environment externo mediante Azure Portal, puede seguir este inicio rápido.

Consideraciones para un sitio de Kudu/SCM

El sitio SCM, también conocido como Kudu, es un sitio de administración que existe para todas las aplicaciones web. No es posible usar el proxy inverso del sitio SCM. Lo más probable es que también quieras bloquearlo en direcciones IP individuales o en una subred específica.

Si desea utilizar las mismas restricciones de acceso que el sitio principal, puede heredar la configuración utilizando el siguiente comando:

az webapp config access-restriction set --resource-group myRG --name myWebApp --use-same-restrictions-for-scm-site

Si desea agregar restricciones de acceso individuales para el sitio SCM, puede usar la marca --scm-site:

az webapp config access-restriction add --resource-group myRG --name myWebApp --scm-site --rule-name KudoAccess --priority 200 --ip-address 208.130.0.0/16

Consideraciones para usar el dominio predeterminado

Configurar Application Gateway para anular el nombre de host y usar el dominio predeterminado de App Service (normalmente azurewebsites.net) es la forma más sencilla de configurar la integración. No requiere configurar un dominio y un certificado personalizados en App Service.

Este artículo analiza las consideraciones generales para anular el nombre de host original. En App Service, hay dos escenarios en los que debe prestar atención a esta configuración.

Autenticación

Cuando usa la característica de autenticación en App Service (también conocida como autenticación sencilla), su aplicación normalmente redirige a la página de inicio de sesión. Debido a que App Service no conoce el nombre de host original de la solicitud, la redirección se realiza en el nombre de dominio predeterminado y generalmente genera un error.

Para solucionar el redireccionamiento predeterminado, puede configurar la autenticación para inspeccionar un encabezado reenviado y adaptar el dominio de redireccionamiento al dominio original. Application Gateway usa un encabezado denominado X-Original-Host. Al utilizar la configuración basada en archivos para configurar la autenticación, puede configurar App Service para que se adapte al nombre de host original. Agregue esta configuración al archivo de configuración:

{
    ...
    "httpSettings": {
        "forwardProxy": {
            "convention": "Custom",
            "customHostHeaderName": "X-Original-Host"
        }
    }
    ...
}

Afinidad de ARR

En las implementaciones de varias instancias, la afinidad del ARR garantiza que las solicitudes de cliente se enrutan a la misma instancia durante la vida útil de la sesión. La afinidad de ARR no funciona con invalidaciones de nombre de host. Para que la afinidad de sesión funcione, debe configurar un dominio y un certificado personalizado idénticos en App Service y en Application Gateway y no invalidar el nombre de host.

Pasos siguientes

Para obtener más información sobre App Service Environment, consulte la documentación de App Service Environment.

Para proteger aún más su aplicación web, puede encontrar información sobre Azure Web Application Firewall en Application Gateway en la documentación de Azure Web Application Firewall.

Para implementar un sitio seguro y resistente con un dominio personalizado en App Service mediante Azure Front Door o Application Gateway, consulte este tutorial.