Configuración de las restricciones de acceso de Azure App Service

Al configurar las restricciones de acceso, puede definir una lista ordenada por prioridad de elementos permitidos o denegados con la que se controla el acceso de red a la aplicación. La lista puede incluir direcciones IP o subredes de Azure Virtual Network. Si hay una o varias entradas, existe un valor denegar todo implícito al final de la lista. Para más información sobre las restricciones de acceso, vaya a la introducción a las restricciones de acceso.

La capacidad de restricción de acceso funciona con todas las cargas de trabajo hospedadas por Azure App Service. Las cargas de trabajo pueden incluir aplicaciones web, aplicaciones de API, aplicaciones Linux, contenedores personalizados de Linux e instancias de Functions.

Cuando se realiza una solicitud a la aplicación, la dirección del remitente se evalúa con respecto a las reglas de la lista de restricción de acceso. Si la dirección del remitente está en una subred configurada con puntos de conexión de servicio para Microsoft.Web, la subred de origen se compara con las reglas de red virtual de la lista de restricciones de acceso. Si la dirección no tiene permitido el acceso según las reglas de la lista, el servicio responde con un código de estado HTTP 403.

La capacidad de restricción de acceso se implementa en los roles de front-end de App Service, que están en un nivel superior de los hosts de trabajo donde se ejecuta el código. Por lo tanto, las restricciones de acceso son listas de control de acceso de red de facto.

La capacidad de restringir el acceso a la aplicación web desde una instancia de Azure Virtual Network se obtiene mediante puntos de conexión de servicio. Con los puntos de conexión de servicio, puede restringir el acceso de un servicio multiinquilino de las subredes seleccionadas. No funciona para restringir el tráfico a aplicaciones hospedadas en un entorno App Service Environment. Si está en un entorno App Service Environment, puede controlar el acceso a la aplicación con reglas de direcciones IP.

Nota

Los puntos de conexión de servicio se deben habilitar tanto en el lado de la red como en el servicio de Azure con el que se están habilitando. Para obtener una lista de los servicios de Azure que admiten puntos de conexión de servicio, consulte Puntos de conexión de servicio de red virtual.

Diagram of the flow of access restrictions.

Administración de reglas de restricción de acceso en el portal

Para agregar una regla de restricción de acceso a la aplicación, siga estos pasos:

  1. Inicie sesión en Azure Portal.

  2. Seleccione la aplicación a la que no quiere agregar restricciones de acceso.

  3. En el menú de la izquierda, seleccione Redes.

  4. En la página Redes, en Configuración del tráfico entrante, seleccione el valor Acceso a la red pública.

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

  5. En la página Restricciones de acceso, revise la lista de reglas de restricción de acceso definidas para la aplicación.

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

    La lista muestra todas las restricciones actuales referentes a la aplicación. Si tiene una restricción de red virtual en la aplicación, la tabla muestra si los puntos de conexión de servicio están habilitados para Microsoft.Web. Si no se definen restricciones en la aplicación y la regla no coincidente no está establecida en Denegar, la aplicación es accesible desde cualquier lugar.

Permisos

Se necesitan los siguientes permisos de control de acceso basado en roles en la subred o en un nivel superior para configurar restricciones de acceso mediante Azure Portal, la CLI o al establecer directamente las propiedades de configuración del sitio:

Acción Descripción
Microsoft.Web/sites/config/read Obtiene las opciones de configuración de Web Apps
Microsoft.Web/sites/config/write Actualiza las opciones de configuración de Web Apps
Microsoft.Network/virtualNetworks/subnets/joinViaServiceEndpoint/action* Combina un recurso como una cuenta de almacenamiento o una instancia de SQL Database con una subred
Microsoft.Web/sites/write** Actualizar la configuración de la aplicación web

*solo es necesario al agregar una regla de red virtual (punto de conexión de servicio).

**solo es necesario si actualiza las restricciones de acceso mediante Azure Portal.

Si va a agregar una regla basada en puntos de conexión de servicio y la red virtual está en una suscripción diferente a la de la aplicación, debe asegurarse de que la suscripción con la red virtual esté registrada con el proveedor de recursos Microsoft.Web. Puede registrar explícitamente el proveedor siguiendo esta documentación, pero también se registra automáticamente al crear la primera aplicación web en una suscripción.

Incorporación de una regla de restricción de acceso

Para agregar una regla de restricción de acceso a la aplicación, en el panel Restricciones de acceso, seleccione Agregar. La regla solo es efectiva después de guardarla.

Las reglas se aplican en orden de prioridad, empezando por el número más bajo en la columna Prioridad. Si no configura una regla no coincidente, se aplica una denegación implícita después de agregar incluso una sola regla.

En el panel Agregar restricción de acceso, cuando cree una regla, haga lo siguiente:

  1. En Acción, seleccione Permitir o Denegar.

    Screenshot of the 'Add Access Restriction' pane.

  2. Opcionalmente, escriba un nombre y una descripción para la regla.

  3. En el cuadro Prioridad, escriba un valor de prioridad.

  4. En la lista desplegable Tipo, seleccione el tipo de regla. En las siguientes secciones se describen los distintos tipos de reglas.

  5. Seleccione Agregar regla después de escribir la entrada específica de la regla para agregar la regla a la lista.

Por último, seleccione Guardar de vuelta en la página Restricciones de acceso.

Nota:

  • Hay un límite de 512 reglas de restricción de acceso. Si necesita más de 512 reglas de restricción de acceso, se sugiere instalar un producto de seguridad independiente, como Azure Front Door, Azure Application Gateway o un WAF alternativo.

Establecimiento de una regla basada en direcciones IP

Siga el procedimiento descrito en la sección anterior, pero con la siguiente adición:

  • En el paso 4, en la lista desplegable Tipo, seleccione IPv4 o IPv6.

Especifique el Bloque de direcciones IP en la notación Enrutamiento de interdominios sin clases (CIDR) para las direcciones IPv4 e iPv6. Para especificar una dirección, puede usar un formato como 1.2.3.4/32, donde los cuatro primeros octetos representan la dirección IP y /32 es la máscara. La notación CIDR IPv4 para todas las direcciones es 0.0.0.0/0. Para más información acerca de la notación CIDR, consulte Enrutamiento de interdominios sin clases.

Nota

Las reglas de restricción de acceso basadas en IP solo controlan los intervalos de direcciones de red virtual cuando la aplicación se encuentra en una instancia de App Service Environment. Si su aplicación se encuentra en el servicio multiinquilino, debe usar puntos de conexión de servicio para restringir el tráfico a determinadas subredes de la red virtual.

Establecimiento de una regla basada en un punto de conexión de servicio

  • En el paso 4, en la lista desplegable Tipo, seleccione Red virtual.

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

En las listas desplegables Suscripción, Red virtual y Subred, especifique a qué quiere restringir el acceso.

Con los puntos de conexión de servicio, puede restringir el acceso a las subredes de Azure Virtual Network. Si los puntos de conexión de servicio ya no están habilitados con Microsoft.Web para la subred seleccionada, se habilitan automáticamente a menos que active la casilla Omitir los puntos de conexión de servicio de Microsoft.Web que faltan. La situación en la que convendría habilitar puntos de conexión de servicio en la aplicación pero no en la subred depende fundamentalmente de si se tienen los permisos para habilitarlos en la subred.

Si necesita que otra persona habilite los puntos de conexión de servicio en la subred, active la casilla Omitir los puntos de conexión de servicio de Microsoft.Web que faltan. La aplicación se configura para los puntos de conexión de servicio en previsión de que se habiliten posteriormente en la subred.

No puede usar puntos de conexión de servicio para restringir el acceso a las aplicaciones que se ejecutan en un entorno App Service Environment. Si la aplicación está en un entorno App Service Environment, puede controlar el acceso a ella con reglas de acceso de IP.

Con puntos de conexión de servicio, la aplicación se puede configurar con puertas de enlace de aplicación u otros dispositivos de firewall de aplicaciones web (WAF). También se pueden configurar aplicaciones de varios niveles con back-ends seguros. Para más información, lea Características de redes de App Service e Integración de Application Gateway con puntos de conexión de servicio.

Nota:

  • Actualmente no se admiten puntos de conexión de servicio para las aplicaciones web que usan enlaces TLS/SSL basados en IP con una dirección IP virtual (VIP).

Establecimiento de una regla basada en una etiqueta de servicio

  • En el paso 4, en la lista desplegable Tipo, seleccione Etiqueta de servicio.

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

Todas las etiquetas de servicio disponibles se admiten en las reglas de restricción de acceso. Cada etiqueta de servicio representa una lista de intervalos IP de servicios de Azure. Puede encontrar una lista de estos servicios y vínculos a los intervalos específicos en la documentación de la etiqueta de servicio. Use plantillas de Azure Resource Manager o scripting para configurar reglas más avanzadas, como las reglas de ámbito regional.

Edición de una regla

  1. Para empezar a editar una regla de restricción de acceso existente, en la página Restricciones de acceso, seleccione la regla que quiere editar.

  2. En el panel Editar restricción de acceso, realice los cambios y seleccione Actualizar regla.

  3. Seleccione Guardar para guardar los cambios.

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

    Nota:

    Cuando se edita una regla, no se puede cambiar entre tipos de regla.

Eliminar una regla

  1. Para eliminar una regla, en la página Restricciones de acceso, compruebe la regla o reglas que quiere eliminar y luego seleccione Eliminar.

  2. Seleccione Guardar para guardar los cambios.

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

Escenarios avanzados de restricción de acceso

En las secciones siguientes se describen algunos escenarios avanzados que usan restricciones de acceso.

Filtrar por encabezado http

Como parte de cualquier regla, puede agregar filtros de encabezados HTTP. Se admiten los siguientes nombres de encabezados http:

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

Para cada nombre de encabezado, puede agregar hasta ocho valores separados por comas. Los filtros de encabezados http se evalúan después de la propia regla y deben cumplirse las dos condiciones para que se aplique la regla.

Reglas de varios orígenes

Las reglas de varios orígenes permiten combinar hasta ocho intervalos IP u ocho etiquetas de servicio en una sola regla. Las reglas de varios orígenes se usan si tiene más de 512 intervalos IP o si desea crear reglas lógicas. Las reglas lógicas podrían ser donde se combinan varios intervalos IP con un único filtro de encabezado HTTP.

Las reglas de varios orígenes se definen de la misma manera que se definen las reglas de un solo origen, pero con cada intervalo separado por una coma.

Ejemplo de 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

Bloqueo de una dirección IP única

En un escenario en el que quiera bloquear explícitamente una sola dirección IP o un bloque de direcciones IP, pero permitir el acceso a todo lo demás, debe agregar una regla de denegación para la dirección IP específica y configurar la acción de regla no coincidente en Permitir.

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

Restricción del acceso a un sitio de SCM

Aparte de controlar el acceso a la aplicación, también puede restringir el acceso al sitio de SCM (herramienta avanzada) que utiliza la aplicación. El sitio de SCM es el punto de conexión de Web Deploy y la consola de Kudu. Puede asignar restricciones de acceso al sitio de SCM desde la aplicación de manera independiente o usar el mismo conjunto de restricciones para la aplicación y el sitio de SCM. Al activar la casilla Usar reglas del sitio principal, la lista de reglas se oculta y se usan las reglas del sitio principal. Si desactiva la casilla, vuelve a aparecer la configuración del sitio de SCM.

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

Restricción del acceso a una instancia específica de Azure Front Door

El tráfico de Azure Front Door a la aplicación se origina en un conjunto conocido de intervalos IP definidos en la etiqueta de servicio AzureFrontDoor.Backend. Con una regla de restricción de etiquetas de servicio, puede restringir el tráfico al que se origina en Azure Front Door. Para asegurarse de que el tráfico se origina únicamente en la instancia específica, tiene que filtrar aún más las solicitudes entrantes en función del encabezado HTTP único que envía Azure Front Door.

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

Ejemplo de 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}

Administración de la restricción de acceso mediante programación

Puede administrar la restricción de acceso mediante programación. A continuación encontrará ejemplos de cómo agregar reglas a restricciones de acceso y cómo cambiar la acción de regla no coincidente para el sitio principal y el sitio de herramientas avanzadas.

Adición de reglas de restricciones de acceso para el sitio principal

Puede agregar reglas de restricciones de acceso para el sitio principal mediante programación con una de las opciones siguientes:

Puede ejecutar el comando siguiente en Cloud Shell. Para obtener más información sobre el comando az webapp config access-restriction, consulte esta página.

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

Adición de reglas de restricciones de acceso para el sitio de herramientas avanzadas

Puede agregar reglas de restricciones de acceso para el sitio de herramientas avanzadas mediante programación con una de las opciones siguientes:

Puede ejecutar el comando siguiente en Cloud Shell. Para obtener más información sobre el comando az webapp config access-restriction, consulte esta página.

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

Cambio de la acción de regla no coincidente para el sitio principal

Puede cambiar la acción de regla no coincidente para el sitio principal mediante programación con una de las opciones siguientes:

Puede ejecutar el comando siguiente en Cloud Shell. Para obtener más información sobre el comando az resource, consulte esta página. Los valores aceptados de ipSecurityRestrictionsDefaultAction son Allow o Deny.

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

Cambio de la acción de regla no coincidente para el sitio de herramientas avanzadas

Puede cambiar la acción de regla no coincidente para el sitio de herramientas avanzadas mediante programación con una de las opciones siguientes:

Puede ejecutar el comando siguiente en Cloud Shell. Para obtener más información sobre el comando az resource, consulte esta página. Los valores aceptados de scmIpSecurityRestrictionsDefaultAction son Allow o Deny.

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

Configuración de las restricciones de acceso de Azure Functions

También hay restricciones de acceso disponibles para las aplicaciones de funciones con la misma funcionalidad que los planes de App Service. Al habilitar las restricciones de acceso, también deshabilita el editor de código de Azure Portal en las direcciones IP no permitidas.

Pasos siguientes

Restricciones de acceso para Azure Functions
Integración de Application Gateway con puntos de conexión de servicio
Escenarios avanzados de restricción de acceso en Azure App Service (entrada de blog)