Configurar as restrições de acesso ao Serviço de Aplicativo do Azure

Ao configurar as restrições de acesso, você pode definir uma lista de permitidos/negações ordenada de prioridade que controla o acesso do seu aplicativo à rede. Essa lista pode incluir endereços IP ou sub-redes da Rede Virtual do Azure. Quando há uma ou mais entradas, existe uma regra negar tudo implícita no final da lista. Para saber mais sobre as restrições de acesso, vá para a visão geral das restrições de acesso.

A funcionalidade de restrição de acesso funciona com todas as cargas de trabalho hospedadas no Serviço de Aplicativo do Azure. As cargas de trabalho podem incluir aplicativos Web, aplicativos de API, aplicativos do Linux, contêineres personalizados do Linux e Functions.

Quando uma solicitação for feita ao seu aplicativo, o endereço FROM será avaliado com relação às regras na sua lista de restrições de acesso. Se o endereço FROM estiver em uma sub-rede configurada com pontos de extremidade de serviço para Microsoft.Web, a sub-rede de origem será comparada com as regras de rede virtual em sua lista de restrições de acesso. Se o endereço não receber o acesso com base nas regras na lista, o serviço responderá com um código de status HTTP 403.

A funcionalidade de restrições de acesso é implementada nas funções de front-end do Serviço de Aplicativo que são enviadas upstream dos hosts de trabalho em que o seu código é executado. Portanto, as restrições de acesso são efetivamente as ACLs (listas de controle de acesso) de rede.

A capacidade de restringir o acesso ao seu aplicativo Web a partir de uma rede virtual do Azure usa pontos de extremidade de serviço. Com os pontos de extremidade de serviço, você pode restringir o acesso a um serviço multilocatário de sub-redes selecionadas. Eles não funcionam para restringir o tráfego para aplicativos hospedados em um Ambiente do Serviço de Aplicativo. Se você estiver em um Ambiente do Serviço de Aplicativo, poderá controlar o acesso ao seu aplicativo aplicando regras de endereço IP.

Observação

Os pontos de extremidade de serviço precisam ser habilitados no lado da rede e no serviço do Azure com o qual eles estão sendo habilitados. Para obter uma lista de serviços do Azure que dão suporte a pontos de extremidade de serviço, confira Pontos de extremidade de serviço da Rede Virtual.

Diagram of the flow of access restrictions.

Gerenciar regras de restrição de acesso no portal

Para adicionar uma regra de restrição de acesso ao seu aplicativo, execute as seguintes etapas:

  1. Entre no portal do Azure.

  2. Selecione o aplicativo ao qual você deseja adicionar restrições de acesso.

  3. No menu à esquerda, selecione Rede.

  4. Na página Rede, em Configuração do tráfego de entrada, selecione a configuração Acesso à rede pública.

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

  5. Na página Restrições de Acesso, examine a lista de regras de restrição de acesso que são definidas para o seu aplicativo.

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

    A lista exibe todas as restrições atuais que são aplicadas ao aplicativo. Se você tem uma restrição de rede virtual no seu aplicativo, a tabela mostra se os pontos de extremidade de serviço estão habilitados para Microsoft.Web. Se nenhuma restrição for definida em seu aplicativo e a regra de não correspondência não estiver definida como Negar, o aplicativo poderá ser acessado de qualquer lugar.

Permissões

As seguintes permissões de controle de acesso baseadas em função na sub-rede ou em um nível superior são necessárias para configurar restrições de acesso por meio do portal do Microsoft Azure, da CLI ou ao definir diretamente as propriedades de configuração do site:

Ação Descrição
Microsoft.Web/sites/config/read Obter definições de configuração do aplicativo Web
Microsoft.Web/sites/config/write Atualizar definições de configuração do aplicativo Web
Microsoft.Network/virtualNetworks/subnets/joinViaServiceEndpoint/action* Adicionar recursos como conta de armazenamento ou banco de dados SQL a uma sub-rede
Microsoft.Web/sites/write** Atualizar configurações do Aplicativo Web

*necessário somente ao adicionar uma regra de rede virtual (ponto de extremidade de serviço).

**só é necessário se você estiver atualizando as restrições de acesso por meio do portal do Microsoft Azure.

Se estiver adicionando uma regra baseada em ponto de extremidade de serviço e a rede virtual estiver em uma assinatura diferente da do aplicativo, você deverá garantir que a assinatura com a rede virtual esteja registrada no provedor de recursos Microsoft.Web. Você pode registrar explicitamente o provedor seguindo esta documentação, mas também pode registrá-lo automaticamente ao criar o primeiro aplicativo Web em uma assinatura.

Adicionar uma regra de restrição de acesso

Para adicionar uma regra de restrição de acesso ao seu aplicativo, na página Restrições de Acesso, selecione Adicionar. A regra só entra em vigor após o salvamento.

As regras são impostas em ordem de prioridade, começando do menor número na coluna Prioridade. Se você não configurar uma regra sem correspondência, uma regra implícita negar tudo entrará em vigor depois que você adicionar uma única regra.

No painel Adicionar Restrição de Acesso, ao criar uma regra, faça o seguinte:

  1. Em Ação, selecione Permitir ou Negar.

    Screenshot of the 'Add Access Restriction' pane.

  2. Opcionalmente, insira um nome e uma descrição da regra.

  3. Na caixa Prioridade, insira um valor de prioridade.

  4. Na lista suspensa Tipo, selecione o tipo de regra. Os diferentes tipos de regras são descritas nas seções a seguir.

  5. Selecione Adicionar regra depois de digitar a entrada específica da regra para adicionar a regra à lista.

Por fim, selecione Salvar novamente na página Restrições de Acesso.

Observação

  • Há um limite de 512 regras de restrição de acesso. Se você precisar de mais de 512 regras de restrição de acesso, sugerimos que considere a instalação de um produto de segurança autônomo, como Azure Front Door, o Gateway de Aplicativo do Azure ou um WAF alternativo.

Definir uma regra baseada em endereço IP

Siga o procedimento conforme descrito na seção anterior, mas com a seguinte adição:

  • Na etapa 4, na lista suspensa Tipo, selecione IPv4 ou IPv6.

Especifique o Bloco de Endereço IP na notação CIDR (Roteamento entre Domínios sem Classe) para os endereços IPv4 e IPv6. Para especificar um endereço, você pode usar algo semelhante a 1.2.3.4/32, no qual os quatro primeiros octetos representam o endereço IP e /32 é a máscara. A notação de CIDR de IPv4 para todos os endereços é 0.0.0.0/0. Para saber mais sobre a notação CIDR, confira Roteamento entre domínios sem classe.

Observação

As regras de restrição de acesso baseado em IP tratam apenas dos intervalos de endereços da rede virtual quando o aplicativo está em um Ambiente do Serviço de Aplicativo. Se o aplicativo estiver no serviço multilocatário, será necessário usar pontos de extremidade de serviço para restringir o tráfego a sub-redes selecionadas na rede virtual.

Definir uma regra com base no ponto de extremidade de serviço

  • Na etapa 4, na lista suspensa Tipo, selecione Rede Virtual.

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

Especifique as listas suspensas Assinatura, Rede Virtual e Sub-rede, correspondentes ao que você deseja restringir o acesso.

Usando os pontos de extremidade de serviço, você pode restringir o acesso às sub-redes selecionadas da rede virtual do Azure. Se os pontos de extremidade de serviço ainda não estiverem habilitados com Microsoft.Web para a sub-rede que você selecionou, eles serão automaticamente habilitados, a menos que você marque a caixa de seleção Ignorar pontos de extremidade de Microsoft.Web serviço ausentes. O cenário em que você pode querer habilitar pontos de extremidade de serviço no aplicativo, mas não na sub-rede depende principalmente de você ter as permissões para habilitá-los na sub-rede.

Se você precisar que outra pessoa habilite os pontos de extremidade de serviço na sub-rede, marque a caixa de seleção Ignorar pontos de extremidade do serviço Microsoft.Web ausentes. O seu aplicativo será configurado para pontos de extremidade de serviço antes de habilitá-los posteriormente na sub-rede.

Você não pode usar pontos de extremidade de serviço para restringir o acesso a aplicativos que são executados em um Ambiente do Serviço de Aplicativo. Quando o seu aplicativo estiver em um Ambiente do Serviço de Aplicativo, você poderá controlar o acesso a ele aplicando as regras de acesso de IP.

Com os pontos de extremidade de serviço, você pode configurar o seu aplicativo com gateways de aplicativo ou outros dispositivos WAF (firewall de aplicativo Web). Você também pode configurar aplicativos de várias camadas com back-ends seguros. Para obter mais informações, confira Recursos de rede e Serviço de Aplicativo e Integração do Gateway de Aplicativo com os pontos de extremidade.

Observação

  • Os pontos de extremidade de serviço não têm suporte para aplicativos Web que usam associações TLS/SSL baseadas em IP com um IP virtual (VIP).

Definir uma regra baseada em marca de serviço

  • Na etapa 4, na lista suspensa Tipo, selecione Marca de Serviço.

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

Todas as marcas de serviço disponíveis têm suporte nas regras de restrição de acesso. Cada marca de serviço representa uma lista de intervalos de IP dos serviços do Azure. Uma lista desses serviços e links para os intervalos específicos pode ser encontrada na documentação da marca de serviço. Use os scripts ou modelos do Azure Resource Manager para configurar regras mais avançadas, como regras com escopo regional.

Editar uma regra

  1. Para começar a editar uma regra de restrição de acesso existente, na página Restrições de Acesso, selecione a regra que você deseja editar.

  2. No painel Editar Restrição de Acesso, faça as alterações e selecione Atualizar regra.

  3. Selecione Salvar para salvar as alterações.

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

    Observação

    Quando você edita uma regra, não pode alternar entre tipos de regra.

Excluir uma regra

  1. Para excluir uma regra, na página Restrições de Acesso, marque as regras que deseja excluir e selecione Excluir.

  2. Selecione Salvar para salvar as alterações.

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

Cenários avançados de restrição de acesso

As seções a seguir descrevem alguns cenários avançados usando restrições de acesso.

Filtrar por cabeçalho HTTP

Como parte de qualquer regra, você pode adicionar filtros de cabeçalho http. Os seguintes nomes de cabeçalho HTTP são compatíveis:

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

Para cada nome de cabeçalho, você pode adicionar até oito valores separados por vírgula. Os filtros de cabeçalho HTTP são avaliados após a regra e as duas condições precisam ser verdadeiras para que a regra seja aplicada.

Regras de várias origens

As regras de várias origens permitem combinar até oito intervalos de IP ou oito marcas de serviço em uma regra. Use regras de várias origens se você tiver mais de 512 intervalos de IP ou se desejar criar regras lógicas. As regras lógicas podem ser aquelas em que vários intervalos de IP são combinados com um único filtro de cabeçalho http.

As regras de várias origens são definidas da mesma maneira que você define regras de origem única, mas com cada intervalo separado por vírgula.

Exemplo 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

Bloquear um endereço IP

Para um cenário em que você deseja bloquear explicitamente um endereço IP ou um bloco de endereços IP, mas permitir o acesso a todo o resto, adicione uma regra Deny para o endereço IP específico e configure a ação de regra não compatível para Permitir.

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

Restringir o acesso a um site do SCM

Além de poder controlar o acesso ao seu aplicativo, você pode restringir o acesso ao site do SCM (Ferramenta avançada) usado pelo seu aplicativo. O site do SCM é o ponto de extremidade de implantação da Web e o console do Kudu. Você pode atribuir separadamente restrições de acesso ao site do SCM do aplicativo ou usar o mesmo conjunto de restrições para o aplicativo e o site do SCM. Quando você marca a caixa de seleção Usar regras do site principal, a lista de regras fica oculta e usa as regras do site principal. Se você desmarcar a caixa de seleção, as configurações do site do SCM serão exibidas novamente.

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

Restringir o acesso a uma instância específica do Azure Front Door

O tráfego do Azure Front Door para o seu aplicativo é proveniente de um conjunto conhecido de intervalos de IP definido na marca de serviço AzureFrontDoor.Backend. Usando uma regra de restrição de marca de serviço, você pode restringir o tráfego para que ele seja originado apenas do Azure Front Door. Para garantir que o tráfego seja originado apenas de sua instância específica, você precisa filtrar ainda mais as solicitações de entrada com base no cabeçalho http exclusivo que o Azure Front Door envia.

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

Exemplo 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}

Gerenciar a restrição de acesso programaticamente

É possível gerenciar a restrição de acesso programaticamente. Veja abaixo exemplos de como adicionar regras às restrições de acesso e como alterar a ação de regra sem correspondência para o site principal e o site de ferramenta avançada.

Adicionar regras de restrições de acesso para o site principal

É possível adicionar programaticamente regras de restrições de acesso ao site principal escolhendo uma das seguintes opções:

Execute o comando a seguir no Cloud Shell. Para saber mais sobre o comando az webapp config access-restriction, visite 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

Adicionar regras de restrições de acesso ao site de ferramenta avançada

É possível adicionar programaticamente regras de restrições de acesso ao site de ferramenta avançada escolhendo uma das seguintes opções:

Execute o comando a seguir no Cloud Shell. Para saber mais sobre o comando az webapp config access-restriction, visite 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

Alterar a ação de regra sem correspondência para o site principal

É possível alterar programaticamente a ação de regra sem correspondência para o site principal escolhendo uma das seguintes opções:

Execute o comando a seguir no Cloud Shell. Para saber mais sobre o comando az resource, visite esta página. Os valores aceitos para ipSecurityRestrictionsDefaultAction são Allow ou Deny.

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

Alterar a ação de regra sem correspondência para o site de ferramenta avançada

É possível alterar programaticamente a ação de regra sem correspondência para o site de ferramenta avançada escolhendo uma das seguintes opções:

Execute o comando a seguir no Cloud Shell. Para saber mais sobre o comando az resource, visite esta página. Os valores aceitos para scmIpSecurityRestrictionsDefaultAction são Allow ou Deny.

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

Configurar restrições de acesso do Azure Functions

As restrições de acesso também estão disponíveis para aplicativos de funções com a mesma funcionalidade que os planos do Serviço de Aplicativo. Ao habilitar as restrições de acesso, você também desabilita o editor de código do portal do Azure para todos os IPs não permitidos.

Próximas etapas

Restrições de acesso do Azure Functions
Integração do Gateway de Aplicativo com os pontos de extremidade de serviço
Cenários avançados de restrição de acesso no Serviço de Aplicativo do Azure – postagem no blog