Opções de rede do Azure Functions

Este artigo descreve os recursos de rede disponíveis nas opções de hospedagem para o Azure Functions. Todas as opções de rede a seguir oferecem a você uma capacidade de acessar recursos sem usar endereços roteáveis pela Internet ou restringir o acesso à Internet a um aplicativo de funções.

Os modelos de hospedagem têm diferentes níveis de isolamento de rede disponíveis. Escolher o correto ajuda a atender aos seus requisitos de isolamento de rede.

Recurso Plano de Consumo Plano de Consumo Flexível Plano Premium Plano Dedicado/ASE Aplicativos de Contêiner*
Restrições de IP de entrada ✅Sim ✅Sim ✅Sim ✅Sim ✅Sim
Pontos de extremidade privados de entrada ❌Não ✅Sim ✅Sim ✅Sim ❌Não
Integração de rede virtual ❌Não ✅Sim (Regional) ✅Sim (Regional) ✅Sim (regional e gateway) ✅Sim
Gatilhos de rede virtual (não HTTP) ❌Não ✅Sim ✅Sim ✅Sim ✅Sim
Conexões híbridas (somente Windows) ❌Não ❌ Não ✅Sim ✅Sim ❌Não
Restrições de IP de saída ❌Não ✅Sim ✅Sim ✅Sim ✅Sim

*Para obter mais informações, confira Rede no ambiente de Aplicativos de Contêiner do Azure.

Recursos do início rápido

Use os recursos a seguir para iniciar rapidamente com os cenários de rede do Azure Functions. Esses recursos são referenciados em todo o artigo.

Recursos de rede de entrada

Os recursos a seguir permitem filtrar solicitações de entrada para seu aplicativo de funções.

Restrições de acesso de entrada

Você pode usar restrições de acesso para definir uma lista ordenada de prioridades dos endereços IP que podem ou não acessar o seu aplicativo. A lista pode incluir endereços IPv4 e IPv6 ou sub-redes específicas da rede virtual usando pontos de extremidade de serviço. Quando há uma ou mais entradas, há uma negação implícita de tudo no final da lista. As restrições de IP funcionam com todas as opções de hospedagem de função.

As restrições de acesso estão disponíveis nos planos Consumo Flex, Elástico Premium, Consumo e Serviço de Aplicativo.

Observação

Com as restrições de rede em vigor, você pode implantar somente de dentro de sua rede virtual ou quando tiver colocado o endereço IP do computador que está usando para acessar o portal do Azure na lista de destinatários seguros. No entanto, você ainda pode gerenciar a função usando o portal.

Para saber mais, confira Restrições de acesso ao serviço do Serviço de Aplicativo do Azure.

Pontos de extremidade privados

O Ponto de Extremidade Privado do Azure é um adaptador de rede que conecta você de maneira privada e segura a um serviço que conta com o Link Privado do Azure. O Ponto de Extremidade Privado usa um endereço IP privado da rede virtual, colocando efetivamente o serviço na sua rede virtual.

É possível usar o ponto de extremidade privado para suas funções hospedadas nos planos de Serviço de aplicativo e Premium.

Se você quiser fazer chamadas para Pontos de extremidade privados, deverá certificar-se de que suas pesquisas de DNS sejam resolvidas em relação ao ponto de extremidades privado. Você pode impor esse comportamento de uma das seguintes maneiras:

  • Integrar com as zonas privadas do DNS do Azure. Quando sua rede virtual não tem um servidor DNS personalizado, isso é feito automaticamente.
  • Gerenciar o ponto de extremidade privado no servidor DNS usado pelo seu aplicativo. Para fazer isso, você precisa saber o endereço do ponto de extremidade privado e apontar o ponto de extremidade que está tentando acessar para esse endereço usando um registro A.
  • Configure seu próprio servidor DNS para encaminhar para as zonas privadas do DNS do Azure.

Para saber mais, confira usar Pontos de extremidade privados para Aplicativos Web.

Para chamar outros serviços que têm uma conexão de ponto de extremidade privada, como armazenamento ou barramento de serviço, certifique-se de configurar o aplicativo para fazer chamadas de saída para pontos de extremidade privados. Para obter mais detalhes sobre como usar pontos de extremidade privados com a conta de armazenamento do aplicativo de funções, visite restringir a conta de armazenamento a uma rede virtual.

Pontos de extremidade de serviço

Usando os pontos de extremidade de serviço, você pode restringir vários serviços do Azure a sub-redes de uma rede virtual selecionadas a fim de oferecer um nível mais alto de segurança. A integração de rede virtual regional permite alcançar serviços do Azure protegidos com pontos de extremidade de serviço. Essa configuração tem suporte em todos os planos que dão suporte à integração de rede virtual. Para acessar um serviço protegido de ponto de extremidade de serviço, você deve fazer o seguinte:

  1. Configure a integração de rede virtual regional com seu aplicativo de funções para se conectar a uma sub-rede específica.
  2. Vá para o serviço de destino e configure os pontos de extremidade de serviço em relação à sub-rede de integração.

Para obter mais detalhes, confira Pontos de extremidade de serviço de rede virtual.

Usar pontos de extremidade de serviço

Para restringir o acesso a uma sub-rede específica, crie uma regra de restrição com um tipo de Rede Virtual. Você pode selecionar a assinatura, a rede virtual e a sub-rede às quais deseja permitir ou negar acesso.

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 os pontos de extremidade de serviço Microsoft.Web 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.

Captura de tela do painel

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.

Para saber como configurar os pontos de extremidade de serviço, consulte Estabelecer acesso ao site privado do Azure Functions.

Integração de rede virtual

A integração de rede virtual permite que seu aplicativo de funções acesse recursos dentro de uma rede virtual. O Azure Functions dá suporte a dois tipos de integração de rede virtual:

  • Os tipos de preço de computação dedicados, que incluem Básico, Standard, Premium, Premium v2 e Premium v3.
  • O Ambiente do Serviço de Aplicativo, que é implantado diretamente em sua rede virtual com infraestrutura de suporte dedicada e está usando os tipos de preço Isolado e Isolado v2.

O recurso de integração de rede virtual é usado nos tipos de preço de computação dedicada do Serviço de Aplicativo do Azure. Se o aplicativo está em um Ambiente do Serviço de Aplicativo, ele já está em uma rede virtual e não exige o uso do recurso de Integração de VNet para acessar recursos na mesma rede virtual. Para obter mais informações sobre todos os recursos de rede, confira Recursos de rede do Serviço de Aplicativo.

A Integração de rede virtual concede ao seu aplicativo acesso a recursos da sua rede virtual, mas não permite acesso privado de entrada ao seu aplicativo por meio da rede virtual. Acesso ao site privado significa tornar seu aplicativo acessível somente de uma rede privada, como de dentro de uma rede virtual do Azure. A integração de rede virtual é usada apenas para fazer chamadas de saída do aplicativo para a rede virtual. O recurso de integração de rede virtual comporta-se de modo diferente quando usado com redes virtuais na mesma e com redes virtuais em outras regiões. Esse recurso tem duas variações:

  • Integração de rede virtual regional: quando se conecta a redes virtuais na mesma região, você precisa ter uma sub-rede dedicada na rede virtual com a qual está se integrando.
  • Integração de rede virtual exigida pelo gateway: quando se conecta diretamente à rede virtual em outras regiões ou a uma rede virtual clássica na mesma região, você precisa de um gateway de Rede Virtual do Azure criado na rede virtual de destino.

O recurso de integração de rede virtual:

  • Exige um tipo de preço do Serviço de Aplicativo Básico ou Standard com suporte, Premium, Premium v2, Premium v3 ou Premium Elástico.
  • Dá suporte a TCP e UDP.
  • Funciona com aplicativos do Serviço de Aplicativo e aplicativos de funções.

Há algumas coisas às quais a integração de rede virtual não dá suporte, incluindo:

  • A montagem de uma unidade.
  • Ingresso no domínio do Windows Server Active Directory.
  • NetBIOS.

A integração de rede virtual necessária para o gateway fornece acesso a recursos somente na rede virtual de destino ou em redes conectadas à rede virtual de destino com emparelhamento ou VPNs. A integração de rede virtual exigida pelo gateway não habilita o acesso aos recursos disponíveis nas conexões do Azure ExpressRoute nem trabalha com pontos de extremidade de serviço.

Independentemente da versão usada, a integração de rede virtual concede ao seu aplicativo acesso a recursos da sua rede virtual, mas não permite acesso privado de entrada ao seu aplicativo por meio da rede virtual. Acesso ao site privado significa tornar seu aplicativo acessível somente de uma rede privada, como de dentro de uma rede virtual do Azure. A integração de rede virtual é usada apenas para fazer chamadas de saída do aplicativo para a rede virtual.

A integração de rede virtual no Azure Functions usa a infraestrutura compartilhada com aplicativos Web do Serviço de Aplicativo. Para saber mais sobre os dois tipos de integração de rede virtual, confira:

Para saber como configurar a integração de rede virtual, consulte Habilitar a integração de rede virtual.

Habilitar a integração de rede virtual

  1. Em seu aplicativo de funções no portal do Azure, selecione Rede e, em Integração VNet, selecione Clique aqui para configurar.

  2. Selecione Adicionar VNet.

    Selecionar a Integração VNET

  3. A lista suspensa contém todas as redes virtuais do Azure Resource Manager na sua assinatura na mesma região. Selecione a rede à qual você deseja se integrar.

    Selecionar a VNET

    • Os planos do Functions Consumo Flex e Elástico Premium oferecem suporte apenas à integração de redes virtuais regionais. Se a rede virtual estiver na mesma região, crie uma sub-rede ou selecione uma sub-rede preexistente vazia.

    • Para selecionar uma rede virtual em outra região, você precisará ter um gateway de rede virtual provisionado com o recurso ponto a site habilitado. A integração de rede virtual entre regiões só tem suporte para planos Dedicados, mas emparelhamentos globais funcionam com a integração de rede virtual regional.

Durante a integração, o aplicativo é reiniciado. Quando a integração for concluída, você verá detalhes sobre a rede virtual à qual está integrado. Por padrão, Rotear Todos está habilitado e todo o tráfego é roteado para sua rede virtual.

Se você quiser que apenas o tráfego privado(tráfego RFC1918) seja roteado, siga as etapas na documentação do serviço de aplicativo.

Integração de rede virtual regional

O uso da integração de rede virtual regional permite que seu aplicativo acesse:

  • Recursos na mesma rede virtual do seu aplicativo.
  • Recursos em redes virtuais emparelhadas com a rede virtual à qual seu aplicativo está integrado.
  • Serviços protegidos por ponto de extremidade de serviço.
  • Recursos nas conexões do Azure ExpressRoute.
  • Recursos nas conexões emparelhadas, que incluem conexões do Azure ExpressRoute.
  • Pontos de extremidade privados

Usando a integração de rede virtual regional, você pode usar os seguintes recursos de rede do Azure:

  • NSGs (grupos de segurança de rede) : você pode bloquear o tráfego de saída com um NSG que é colocado em sua sub-rede de integração. As regras de entrada não se aplicam porque você não pode usar a integração de rede virtual para fornecer acesso de entrada ao seu aplicativo.
  • UDRs (tabelas de rotas) : você pode inserir uma tabela de rotas na sub-rede de integração para enviar o tráfego de saída para onde desejar.

Observação

Quando você roteia todo o tráfego de saída para sua rede virtual, ele está sujeito aos NSGs e UDRs aplicados à sua sub-rede de integração. Quando a rede virtual é integrada, o tráfego de saída do aplicativo de funções para endereços IP públicos ainda é enviado dos endereços listados nas propriedades do aplicativo, a menos que você forneça rotas que direcionem o tráfego para outro local.

A integração de rede virtual regional não pode usar a porta 25.

Para o plano Consumo Flex:

  1. Certifique-se de que o Microsoft.App provedor de recursos do Azure esteja habilitado para sua assinatura seguindo estas instruções. A delegação de sub-rede exigida por aplicativos de Consumo Flex é Microsoft.App/environments.
  2. A delegação de sub-rede exigida por aplicativos de Consumo Flex é Microsoft.App/environments. Essa é uma alteração em relação ao Elástico Premium e ao Serviço de Aplicativo, que têm um requisito de delegação diferente.
  3. Você pode planejar 40 endereços IP a serem usados, no máximo, para um aplicativo de funções, mesmo que o aplicativo seja dimensionado para mais de 40. Por exemplo, se você tiver quinze aplicativos de função do Consumo Flex que serão integrados à VNet na mesma sub-rede, você poderá planejar 15x40 = 600 endereços IP usados no máximo. Esse limite está sujeito a alterações e não é imposto.
  4. A sub-rede não pode estar sendo usada para outros fins (como pontos de extremidade privados ou de serviço, ou delegada a qualquer outro plano ou serviço de hospedagem). Embora você possa compartilhar a mesma sub-rede com vários aplicativos do Consumo Flex, os recursos de rede serão compartilhados entre esses aplicativos de função e isso pode levar com que um aplicativo de função afete o desempenho de outros na mesma sub-rede.

Há algumas limitações ao uso da rede virtual:

  • O recurso está disponível no Consumo Flex, Elástico Premium e Serviço de Aplicativo Premium V2 e Premium V3. Ele também está disponível em Standard, mas somente em implantações mais recentes do Serviço de Aplicativo. Se você estiver em uma implantação mais antiga, só poderá usar esse recurso em um plano do Serviço de Aplicativo Premium V2. Se você quiser ter certeza de que pode usar a funcionalidade em um plano do Serviço de Aplicativo Standard, crie seu aplicativo em um plano do Serviço de Aplicativo Premium V3. Só há suporte para esses planos nas implantações mais recentes. Se quiser, você poderá reduzir verticalmente depois disso.
  • A sub-rede de integração pode ser usada por apenas um plano do Serviço de Aplicativo.
  • A funcionalidade não pode ser usada por aplicativos de plano isolado que estejam em um Ambiente do Serviço de Aplicativo.
  • O recurso requer uma sub-rede /28 ou maior não utilizada em uma rede virtual do Azure Resource Manager.
  • O aplicativo e a rede virtual precisam estar na mesma região.
  • Você não pode excluir uma rede virtual com um aplicativo integrado. Remova a integração antes de excluir a rede virtual.
  • Você pode ter até duas integrações de rede virtual regional por plano do Serviço de Aplicativo. Vários aplicativos no mesmo plano do Serviço de Aplicativo podem usar a mesma sub-rede de integração.
  • Você não pode alterar a assinatura de um aplicativo ou plano enquanto há um aplicativo usando a integração de rede virtual regional.

Sub-redes

A integração de rede virtual depende de uma sub-rede dedicada. Quando você provisiona uma sub-rede, a sub-rede do Azure perde cinco IPs desde o início. Para os planos Elástico Premium e Serviço de Aplicativo, é usado um endereço da sub-rede de integração para cada instância do plano. Quando você dimensiona seu aplicativo para quatro instâncias, são usados quatro endereços. Para o Consumo Flex, isso não se aplica e as instâncias compartilham endereços IP.

Quando você aumenta ou reduz verticalmente, o espaço de endereço necessário é dobrado por um curto período de tempo. Isso afeta as instâncias reais disponíveis, com suporte, para um determinado tamanho de sub-rede. A tabela a seguir mostra os endereços máximos disponíveis por bloco CIDR e o efeito que isso tem na escala horizontal:

Tamanho do bloco CIDR Máximo de endereços disponíveis: Escala horizontal máxima (instâncias)*
/ 28 11 5
/ 27 27 13
/ 26 59 29

*Pressupõe que você precisa aumentar ou reduzir verticalmente em qualquer tamanho ou SKU em algum momento.

Como o tamanho da sub-rede não pode ser alterado após a atribuição, use uma sub-rede que seja grande o suficiente para acomodar qualquer escala que seu aplicativo possa alcançar. Para evitar problemas com a capacidade da sub-rede para os planos Functions Elástico Premium, você deve usar um /24 com 256 endereços para Windows e um /26 com 64 endereços para Linux. Ao criar sub-redes no portal do Azure como parte da integração com a rede virtual, é necessário um tamanho mínimo de /24 e /26 para Windows e Linux, respectivamente.

Quando você quiser que os aplicativos em outro plano acessem uma rede virtual já conectada por meio de aplicativos em outro plano, selecione uma sub-rede diferente daquela em uso pela integração de rede virtual preexistente.

A funcionalidade tem suporte total para aplicativos Windows e Linux, incluindo contêineres personalizados. Todos os comportamentos agem da mesma entre aplicativos do Windows e aplicativos do Linux.

Grupos de segurança de rede

Você pode usar grupos de segurança de rede para bloquear o tráfego de entrada e de saída para recursos em uma rede virtual. Um aplicativo que usa a integração de rede virtual regional pode usar um grupo de segurança de rede para bloquear o tráfego de saída para recursos na rede virtual ou na Internet. Para bloquear o tráfego para endereços públicos, você deve ter integração de rede virtual com a opção Rotear Todos habilitada. As regras de entrada em um NSG não se aplicam ao seu aplicativo porque a integração de rede virtual afeta apenas o tráfego de saída de seu aplicativo.

Para controlar o tráfego de entrada para seu aplicativo, use a funcionalidade de Restrições de acesso. Um NSG aplicado à sua sub-rede de integração estará em vigor independentemente de quaisquer rotas aplicadas à sua sub-rede de integração. Se seu aplicativo de funções for integrado a uma rede virtual com a opção Rotear Todos habilitada e nenhuma rota afetar o tráfego de endereço público na sua sub-rede de integração, todo o tráfego de saída ainda estará sujeito a NSGs atribuídos à sua sub-rede de integração. Quando a rota All não está habilitada, os NSGs são aplicados somente ao tráfego RFC1918.

Rotas

Você pode usar tabelas de rotas para rotear o tráfego de saída do seu aplicativo para onde quiser. Por padrão, as tabelas de rotas afetam apenas o tráfego de destino RFC1918. Quando a rota All está habilitada, todas as suas chamadas de saída são afetadas. Quando Route All está desabilitada, somente o tráfego privado (RFC1918) é afetado pelas tabelas de rotas. As rotas definidas em sua sub-rede de integração não afetarão as respostas a solicitações de aplicativo de entrada. Os destinos comuns podem incluir dispositivos de firewall ou gateways.

Se você quiser rotear todo o tráfego de saída local, poderá usar uma tabela de rotas para enviar todo o tráfego de saída para o gateway de ExpressRoute. Se você rotear o tráfego para um gateway, certifique-se de definir rotas na rede externa para enviar respostas.

As rotas de BGP (Border Gateway Protocol) também afetam o tráfego do aplicativo. Se você tiver rotas de BGP de, por exemplo, um gateway de ExpressRoute, o tráfego de saída do aplicativo será afetado. Por padrão, as rotas de BGP afetam apenas o tráfego de destino RFC1918. Quando seu aplicativo de função é integrado à rede virtual com a opção Rotear Todos habilitada, todo o tráfego de saída pode ser afetado por suas rotas BGP.

Zonas privadas do DNS do Azure

Depois que seu aplicativo se integra à sua rede virtual, ele usa o mesmo servidor DNS com o qual sua rede virtual está configurada e funcionará com as zonas privadas DNS do Azure vinculadas à rede virtual.

Restringir a sua conta de armazenamento a uma rede virtual

Observação

Para implantar rapidamente um aplicativo de funções com pontos de extremidade privados habilitados na conta de armazenamento, consulte o seguinte modelo: Aplicativo de funções com pontos de extremidade privados do Armazenamento do Microsoft Azure.

Quando você cria um aplicativo de funções, é necessário criar ou vincular uma conta de Armazenamento do Azure de uso geral que dá ao armazenamento de Tabelas, Blobs e Filas. Você pode substituir essa conta de armazenamento por uma que seja protegida por pontos de extremidade de serviço ou pontos de extremidade privados.

Esse recurso é compatível com todas as SKUs suportadas por redes virtuais Windows e Linux no plano Dedicado (Serviço de Aplicativo) e nos planos do Elástico Premium, bem como no plano Consumo Flex. Não há suporte para o plano Consumo. Para saber como configurar uma função com uma conta de armazenamento restrita a uma rede privada, consulte Restringir a conta de armazenamento a uma rede virtual.

Usar referências de Key Vault

Você pode usar referências do Azure Key Vault para usar segredos do Azure Key Vault no seu aplicativo Azure Functions sem exigir alterações de código. O Azure Key Vault é um serviço que fornece gerenciamento centralizado de segredos, com controle total sobre políticas de acesso e histórico de auditoria.

Se a integração de rede virtual estiver configurada para o aplicativo, as referências do Key Vault poderão ser usadas para retirar segredos de um cofre restrito à rede.

Gatilhos de rede virtual (não HTTP)

No momento, você pode usar funções de gatilho não HTTP de dentro de uma rede virtual de duas maneiras:

  • Execute seu aplicativo de funções em um plano Elastic Premium e habilite o suporte ao gatilho de rede virtual.
  • Execute seu aplicativo de função em um plano Consumo Flex, Serviço de Aplicativo ou Ambiente do Serviço de Aplicativo.

Plano Elástico Premium com gatilhos de rede virtual

O plano Elástico Premium permite que você crie funções que são disparadas por serviços dentro de uma rede virtual. Esses gatilhos não HTTP são conhecidos como gatilhos de rede virtual.

Por padrão, os gatilhos de rede virtual não fazem com que seu aplicativo de funções seja dimensionado além da contagem de instâncias pré-aquecidas. No entanto, determinadas extensões dão suporte a gatilhos de rede virtual que fazem com que seu aplicativo de funções seja dimensionado dinamicamente. Você pode habilitar esse monitoramento de dimensionamento dinâmico em seu aplicativo de funções para extensões com suporte de uma destas maneiras:

  1. No portal do Azure, navegue até o aplicativo de funções.

  2. Em Configurações, selecione Configuração e, na guia Configurações de runtime da função, defina o Monitoramento de Dimensionamento de Runtime como Ativado.

  3. Selecione Salvar para atualizar a configuração do aplicativo de funções e reinicie o aplicativo.

VNETToggle

Dica

Habilitar o monitoramento de gatilhos de rede virtual pode ter um impacto no desempenho do aplicativo, embora esse impacto provavelmente seja muito pequeno.

O suporte para monitoramento de dimensionamento dinâmico de gatilhos de rede virtual não está disponível na versão 1.x do runtime do Functions.

As extensões nesta tabela dão suporte ao monitoramento de dimensionamento dinâmico de gatilhos de rede virtual. Para obter o melhor desempenho do dimensionamento, você deverá atualizar para versões que também dão suporte ao dimensionamento baseado em destino.

Extensão (versão mínima) Somente monitoramento de dimensionamento de runtime Com dimensionamento baseado em destino
Microsoft.Azure.WebJobs.Extensions.CosmosDB > 3.0.5 > 4.1.0
Microsoft.Azure.WebJobs.Extensions.DurableTask > 2.0.0 N/D
Microsoft.Azure.WebJobs.Extensions.EventHubs > 4.1.0 > 5.2.0
Microsoft.Azure.WebJobs.Extensions.ServiceBus > 3.2.0 > 5.9.0
Microsoft.Azure.WebJobs.Extensions.Storage > 3.0.10 > 5.1.0*

* Somente armazenamento de filas.

Importante

Quando você habilita o monitoramento de gatilho de rede virtual, apenas os gatilhos dessas extensões podem fazer com que seu aplicativo seja dimensionado dinamicamente. Você ainda pode usar os gatilhos de extensões que não estão nesta tabela, mas eles não causarão dimensionamento além da contagem de instâncias previamente inicializadas. Para obter uma lista completa de todas as extensões de gatilho e associação, confira Gatilhos e associações.

Plano do Serviço de Aplicativo e Ambiente do Serviço de Aplicativo com gatilhos de rede virtual

Quando seu aplicativo de funções é executado em um plano do Serviço de Aplicativo ou em um Ambiente do Serviço de Aplicativo, você pode usar funções de gatilho não HTTP. Para que suas funções sejam disparadas corretamente, você deverá estar conectado a uma rede virtual com acesso ao recurso definido na conexão do gatilho.

Por exemplo, suponha que você deseja configurar o Azure Cosmos DB para aceitar o tráfego somente de uma rede virtual. Nesse caso, você deve implantar seu aplicativo de funções em um plano do Serviço de Aplicativo que fornece integração de rede virtual com essa rede virtual. A integração permite que uma função seja disparada por esse recurso do Azure Cosmos DB.

Conexões Híbridas

Conexões Híbridas é um recurso da Retransmissão do Azure que você pode usar para acessar recursos do aplicativo em outras redes. Ele fornece acesso de seu aplicativo para um ponto de extremidade do aplicativo. Não é possível usá-lo para acessar seu aplicativo. O recurso Conexões Híbridas está disponível para funções executadas no Windows em todos os planos, exceto no plano de Consumo.

Conforme usado no Azure Functions, cada conexão híbrida se correlaciona com uma única combinação de host e de porta TCP. Isso significa que o ponto de extremidade de conexões híbridas pode estar em qualquer sistema operacional e em qualquer aplicativo, desde que você esteja acessando uma porta de escuta TCP. O recurso Conexões Híbridas não sabe e nem se importa com o protocolo de aplicativo ou o que você está acessando. Ele apenas fornece acesso à rede.

Para saber mais, confira a Documentação do Serviço de Aplicativo para Conexões Híbridas. Essas mesmas etapas de configuração dão suporte ao Azure Functions.

Importante

Só há suporte para Conexões Híbridas em planos do Windows. Não há suporte para o Linux.

Restrições de IP de saída

As restrições de IP de saída estão disponíveis em um plano Consumo Flex, plano Elástico Premium, plano do Serviço de Aplicativo ou Ambiente do Serviço de Aplicativo. Você pode configurar as restrições de saída para a rede virtual em que seu Ambiente do Serviço de Aplicativo está implantado.

Quando você integra um aplicativo de função em um plano Elástico Premium ou em um plano do Serviço de Aplicativo com uma rede virtual, o aplicativo ainda pode fazer chamadas de saída para a Internet por padrão. Integrando seu aplicativo de funções a uma rede virtual com a opção Rotear Todos habilitada, você força todo o tráfego de saída a ser enviado para sua rede virtual, onde as regras do grupo de segurança de rede podem ser usadas para restringir o tráfego. Para o Consumo Flex, todo o tráfego já é roteado pela rede virtual e o Route All não é necessário.

Para saber como controlar o IP de saída usando uma rede virtual, consulte Tutorial: Controlar o IP de saída do Azure Functions com um gateway da NAT da rede virtual do Azure.

Automação

As APIs a seguir permitem gerenciar programaticamente integrações de rede virtual regional:

Considerações sobre os testes

Ao testar funções em um aplicativo de funções com pontos de extremidade privados, você deve fazer seus testes dentro da mesma rede virtual, como em uma máquina virtual (VM) nessa rede. Para usar a opção Código + Teste no portal daquela VM, você precisa adicionar as seguintes origens de CORS ao seu aplicativo de funções:

  • https://functions-next.azure.com
  • https://functions-staging.azure.com
  • https://functions.azure.com
  • https://portal.azure.com

Se você restringiu o acesso ao seu aplicativo de funções com pontos de extremidade privados ou qualquer outra restrição de acesso, também deve adicionar a marca de serviço AzureCloud à lista de permissões. Para atualizar a lista de permissões:

  1. Navegue até seu aplicativo de funções e selecione Configurações>Rede e selecione configuração de acesso de entrada>Acesso à rede pública.

  2. Verifique se Acesso à rede pública está definido como Habilitado em redes virtuais selecionadas e endereços IP.

  3. Adicionar uma regra em regras e acesso ao site:

    1. Selecione Service Tag como as configurações de origem Tipo e AzureCloud como Marca de Serviço.

    2. Verifique se a ação está Permitire defina o nome e a prioridade desejados.

Solução de problemas

Embora o recurso seja fácil de configurar, isso não significa que sua experiência estará livre de problemas. Se tiver problemas para acessar o ponto de extremidade desejado, existem alguns utilitários que você pode usar para testar a conectividade do console do aplicativo. Há dois consoles que você pode usar. Um deles é o console do Kudu e o outro é o console no portal do Azure. Para acessar o console do Kudu do aplicativo, vá para Ferramentas>Kudu. Você também pode acessar o console do Kudo em [sitename].scm.azurewebsites.net. Depois que o site for carregado, vá para a guia Console de depuração. Para acessar o console do portal do Azure hospedado do seu aplicativo, vá para o > Consolede ferramentas.

Ferramentas

Em aplicativos nativos do Windows, as ferramentas ping, nslookup e tracert não funcionam por meio do console devido a restrições de segurança (funcionam em contêineres personalizados do Windows). Para compensar essa ausência, duas ferramentas separadas foram adicionadas. Para testar a funcionalidade do DNS, adicionamos uma ferramenta chamada nameresolver.exe. A sintaxe do é:

nameresolver.exe hostname [optional: DNS Server]

Você pode usar a nameresolver para verificar os nomes de host de que seu aplicativo depende. Desta forma, você pode testar se há algo configurado incorretamente com o seu DNS ou talvez não tenha acesso ao seu servidor DNS. Você pode ver o servidor DNS que seu aplicativo usa no console, observando as variáveis de ambiente WEBSITE_DNS_SERVER e WEBSITE_DNS_ALT_SERVER.

Observação

A ferramenta nameresolver.exe atualmente não funciona em contêineres personalizados do Windows.

Você pode usar a próxima ferramenta para testar a conectividade TCP para uma combinação de host e porta. Essa ferramenta é chamada tcpping e a sintaxe é:

tcpping.exe hostname [optional: port]

O utilitário tcpping informa se você pode acessar um host específico e uma porta. Ele pode mostrar sucesso apenas se houver um aplicativo escutando na combinação de host e porta, e houver acesso à rede de seu aplicativo para o host e porta especificados.

Depurar o acesso a recursos hospedados na rede virtual

Há várias coisas que podem impedir que seu aplicativo alcance um host e uma porta específicos. Na maioria das vezes, é uma destas coisas:

  • Há um firewall no caminho. Se você tiver um firewall no caminho, atingiu o tempo limite do TCP. O tempo limite de TCP é 21 segundos neste caso. Use a ferramenta tcpping para testar a conectividade. Os tempos limite de TCP podem ser causados por muitas coisas além dos firewalls, mas comece por aí.
  • O DNS não está acessível. O tempo limite do DNS é de 3 segundos por servidor DNS. Se você tiver dois servidores DNS, o tempo limite será de seis segundos. Use nameresolver para ver se o DNS está funcionando. Você não pode usar o nslookup, porque ele não usa o DNS com o qual sua rede virtual está configurada. Se estiver inacessível, você pode ter um firewall ou NSG bloqueando o acesso ao DNS ou pode estar inoperante.

Se esses itens não resolverem seu problema, procure por coisas simples primeiro, como:

Integração de rede virtual regional

  • Seu destino é um endereço não RFC1918 e você não tem Rotear Todos habilitado?
  • Há um NSG bloqueando a saída de sua sub-rede de integração?
  • Se você estiver entrando no Azure ExpressRoute ou em uma VPN, seu gateway local será configurado para rotear o tráfego de volta para o Azure? Se você puder acessar pontos de extremidade em sua rede virtual, mas não no local, verifique suas rotas.
  • Você tem permissões suficientes para definir a delegação na sub-rede de integração? Durante a configuração de integração da rede virtual regional, sua sub-rede de integração é delegada para Microsoft.Web/serverFarms. A interface do usuário de integração da VNet delega a sub-rede para Microsoft. Web/serverFarms automaticamente. Se sua conta não tiver permissões de rede suficientes para definir a delegação, você precisará de alguém que possa definir atributos em sua sub-rede de integração para delegar a sub-rede. Para delegar manualmente a sub-rede de integração, vá para a interface do usuário da sub-rede da rede virtual do Azure e defina a delegação para Microsoft. Web/serverFarms.

Integração de rede virtual exigida por gateway

  • O intervalo de endereços ponto a site está nos intervalos RFC 1918 (10.0.0.0-10.255.255.255 / 172.16.0.0-172.31.255.255 / 192.168.0.0-192.168.255.255)?
  • O gateway aparece como em execução no portal? Se o gateway estiver inativo, ative-o.
  • Os certificados estão sincronizados ou você suspeita que a configuração da rede foi alterada? Se os certificados estiverem fora de sincronia ou se você suspeitar que uma alteração foi feita em sua configuração de rede virtual que não foi sincronizada com seus ASPs, selecione Sincronizar rede.
  • Se você estiver entrando no Azure ExpressRoute ou em uma VPN, seu gateway local será configurado para rotear o tráfego de volta para o Azure? Se você puder acessar pontos de extremidade em sua rede virtual, mas não no local, verifique suas rotas.
  • Você está tentando usar um gateway de coexistência que dá suporte a ponto a site e ExpressRoute? Não há suporte para gateways de coexistência com integração de rede virtual.

A depuração de problemas de rede é um desafio porque você não pode ver o que está bloqueando o acesso a uma combinação de hosts:porta específica. Esses motivos incluem:

  • você tem um firewall no seu host que impede o acesso à porta do aplicativo usando o intervalo de IP ponto a site. o cruzamento de sub-redes geralmente exige acesso Público.
  • o host de destino está inoperante.
  • seu aplicativo está inoperante.
  • você tinha o IP ou nome de host incorreto.
  • seu aplicativo está escutando em uma porta diferente da que você esperava. Você pode corresponder a sua ID de processo com a porta de escuta usando "netstat -aon" no host do ponto de extremidade.
  • Os grupos de segurança de rede estão configurados de modo a impedir o acesso ao host do aplicativo e à porta do intervalo de IP ponto a site.

Você não sabe qual endereço seu aplicativo realmente usa. Pode ser qualquer endereço na sub-rede de integração ou intervalo de endereços de ponto a site, portanto, você precisa permitir o acesso de todo o intervalo de endereços.

Mais etapas de depuração incluem:

  • Conecte-se a uma VM na sua VNet e tente acessar o host:porta do recurso de lá. Para testar o acesso TCP, use o comando do PowerShell Test-NetConnection. A sintaxe do é:
Test-NetConnection hostname [optional: -Port]
  • Abra um aplicativo em uma VM e teste o acesso a esse host e porta a partir do console do seu aplicativo usando tcpping.

Recursos locais

Se o aplicativo não puder acessar um recurso local, verifique se é possível acessar o recurso da sua VNet. Use o comando do PowerShell Test-NetConnection para verificar se há acesso TCP. Se sua VM não conseguir acessar seu recurso local, sua conexão VPN ou ExpressRoute pode não estar configurada corretamente.

Se sua VM hospedada em rede virtual pode alcançar seu sistema local, mas seu aplicativo não, a causa é provavelmente um dos seguintes motivos:

  • As rotas não estão configuradas com sua sub-rede ou intervalos de endereços ponto a site em seu gateway local.
  • Os grupos de segurança de rede estão bloqueando o acesso ao seu intervalo de IP ponto a site.
  • Os firewalls locais estão bloqueando o tráfego de seu intervalo de IP ponto a site.
  • Você está tentando acessar um endereço não RFC 1918 usando o recurso de integração de rede virtual regional.

Como excluir o plano do Serviço de Aplicativo ou o aplicativo Web antes de desconectar a integração VNet

Se você excluiu o aplicativo Web ou o plano do Serviço de Aplicativo antes de desconectar a integração VNet, não poderá fazer operações de atualização/exclusão na rede virtual ou na sub-rede usada para a integração com o recurso excluído. Uma delegação de sub-rede "Microsoft.Web/serverFarms" permanecerá atribuída à sua sub-rede e impedirá as operações de atualização/exclusão.

Para atualizar/excluir a sub-rede ou a rede virtual novamente, você precisa criar novamente a integração VNet e desconectá-la:

  1. Crie o plano do Serviço de Aplicativo e o aplicativo Web (é obrigatório usar exatamente o mesmo nome do aplicativo Web anterior).
  2. Navegue até a folha "Rede" no aplicativo Web e configure a integração VNet.
  3. Depois que a integração VNet estiver configurada, escolha o botão "Desconectar".
  4. Exclua o plano do Serviço de Aplicativo ou o aplicativo Web.
  5. Atualize ou exclua a sub-rede ou a rede virtual.

Se você ainda encontrar problemas com a integração VNet depois de seguir as etapas acima, entre em contato com Suporte da Microsoft.

Solução de problemas de rede

Você também pode usar a solução de problemas de rede para resolver problemas de conexão. Para abrir a solução de problemas de rede, acesse o aplicativo no portal do Azure. Selecione Diagnóstico e solução de problemas e pesquise Solução de problemas de rede.

Problemas de conexão – Verifica o status da integração de rede virtual, incluindo verificar se o IP privado foi atribuído a todas as instâncias do plano e às configurações do DNS. Se um DNS personalizado não estiver configurado, o DNS padrão do Azure será aplicado. A solução de problemas também verificar se há dependências comuns do aplicativo de funções, incluindo conectividade para o Armazenamento do Microsoft Azure e outras dependências de associação.

Captura de tela que mostra a solução de problemas para problemas de conexão.

Problemas de configuração – Essa solução de problemas verifica se sua sub-rede é válida para a integração de rede virtual.

Captura de tela que mostra a execução da solução de problemas para problemas de configuração.

Problema de exclusão de sub-rede/VNet – Essa solução de problemas verifica se sua sub-rede tem bloqueios e se tem Links de Associação de Serviço não utilizados que podem estar bloqueando a exclusão da VNet/sub-rede.

Próximas etapas

Para saber mais sobre rede e o Azure Functions: