Partilhar via


Opções de rede das Funções do Azure

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

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

Caraterística Plano de consumo Plano de consumo Flex Plano Premium Plano específico/ASE Aplicativos de contêiner*
Restrições de IP de entrada ✅Sim ✅Sim ✅Sim ✅Sim ❌Não
Pontos de extremidade privados de entrada ❌Não ✅Sim ✅Sim ✅Sim ❌Não
Integração da 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 ❌Não

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

Recursos de início rápido

Use os recursos a seguir para começar rapidamente a usar cenários de rede do Azure Functions. Esses recursos são referenciados ao longo do artigo.

Recursos de rede de entrada

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

Restrições de acesso de entrada

Você pode usar restrições de acesso para definir uma lista ordenada por prioridade de endereços IP que têm acesso permitido ou negado ao seu aplicativo. A lista pode incluir endereços IPv4 e IPv6 ou sub-redes de rede virtual específicas usando pontos de extremidade de serviço. Quando existem uma ou mais entradas, existe uma indicação “negar tudo” implícita no final da lista. As restrições de IP funcionam com todas as opções de hospedagem de funções.

As restrições de acesso estão disponíveis no plano Flex Consumption, Elastic Premium, Consumo e Serviço de aplicativo.

Nota

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

Para saber mais, consulte Restrições de acesso estático do Serviço de Aplicativo do Azure.

Pontos finais privados

O Ponto Final Privado do Azure é uma interface de rede que o liga em privado e com segurança a um serviço com a tecnologia do Azure Private Link. O Ponto Final Privado utiliza um endereço IP privado a partir da rede virtual, o que leva de forma eficaz o serviço até à sua rede virtual.

Você pode usar o Private Endpoint para suas funções hospedadas nos planos Premium e do Serviço de Aplicativo.

Se você quiser fazer chamadas para pontos de extremidade privados, então você deve certificar-se de que suas pesquisas de DNS resolvem para o ponto de extremidade privado. Você pode impor esse comportamento de uma das seguintes maneiras:

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

Para saber mais, consulte Usando pontos de extremidade privados para aplicativos Web.

Para chamar outros serviços que tenham uma conexão de ponto de extremidade privada, como armazenamento ou barramento de serviço, certifique-se de configurar seu 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 para seu aplicativo de função, visite restringir sua conta de armazenamento a uma rede virtual.

Pontos finais de serviço

Usando pontos de extremidade de serviço, você pode restringir muitos serviços do Azure a sub-redes de rede virtual selecionadas para fornecer um nível mais alto de segurança. A integração de rede virtual regional permite que seu aplicativo de função alcance os serviços do Azure que são protegidos com pontos de extremidade de serviço. Esta configuração é suportada em todos os planos que suportam a integração de rede virtual. Para acessar um serviço protegido por ponto de extremidade, você deve fazer o seguinte:

  1. Configure a integração de rede virtual regional com seu aplicativo de função 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 na sub-rede de integração.

Para saber mais, consulte 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. Em seguida, você pode selecionar a assinatura, a rede virtual e a sub-rede à qual deseja permitir ou negar acesso.

Se os pontos de extremidade de serviço ainda não estiverem habilitados para Microsoft.Web a sub-rede selecionada, eles serão habilitados automaticamente, a menos que você marque a caixa de seleção Ignorar 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 se você tem as permissões para habilitá-los na sub-rede.

Se você precisar de outra pessoa para habilitar pontos de extremidade de serviço na sub-rede, marque a caixa de seleção Ignorar pontos de extremidade de serviço Microsoft.Web ausentes . Seu aplicativo é configurado para pontos de extremidade de serviço em antecipação a habilitá-los posteriormente na sub-rede.

Captura de ecrã do painel

Não é possível usar pontos de extremidade de serviço para restringir o acesso a aplicativos executados em um Ambiente do Serviço de Aplicativo. Quando seu aplicativo está em um Ambiente do Serviço de Aplicativo, você pode controlar o acesso a ele aplicando regras de acesso IP.

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

Integração da rede virtual

A integração de rede virtual permite que seu aplicativo de função acesse recursos dentro de uma rede virtual. O Azure Functions suporta dois tipos de integração de rede virtual:

  • Os níveis de preços de computação dedicados, que incluem o Basic, 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 níveis de preços Isolado e Isolado v2.

O recurso de integração de rede virtual é usado nas camadas de preços de computação dedicadas do Serviço de Aplicativo do Azure. Se seu aplicativo estiver em um Ambiente do Serviço de Aplicativo, ele já está em uma rede virtual e não requer o uso do recurso de integração de rede virtual para alcançar recursos na mesma rede virtual. Para obter mais informações sobre todos os recursos de rede, consulte Recursos de rede do Serviço de Aplicativo.

A integração de rede virtual dá ao seu aplicativo acesso a recursos em sua rede virtual, mas não concede acesso privado de entrada ao seu aplicativo a partir da rede virtual. O acesso ao site privado refere-se a tornar um aplicativo acessível somente a partir 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 seu aplicativo para a rede virtual. O recurso de integração de rede virtual se comporta de forma diferente quando é usado com redes virtuais na mesma região e com redes virtuais em outras regiões. O recurso de integração de rede virtual tem duas variações:

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

O recurso de integração de rede virtual:

  • Requer um nível de preço suportado Basic ou Standard, Premium, Premium v2, Premium v3 ou Elastic Premium App Service.
  • Suporta TCP e UDP.
  • Funciona com aplicativos do Serviço de Aplicativo e aplicativos de função.

Há algumas coisas que a integração de rede virtual não suporta, como:

  • Montagem de uma unidade.
  • Ingresso no domínio do Ative Directory do Windows Server.
  • NetBIOS.

A integração de rede virtual necessária pelo 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 permite o acesso a recursos disponíveis em conexões de Rota Expressa do Azure nem funciona com pontos de extremidade de serviço.

Não importa qual versão seja usada, a integração de rede virtual dá ao seu aplicativo acesso a recursos em sua rede virtual, mas não concede acesso privado de entrada ao seu aplicativo a partir da rede virtual. O acesso ao site privado refere-se a tornar seu aplicativo acessível somente a partir de uma rede privada, como de dentro de uma rede virtual do Azure. A integração de rede virtual é apenas para fazer chamadas de saída do seu aplicativo para a sua rede virtual.

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

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

Habilite a integração de rede virtual

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

  2. Selecione Adicionar rede virtual.

    Selecionar integração VNet

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

    Selecione a rede virtual

    • Os planos Functions Flex Consumption e Elastic Premium suportam apenas a integração de rede virtual regional. Se a rede virtual estiver na mesma região, crie uma nova sub-rede ou selecione uma sub-rede vazia e pré-existente.

    • Para selecionar uma rede virtual em outra região, você deve ter um gateway de rede virtual provisionado com ponto a site habilitado. A integração de rede virtual entre regiões só é suportada para planos dedicados, mas os pares globais funcionam com integração de rede virtual regional.

Durante a integração, seu aplicativo é reiniciado. Quando a integração estiver concluída, você verá detalhes na rede virtual com a qual está integrado. Por padrão, o Route All está habilitado e todo o tráfego é roteado para sua rede virtual.

Se desejar que apenas o seu tráfego privado (RFC1918 tráfego) seja encaminhado, siga os passos indicados na documentação do serviço da aplicação.

Integração regional de redes virtuais

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

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

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

  • Grupos de segurança de rede (NSGs): você pode bloquear o tráfego de saída com um NSG 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.
  • Tabelas de rotas (UDRs): Você pode colocar uma tabela de rotas na sub-rede de integração para enviar o tráfego de saída para onde quiser.

Nota

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ção 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 lugar.

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

Para o plano Flex Consumption:

  1. Certifique-se de que o provedor de recursos do Azure esteja habilitado Microsoft.App para sua assinatura seguindo estas instruções. A delegação de sub-rede exigida pelos aplicativos Flex Consumption é Microsoft.App/environments.
  2. A delegação de sub-rede exigida pelos aplicativos Flex Consumption é Microsoft.App/environments. Esta é uma alteração do Elastic Premium e do App Service, que têm um requisito de delegação diferente.
  3. Você pode planejar o uso máximo de 40 endereços IP para um aplicativo de função, mesmo que o aplicativo seja dimensionado além de 40. Por exemplo, se você tiver quinze aplicativos de função Flex Consumption que serão VNet integrados na mesma sub-rede, você pode planejar 15x40 = 600 endereços IP usados no máximo. Este limite está sujeito a alterações e não é aplicado.
  4. A sub-rede ainda não pode estar em uso para outros fins (como pontos de extremidade privados ou de serviço, ou delegados a qualquer outro plano ou serviço de hospedagem). Embora você possa compartilhar a mesma sub-rede com vários aplicativos Flex Consumption, os recursos de rede serão compartilhados entre esses aplicativos de função e isso pode levar a que um aplicativo de função afete o desempenho de outros na mesma sub-rede.

Existem algumas limitações com o uso da rede virtual:

  • O recurso está disponível no Flex Consumption, Elastic Premium e App Service Premium V2 e Premium V3. Ele também está disponível no Padrão, mas apenas em implantações mais recentes do Serviço de Aplicativo. Se você estiver em uma implantação mais antiga, só poderá usar o recurso de um plano do Serviço de Aplicativo Premium V2. Se você quiser ter certeza de que pode usar o recurso em um plano do Serviço de Aplicativo Padrão, crie seu aplicativo em um plano do Serviço de Aplicativo Premium V3. Esses planos só são suportados em nossas implantações mais recentes. Você pode reduzir se desejar depois disso.
  • A sub-rede de integração pode ser usada por apenas um plano do Serviço de Aplicativo.
  • O recurso não pode ser usado por aplicativos de plano isolados que estão em um Ambiente do Serviço de Aplicativo.
  • O recurso requer uma sub-rede não utilizada que seja /28 ou maior em uma rede virtual do Azure Resource Manager.
  • A aplicação e a rede virtual têm de estar na mesma região.
  • Não é possível 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 regionais de rede virtual 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.
  • Não é possível alterar a assinatura de um aplicativo ou plano enquanto houver um aplicativo que esteja 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 Elastic Premium e App Service, um endereço é usado da sub-rede de integração para cada instância do plano. Quando você dimensiona seu aplicativo para quatro instâncias, quatro endereços são usados. Para o Flex Consumption isso não se aplica e as instâncias compartilham endereços IP.

Quando você aumenta ou diminui de tamanho, o espaço de endereçamento necessário é dobrado por um curto período de tempo. Isso afeta as instâncias reais com suporte disponíveis 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ê precise aumentar ou diminuir a escala 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 grande o suficiente para acomodar qualquer escala que seu aplicativo possa alcançar. Para evitar problemas com a capacidade de sub-rede para os planos Functions Elastic 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 seus aplicativos em outro plano alcancem uma rede virtual que já esteja conectada por aplicativos em outro plano, selecione uma sub-rede diferente daquela que está sendo usada pela integração de rede virtual pré-existente.

O recurso é totalmente compatível com aplicativos Windows e Linux, incluindo contêineres personalizados. Todos os comportamentos agem da mesma forma 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 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 em sua rede virtual ou na Internet. Para bloquear o tráfego para endereços públicos, você deve ter a integração de rede virtual com o Route All 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 do seu aplicativo.

Para controlar o tráfego de entrada para seu aplicativo, use o recurso Restrições de acesso. Um NSG aplicado à sua sub-rede de integração está em vigor independentemente de quaisquer rotas aplicadas à sua sub-rede de integração. Se o seu aplicativo de função estiver integrado à rede virtual com o Route All habilitado e você não tiver nenhuma rota que afete o tráfego de endereço público em 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 o Route All não está habilitado, os NSGs são aplicados apenas 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 RFC1918 de destino. Quando a opção Rotear Tudo está ativada, todas as suas chamadas de saída são afetadas. Quando a opção Rota Tudo está desativada, apenas o tráfego privado (RFC1918) é afetado pelas tabelas de rotas. As rotas definidas na sub-rede de integração não afetarão as respostas às solicitações de entrada do aplicativo. Destinos comuns podem incluir dispositivos de firewall ou gateways.

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

As rotas BGP (Border Gateway Protocol) também afetam o tráfego do aplicativo. Se você tiver rotas BGP de algo como um gateway de Rota Expressa, o tráfego de saída do aplicativo será afetado. Por padrão, as rotas BGP afetam apenas o tráfego RFC1918 de destino. Quando seu aplicativo de função é rede virtual integrada com o Route All habilitado, 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 do DNS do Azure vinculadas à rede virtual.

Restringir a conta de armazenamento a uma rede virtual

Nota

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

Ao criar um aplicativo funcional, você deve criar ou vincular a uma conta de Armazenamento do Azure de uso geral que ofereça suporte ao armazenamento de Blob, Fila e Tabela. Você pode substituir essa conta de armazenamento por uma que esteja protegida com pontos de extremidade de serviço ou pontos de extremidade privados.

Esse recurso é compatível com todas as SKUs suportadas pela rede virtual Windows e Linux no plano Dedicado (Serviço de Aplicativo) e para os planos Elastic Premium, bem como para o plano Flex Consumption. O plano de consumo não é suportado. Para saber como configurar uma função com uma conta de armazenamento restrita a uma rede privada, consulte Restringir sua conta de armazenamento a uma rede virtual.

Utilizar as referências do Key Vault

Você pode usar referências do Azure Key Vault para usar segredos do Azure Key Vault em seu aplicativo do Azure Functions sem exigir nenhuma alteração de código. O Azure Key Vault é um serviço que fornece gestão centralizada de segredos, com controlo 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 Cofre da Chave poderão ser usadas para recuperar segredos de um cofre restrito à rede.

Gatilhos de rede virtual (não HTTP)

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

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

Plano Elastic Premium com gatilhos de rede virtual

O plano Elastic Premium permite criar funções que são acionadas 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ção seja dimensionado além da contagem de instâncias pré-aquecidas. No entanto, certas extensões suportam gatilhos de rede virtual que fazem com que seu aplicativo de função seja dimensionado dinamicamente. Você pode habilitar esse monitoramento de escala dinâmica em seu aplicativo de função para extensões suportadas de uma destas maneiras:

  1. No portal do Azure, navegue até seu aplicativo de função.

  2. Em Configurações, selecione Configuração e, na guia Configurações de tempo de execução da função, defina Monitoramento de escala de tempo de execução como Ativado.

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

VNETToggle

Gorjeta

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

O suporte para monitoramento de escala dinâmica de gatilhos de rede virtual não está disponível na versão 1.x do tempo de execução do Functions.

As extensões nesta tabela suportam o monitoramento de escala dinâmica de gatilhos de rede virtual. Para obter o melhor desempenho de dimensionamento, você deve atualizar para versões que também ofereçam suporte ao dimensionamento baseado em destino.

Extensão (versão mínima) Somente monitoramento de escala de tempo de execução Com dimensionamento baseado em destino
Microsoft.Azure.WebJobs.Extensões.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*

* Apenas armazenamento em fila.

Importante

Quando você habilita o monitoramento de gatilhos de rede virtual, somente gatilhos para essas extensões podem fazer com que seu aplicativo seja dimensionado dinamicamente. Você ainda pode usar 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 pré-aquecidas. Para obter uma lista completa de todas as extensões de gatilho e vinculação, consulte 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ção é 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 acionadas corretamente, você deve estar conectado a uma rede virtual com acesso ao recurso definido na conexão de gatilho.

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

Ligações Híbridas

As Conexões Híbridas são um recurso do Azure Relay que você pode usar para acessar recursos de aplicativos em outras redes. Ele fornece acesso do seu aplicativo a um ponto de extremidade do aplicativo. Você não pode usá-lo para acessar seu aplicativo. As Conexões Híbridas estão disponíveis para funções executadas no Windows em todos, exceto no plano de Consumo.

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

Para saber mais, consulte 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

As Ligações Híbridas só são suportadas nos planos do Windows. Linux não é suportado.

Restrições de IP de saída

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

Quando você integra um aplicativo funcional em um plano Elastic Premium ou 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. Ao integrar seu aplicativo de função com uma rede virtual com o Route All habilitado, 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 Flex Consumption todo o tráfego já é roteado através da 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 NAT de rede virtual do Azure.

Automatização

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

  • CLI do Azure: use os az functionapp vnet-integration comandos para adicionar, listar ou remover uma integração de rede virtual regional.
  • Modelos ARM: a integração de rede virtual regional pode ser habilitada usando um modelo do Azure Resource Manager. Para obter um exemplo completo, consulte este modelo de início rápido do Functions.

Considerações sobre testes

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

  • 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ção com pontos de extremidade privados ou qualquer outra restrição de acesso, também deve adicionar a tag AzureCloud de serviço à lista de permissões. Para atualizar a lista de permitidos:

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

  2. Certifique-se de que Acesso à rede pública está definido como Ativado a partir de redes virtuais e endereços IP selecionados.

  3. Adicione uma regra em Acesso ao site e regras:

    1. Selecione Service Tag como Tipo de configurações de origem e AzureCloud como Etiqueta de serviço.

    2. Certifique-se de que a ação é Permitir e defina o nome e a prioridade desejados.

Resolução de Problemas

O recurso é fácil de configurar, mas isso não significa que sua experiência será livre de problemas. Se você tiver problemas para acessar o ponto de extremidade desejado, há alguns utilitários que você pode usar para testar a conectividade a partir do console do aplicativo. Há dois consoles que você pode usar. Um é o console Kudu e o outro é o console no portal do Azure. Para aceder à consola Kudu a partir da sua aplicação, aceda a Ferramentas>Kudu. Você também pode acessar o console do Kudo em [sitename].scm.azurewebsites.net. Depois que o site carregar, vá para a guia Console de depuração. Para aceder à consola alojada no portal do Azure a partir da sua aplicação, aceda a Consola de Ferramentas>.

Ferramentas

Em aplicativos nativos do Windows, as ferramentas ping, nslookup e tracert não funcionarão no console devido a restrições de segurança (elas funcionam em contêineres personalizados do Windows). Para preencher o vazio, duas ferramentas separadas são adicionadas. Para testar a funcionalidade do DNS, adicionámos uma ferramenta denominada nameresolver.exe. A sintaxe é:

nameresolver.exe hostname [optional: DNS Server]

Você pode usar nameresolver para verificar os nomes de host dos quais seu aplicativo depende. Desta forma, pode testar se tem algo mal configurado 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 ambientais WEBSITE_DNS_SERVER e WEBSITE_DNS_ALT_SERVER.

Nota

Atualmente, a ferramenta nameresolver.exe não funciona em contêineres personalizados do Windows.

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

tcpping.exe hostname [optional: port]

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

Depurar o acesso a recursos hospedados na rede virtual

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

  • Um firewall está no caminho. Se você tiver um firewall no caminho, você atinge o tempo limite de TCP. Neste caso, o tempo limite do TCP é de 21 segundos. 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 de DNS é de 3 segundos por servidor DNS. Se você tiver dois servidores DNS, o tempo limite é de 6 segundos. Use nameresolver para ver se o DNS está funcionando. Você não pode usar nslookup, porque isso não usa o DNS com o qual sua rede virtual está configurada. Se inacessível, você pode ter um firewall ou NSG bloqueando o acesso ao DNS ou ele pode estar inativo.

Se esses itens não responderem aos seus problemas, procure primeiro por coisas como:

Integração regional de redes virtuais

  • O seu destino é um endereço não RFC1918 e não tem o Route All ativado?
  • Existe um NSG bloqueando a saída da sua sub-rede de integração?
  • Se você estiver usando o Azure ExpressRoute ou uma VPN, seu gateway local está configurado para rotear o tráfego de volta para o Azure? Se você puder alcançar pontos de extremidade em sua rede virtual, mas não localmente, 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 de rede virtual regional, sua sub-rede de integração é delegada a Microsoft.Web/serverFarms. A interface do usuário de integração 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 necessária pelo 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 estando no portal? Se o seu gateway estiver inativo, então traga-o de volta para cima.
  • Os certificados são apresentados como estando sincronizados ou suspeita que a configuração de rede foi alterada? Se os certificados estiverem fora de sincronia ou se suspeitar que foi feita uma alteração na configuração da rede virtual que não foi sincronizada com os ASPs, selecione Sincronizar rede.
  • Se você estiver passando por uma VPN, o gateway local está configurado para rotear o tráfego de volta para o Azure? Se você puder alcançar pontos de extremidade em sua rede virtual, mas não localmente, verifique suas rotas.
  • Você está tentando usar um gateway de coexistência que suporte ponto a site e Rota Expressa? Os gateways de coexistência não são suportados com a integração de rede virtual.

Depurar problemas de rede é um desafio porque você não pode ver o que está bloqueando o acesso a uma combinação específica host:port. Algumas causas incluem:

  • Você tem um firewall instalado no host que impede o acesso à porta do aplicativo a partir do intervalo de IP ponto a site. O cruzamento de sub-redes geralmente requer acesso público.
  • Seu host alvo está inativo.
  • Seu aplicativo está inativo.
  • Você tinha o IP ou nome de host errado.
  • Seu aplicativo está escutando em uma porta diferente do que você esperava. Você pode combinar seu ID de processo com a porta de escuta usando "netstat -aon" no host do ponto final.
  • Os grupos de segurança de rede são configurados de tal forma que impedem o acesso ao host e à porta do aplicativo a partir 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 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 em sua rede virtual e tente acessar seu recurso host:port a partir daí. Para testar o acesso TCP, use o comando do PowerShell Test-NetConnection. A sintaxe é:
Test-NetConnection hostname [optional: -Port]
  • Abra um aplicativo em uma VM e teste o acesso a esse host e porta do console do seu aplicativo usando tcpping.

Recursos no local

Se a sua aplicação não conseguir aceder a um recurso no local, verifique se consegue aceder ao recurso a partir da sua rede virtual. Use o comando Test-NetConnection PowerShell para verificar o acesso TCP. Se sua VM não puder acessar seu recurso local, sua conexão VPN ou ExpressRoute pode não estar configurada corretamente.

Se sua VM hospedada na rede virtual puder acessar seu sistema local, mas seu aplicativo não puder, a causa provavelmente será um dos seguintes motivos:

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

Excluindo o plano do Serviço de Aplicativo ou o aplicativo Web antes de desconectar a integração da rede virtual

Se você excluiu o aplicativo Web ou o plano do Serviço de Aplicativo sem desconectar a integração da rede virtual primeiro, não poderá fazer nenhuma operação de atualização/exclusão na rede virtual ou sub-rede que foi 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 fazer a atualização/exclusão da sub-rede ou rede virtual novamente, você precisa recriar a integração VNet e, em seguida, desconectá-la:

  1. Recrie o plano do Serviço de Aplicativo e o aplicativo Web (é obrigatório usar exatamente o mesmo nome do aplicativo Web como antes).
  2. Navegue até a folha 'Rede' no aplicativo Web e configure a integração de rede virtual.
  3. Depois que a integração da rede virtual estiver configurada, selecione o botão 'Desconectar'.
  4. Exclua o plano do Serviço de Aplicativo ou o aplicativo Web.
  5. Atualizar/excluir a sub-rede ou rede virtual.

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

Resolução de problemas de rede

Também pode utilizar a Resolução de problemas de Rede para resolver problemas de ligação. Para abrir a resolução de problemas de rede, aceda à aplicação no portal do Azure. Selecione Diagnosticar e resolver problema e, em seguida, procure Resolução de problemas de rede.

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

Captura de ecrã que mostra a resolução de problemas em execução para problemas de ligação.

Problemas de configuração - Esta resolução de problemas verifica se a sua sub-rede é válida para a Integração de rede virtual.

Captura de ecrã que mostra a resolução de problemas em execução para problemas de configuração.

Problema de exclusão de sub-rede/VNet - Esta solução de problemas verifica se sua sub-rede tem algum bloqueio e se tem algum link de associação de serviço não utilizado que possa estar bloqueando a exclusão da VNet/sub-rede.

Próximos passos

Para saber mais sobre rede e Azure Functions: