Restricciones de acceso de Azure App ServiceAzure App Service Access Restrictions

Las restricciones de acceso permiten definir una lista ordenada por prioridad de elementos permitidos o denegados con la que se controla el acceso de red a la aplicación.Access restrictions enable you to define a priority ordered allow/deny list that controls network access to your app. La lista puede incluir direcciones IP o subredes de Azure Virtual Network.The list can include IP addresses or Azure Virtual Network subnets. Cuando hay una o varias entradas, hay una denegación implícita de todo lo que existe al final de la lista.When there are one or more entries, there is then an implicit "deny all" that exists at the end of the list.

La funcionalidad de restricciones de acceso se aplica a todas las cargas de trabajo hospedadas en App Service, lo que incluye aplicaciones web, aplicaciones de API, aplicaciones de Linux, aplicaciones de contenedor de Linux e instancias de Functions.The access restrictions capability works with all App Service hosted work loads including; web apps, API apps, Linux apps, Linux container apps, and Functions.

Cuando se realiza una solicitud a la aplicación, la dirección de origen se evalúa con respecto a una serie de reglas de dirección IP de la lista de restricciones de acceso.When a request is made to your app, the FROM address is evaluated against the IP address rules in your access restrictions list. Si la dirección de origen está en una subred configurada con puntos de conexión de servicio a Microsoft.Web, la subred de origen se compara con las reglas de red virtual de la lista de restricciones de acceso.If the FROM address is in a subnet that is configured with service endpoints to Microsoft.Web, then the source subnet is compared against the virtual network rules in your access restrictions list. 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.If the address is not allowed access based on the rules in the list, the service replies with an HTTP 403 status code.

La funcionalidad de restricciones de acceso se implementa en los roles front-end de App Service, que son de nivel superior de los hosts de trabajo donde el código se ejecuta.The access restrictions capability is implemented in the App Service front-end roles, which are upstream of the worker hosts where your code runs. Por lo tanto, las restricciones de acceso son listas de control de acceso de red de facto.Therefore, access restrictions are effectively network ACLs.

La capacidad de restringir el acceso a la aplicación web desde una instancia de Azure Virtual Network (red virtual) se denomina puntos de conexión de servicio.The ability to restrict access to your web app from an Azure Virtual Network (VNet) is called service endpoints. Los puntos de conexión de servicio permiten restringir el acceso de un servicio multiinquilino de las subredes seleccionadas.Service endpoints enable you to restrict access to a multi-tenant service from selected subnets. Se debe habilitar tanto en el lado de la red como en el servicio con el que se está habilitando.It must be enabled on both the networking side as well as the service that it is being enabled with. No funciona para restringir el tráfico a aplicaciones hospedadas en un App Service Environment.It does not work to restrict traffic to apps that are hosted in an App Service Environment. Si está en un App Service Environment, puede controlar el acceso a la aplicación con reglas de direcciones IP.If you are in an App Service Environment, you can control access to your app with IP address rules.

Flujo de restricciones de acceso

Incorporación y edición de reglas de restricciones de acceso en el portalAdding and editing access restriction rules in the portal

Para agregar una regla de restricción de acceso a la aplicación, use el menú para abrir Red>Restricciones de acceso y haga clic en Configurar restricciones de acceso.To add an access restriction rule to your app, use the menu to open Network>Access Restrictions and click on Configure Access Restrictions

Opciones de red de App Service

En la interfaz de las restricciones de acceso puede revisar la lista de reglas de restricción de acceso definidas en relación con la aplicación.From the Access Restrictions UI, you can review the list of access restriction rules defined for your app.

Lista de restricciones de acceso

La lista mostrará todas las restricciones actuales que hay en la aplicación.The list will show all of the current restrictions that are on your app. Si tiene una restricción de red virtual en la aplicación, la tabla mostrará si los puntos de conexión del servicio están habilitados para Microsoft.Web.If you have a VNet restriction on your app, the table will show if service endpoints are enabled for Microsoft.Web. Si no hay ninguna restricción definida en la aplicación, esta será accesible desde cualquier lugar.When there are no defined restrictions on your app, your app will be accessible from anywhere.

Adición de reglas de direcciones IPAdding IP address rules

Puede hacer clic en [+] Agregar regla para agregar una nueva regla de restricciones de acceso.You can click on [+] Add rule to add a new access restriction rule. Una vez que agregue una regla, entrará en vigor de inmediato.Once you add a rule, it will become effective immediately. Las reglas se aplican en orden de prioridad, empezando por el número más bajo y en ascenso.Rules are enforced in priority order starting from the lowest number and going up. Hay una denegación implícita de todo lo que esté en vigor una vez que agregue incluso una sola regla.There is an implicit deny all that is in effect once you add even a single rule.

Al crear una regla, debe seleccionar Permitir/Denegar y, también, el tipo de regla.When creating a rule, you must select allow/deny and also the type of rule. También debe proporcionar el valor de prioridad y a qué se está restringiendo el acceso.You are also required to provide the priority value and what you are restricting access to. Opcionalmente, puede agregar un nombre y una descripción a la regla.You can optionally add a name, and description to the rule.

Adición de una regla de restricción de acceso de IP

Para definir una regla basada en direcciones IP, seleccione el tipo IPv4 o IPv6.To set an IP address based rule, select a type of IPv4 or IPv6. La notación de dirección IP debe ser CIDR tanto para direcciones IPv4 como IPv6.IP Address notation must be specified in CIDR notation for both IPv4 and IPv6 addresses. Para especificar una dirección exacta, 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.To specify an exact 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 notación CIDR IPv4 para todas las direcciones es 0.0.0.0/0.The IPv4 CIDR notation for all addresses is 0.0.0.0/0. Para más información acerca de la notación CIDR, puede leer Classless Inter-Domain Routing (Enrutamiento interdominios sin clases).To learn more about CIDR notation, you can read Classless Inter-Domain Routing.

Puntos de conexión del servicioService endpoints

Los puntos de conexión de servicio permiten restringir el acceso a las subredes de Azure Virtual Network.Service endpoints enables you to restrict access to selected Azure virtual network subnets. Para restringir el acceso a una subred específica, cree una regla de restricción de tipo Virtual Network.To restrict access to a specific subnet, create a restriction rule with a type of Virtual Network. Puede elegir la suscripción, la red virtual y la subred en las que quiera permitir o denegar el acceso.You can pick the subscription, VNet, and subnet you wish to allow or deny access with. Si los puntos de conexión de servicio no están habilitados aún con Microsoft.Web en relación con la subred seleccionada, se habilitarán automáticamente a menos que active la casilla que indica que no desea hacerlo.If service endpoints are not already enabled with Microsoft.Web for the subnet that you selected, it will automatically be enabled for you unless you check the box asking not to do that. La situación en la que convendría habilitarlos en la aplicación, pero no en la subred, tiene mucho que ver con el hecho de si se tienen los permisos para habilitar puntos de conexión de servicio en la subred o no.The situation where you would want to enable it on the app but not the subnet is largely related to if you have the permissions to enable service endpoints on the subnet or not. Si necesita acudir a alguien más para habilitar los puntos de conexión de servicio en la subred, puede activar la casilla y configurar la aplicación para puntos de conexión de servicio en previsión de que vayan a habilitarse más adelante.If you need to get somebody else to enable service endpoints on the subnet, you can check the box and have your app configured for service endpoints in anticipation of it being enabled later on the subnet.

Adición de una regla de restricción de acceso a red virtual

Los puntos de conexión de servicio no se pueden usar para restringir el acceso a las aplicaciones que se ejecutan en un App Service Environment.Service endpoints cannot be used to restrict access to apps that run in an App Service Environment. Si está en un App Service Environment, puede controlar el acceso a la aplicación con reglas de acceso de IP.When your app is in an App Service Environment, you can control access to your app with IP access rules.

Si se usan puntos de conexión de servicio, la aplicación se puede configurar con Application Gateway u otros dispositivos de WAF.With service endpoints, you can configure your app with Application Gateways or other WAF devices. También se pueden configurar aplicaciones de varios niveles con back-ends seguros.You can also configure multi-tier applications with secure backends. Para más información sobre algunas de las posibilidades, lea Características de redes de App Service e Integración de Application Gateway con puntos de conexión de servicio.For more details on some of the possibilities, read Networking features and App Service and Application Gateway integration with service endpoints.

Administración de reglas de restricción de accesoManaging access restriction rules

Puede hacer clic en cualquier fila para editar una regla de restricción de acceso existente.You can click on any row to edit an existing access restriction rule. Las modificaciones son efectivas inmediatamente, incluidos los cambios en el orden de prioridad.Edits are effective immediately including changes in priority ordering.

Edición de una regla de restricción de acceso

Al editar una regla, no se puede cambiar el tipo entre una regla de dirección IP y una regla de Virtual Network.When you edit a rule, you cannot change the type between an IP address rule and a Virtual Network rule.

Edición de una regla de restricción de acceso

Para eliminar una regla, haga clic en los puntos suspensivos ... en la regla y, a continuación, haga clic en Quitar.To delete a rule, click the ... on your rule and then click Remove.

Eliminación de una regla de restricción de acceso

Bloqueo de una única dirección IPBlocking a single IP Address

Al agregar la primera regla de restricción de IP, el servicio agregará una regla Denegar todo explícita con una prioridad de 2147483647.When adding your first IP Restriction rule, the service will add an explicit Deny all rule with a priority of 2147483647. En la práctica, la regla explícita Denegar todo será la última regla que se ejecute y bloqueará el acceso a cualquier dirección IP que no esté expresamente permitida mediante una regla Permitir.In practice, the explicit Deny all rule will be last rule executed and will block access to any IP address that is not explicitly allowed using an Allow rule.

En situaciones en las que los usuarios quieran bloquear expresamente una única dirección IP o un bloque de direcciones IP, pero permitir el acceso a todo lo demás, será necesario agregar la regla Permitir todo explícita.For the scenario where users want to explicitly block a single IP address or IP address block, but allow everything else access, it is necessary to add an explicit Allow All rule.

Bloqueo de dirección IP única

Sitio de SCMSCM site

Aparte de controlar el acceso a la aplicación, también puede restringir el acceso al sitio de SCM utilizado por la aplicación.In addition to being able to control access to your app, you can also restrict access to the scm site used by your app. El sitio de SCM es el punto de conexión de Web Deploy y, también, la consola de Kudu.The scm site is the web deploy endpoint and also the Kudu console. Puede asignar restricciones de acceso aisladas al sitio de SCM desde la aplicación o usar el mismo conjunto para la aplicación y el sitio de SCM.You can separately assign access restrictions to the scm site from the app or use the same set for both the app and the scm site. Si se activa la casilla para tener las mismas restricciones que la aplicación, todo estará en blanco. Si se desactiva, se aplicarán las configuraciones que hubiera anteriormente en el sitio de SCM.When you check the box to have the same restrictions as your app, everything is blanked out. If you uncheck the box, whatever settings you had earlier on the scm site are applied.

Lista de restricciones de acceso

Manipulación mediante programación de reglas de restricción de accesoProgrammatic manipulation of access restriction rules

La CLI de Azure y Azure PowerShell admiten la edición de restricciones de acceso.Azure CLI and Azure PowerShell has support for editing access restrictions. Ejemplo de incorporación de una restricción de acceso mediante la CLI de Azure:Example of adding an access restriction using Azure CLI:

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

Ejemplo de incorporación de una restricción de acceso mediante Azure PowerShell:Example of adding an access restriction using Azure PowerShell:

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

Los valores también se pueden establecer manualmente con una operación PUT de la API REST de Azure en la configuración de la aplicaciones de Resource Manager o mediante una plantilla de Azure Resource Manager.Values can also be set manually with an Azure REST API PUT operation on the app configuration in Resource Manager or using an Azure Resource Manager template. Por ejemplo, puede usar resources.azure.com y editar el bloque ipSecurityRestrictions para agregar el código JSON requerido.As an example, you can use resources.azure.com and edit the ipSecurityRestrictions block to add the required JSON.

La ubicación de esta información en Resource Manager es:The location for this information in Resource Manager is:

management.azure.com/subscriptions/Id. de suscripción/resourceGroups/resource groups/providers/Microsoft.Web/sites/nombre de aplicación web/config/web?api-version=2018-02-01management.azure.com/subscriptions/subscription ID/resourceGroups/resource groups/providers/Microsoft.Web/sites/web app name/config/web?api-version=2018-02-01

La sintaxis JSON para el ejemplo anterior es:The JSON syntax for the earlier example is:

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

Restricciones de acceso a las aplicaciones de funciones de AzureAzure Function App Access Restrictions

También hay restricciones de acceso disponibles para las dos aplicaciones de funciones con la misma funcionalidad que los planes de App Service.Access restrictions are also available for Function Apps with the same functionality as App Service plans. Si se habilitan restricciones de acceso, se deshabilitará el editor de código del portal en las direcciones IP no permitidas.Enabling access restrictions will disable the portal code editor for any disallowed IPs.

Pasos siguientesNext steps

Restricciones de IP de entradaAccess restrictions for Azure Function Apps

Integración de Application Gateway con puntos de conexión de servicioApplication Gateway integration with service endpoints