Skip to content

Commit 6e9f5f9

Browse files
committed
Update networking features documentation to reflect recent changes in Azure Functions networking options and clarify service endpoint support
1 parent 682964f commit 6e9f5f9

2 files changed

Lines changed: 77 additions & 66 deletions

File tree

articles/azure-functions/functions-networking-options.md

Lines changed: 69 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
---
22
title: Azure Functions networking options
3-
description: An overview of all networking options available in Azure Functions.
4-
author: ggailey777
5-
ms.topic: overview
3+
description: Explore all supported Azure Functions networking features, including IP restrictions, private and service endpoints, and virtual network integration.
4+
#customer intent: As a developer, I want to integrate my Azure Function app with a virtual network so that my app can securely access private resources.
5+
ms.topic: concept-article
66
ms.date: 03/03/2026
7-
ms.author: cachai
87
ms.custom:
98
- build-2024
109
- sfi-image-nochange
@@ -34,28 +33,31 @@ Use the following resources to quickly get started with Azure Functions networki
3433
* [Restrict your storage account to a virtual network](configure-networking-how-to.md#restrict-your-storage-account-to-a-virtual-network).
3534
* [Control Azure Functions outbound IP with an Azure virtual network NAT gateway](functions-how-to-use-nat-gateway.md).
3635

37-
## Inbound networking features
38-
39-
The following features let you filter inbound requests to your function app.
40-
41-
### Inbound access restrictions
36+
## Inbound access restrictions
4237

4338
You can use access restrictions to define a priority-ordered list of IP addresses that are allowed or denied access to your app. The list can include IPv4 and IPv6 addresses, or specific virtual network subnets using [service endpoints](#use-service-endpoints). When there are one or more entries, an implicit "deny all" exists at the end of the list. IP restrictions work with all function-hosting options.
4439

45-
Access restrictions are available in the [Flex Consumption plan](flex-consumption-plan.md), [Elastic Premium](functions-premium-plan.md), [Consumption](consumption-plan.md), and [App Service](dedicated-plan.md).
40+
::: zone pivot="flex-consumption-plan,premium-plan,dedicated-plan,consumption-plan"
4641

4742
> [!NOTE]
4843
> With network restrictions in place, you can deploy only from within your virtual network, or when you put the IP address of the machine you're using to access the Azure portal on the **Safe Recipients** list. However, you can still manage the function using the portal.
4944
5045
To learn more, see [Azure App Service static access restrictions](../app-service/app-service-ip-restrictions.md).
5146

52-
### Private endpoints
47+
::: zone-end
48+
::: zone pivot="container-apps"
49+
50+
When running on [Container Apps](./functions-container-apps-hosting.md), inbound access is managed through the Container Apps environment ingress configuration rather than App Service access restrictions. For more information, see [IP restrictions in Azure Container Apps](../container-apps/ip-restrictions.md).
51+
52+
::: zone-end
53+
54+
## Private endpoints (inbound)
5355

5456
[!INCLUDE [functions-private-site-access](../../includes/functions-private-site-access.md)]
5557

5658
To call other services that have a private endpoint connection, such as storage or service bus, be sure to configure your app to make [outbound calls to private endpoints](#private-endpoints). For more details on using private endpoints with the storage account for your function app, visit [restrict your storage account to a virtual network](#restrict-your-storage-account-to-a-virtual-network).
5759

58-
### Service endpoints
60+
## Service endpoints (inbound)
5961

6062
Using service endpoints, you can restrict many Azure services to selected virtual network subnets to provide a higher level of security. Regional virtual network integration enables your function app to reach Azure services that are secured with service endpoints. This configuration is supported on all [plans](functions-scale.md#networking-features) that support virtual network integration. Follow these steps to access a secured service endpoint:
6163

@@ -64,7 +66,7 @@ Using service endpoints, you can restrict many Azure services to selected virtua
6466

6567
To learn more, see [Virtual network service endpoints](../virtual-network/virtual-network-service-endpoints-overview.md).
6668

67-
#### Use Service Endpoints
69+
### Use Service Endpoints
6870

6971
To restrict access to a specific subnet, create a restriction rule with a **Virtual Network** type. You can then select the subscription, virtual network, and subnet that you want to allow or deny access to.
7072

@@ -78,24 +80,34 @@ You can't use service endpoints to restrict access to apps that run in an App Se
7880

7981
To learn how to set up service endpoints, see [Establish Azure Functions private site access](functions-create-private-site-access.md).
8082

81-
## Outbound networking features
82-
83-
You can use the features in this section to manage outbound connections made by your app.
83+
::: zone pivot="flex-consumption-plan,premium-plan,dedicated-plan,container-apps"
8484

85-
### Virtual network integration
85+
## Virtual network integration (outbound)
8686

8787
This section details the features that Functions supports to control data outbound from your app.
8888

8989
Virtual network integration gives your function app access to resources in your virtual network. Once integrated, your app routes outbound traffic through the virtual network. This allows your app to access private endpoints or resources with rules allowing traffic from only select subnets. When the destination is an IP address outside of the virtual network, the source IP will still be sent from one of the addresses listed in your app's properties, unless you've configured a NAT Gateway.
9090

91+
::: zone-end
92+
::: zone pivot="flex-consumption-plan,premium-plan,container-apps"
93+
94+
Azure Functions supports regional virtual network integration, which is the recommended approach. To learn how to set up virtual network integration, see [Enable virtual network integration](#enable-virtual-network-integration).
95+
96+
::: zone-end
97+
::: zone pivot="dedicated-plan"
98+
9199
Azure Functions supports two kinds of virtual network integration:
92100

93-
* [Regional virtual network integration](#regional-virtual-network-integration) for apps running on the [Flex Consumption](./flex-consumption-plan.md), [Elastic Premium](./functions-premium-plan.md), [Dedicated (App Service)](./dedicated-plan.md), and [Container Apps](./functions-container-apps-hosting.md) hosting plans (recommended)
94-
* [Gateway-required virtual network integration](../app-service/configure-gateway-required-vnet-integration.md) for apps running on the [Dedicated (App Service)](./dedicated-plan.md) hosting plan
101+
* [Regional virtual network integration](#regional-virtual-network-integration) (recommended)
102+
* [Gateway-required virtual network integration](../app-service/configure-gateway-required-vnet-integration.md)
95103

96104
To learn how to set up virtual network integration, see [Enable virtual network integration](#enable-virtual-network-integration).
97105

98-
### Regional virtual network integration
106+
::: zone-end
107+
108+
::: zone pivot="flex-consumption-plan,premium-plan,dedicated-plan,container-apps"
109+
110+
## Regional virtual network integration (outbound)
99111

100112
Using regional virtual network integration enables your app to access:
101113

@@ -116,11 +128,6 @@ When you use regional virtual network integration, you can use the following Azu
116128
>
117129
> Regional virtual network integration isn't able to use port 25.
118130
119-
::: zone pivot="consumption-plan"
120-
121-
> [!NOTE]
122-
> The Consumption plan doesn't support virtual network integration. To use virtual network integration, consider hosting your function app instead in a [Flex Consumption](./flex-consumption-plan.md), [Elastic Premium](./functions-premium-plan.md), or [Dedicated (App Service)](./dedicated-plan.md) plan.
123-
124131
::: zone-end
125132
::: zone pivot="flex-consumption-plan"
126133

@@ -173,7 +180,8 @@ During the integration, your app is restarted. When integration is finished, you
173180

174181
If you prefer to only have your private traffic ([RFC1918](https://datatracker.ietf.org/doc/html/rfc1918#section-3) traffic) routed, follow the steps in this [App Service article](../app-service/overview-vnet-integration.md#application-routing).
175182

176-
::: zone-end
183+
::: zone-end
184+
::: zone pivot="flex-consumption-plan,premium-plan,dedicated-plan,container-apps"
177185

178186
### Subnets
179187

@@ -190,12 +198,7 @@ The following table summarizes the subnet requirements for each hosting plan:
190198
| Container Apps | Managed by environment | See [Container Apps networking](../container-apps/networking.md) | See [Container Apps networking](../container-apps/networking.md) | `Microsoft.App/environments` |
191199
| Consumption | Not supported | N/A | N/A | N/A |
192200

193-
Make sure to select your hosting plan at the top of the article for plan-specific details.
194-
195-
::: zone pivot="consumption-plan"
196-
197-
The Consumption plan doesn't support virtual network integration, so subnet sizing guidance doesn't apply to this plan. To use virtual network integration, consider the [Flex Consumption plan](./flex-consumption-plan.md), [Elastic Premium plan](./functions-premium-plan.md), or [Dedicated (App Service) plan](./dedicated-plan.md).
198-
201+
Make sure to select your hosting plan at the top of the article for plan-specific details.
199202
::: zone-end
200203
::: zone pivot="container-apps"
201204

@@ -270,7 +273,7 @@ Border Gateway Protocol (BGP) routes also affect your app traffic. If you have B
270273

271274
### Outbound IP restrictions
272275

273-
Outbound IP restrictions are available in a Flex Consumption plan, Elastic Premium plan, App Service plan, or App Service Environment. You can configure outbound restrictions for the virtual network where your App Service Environment is deployed.
276+
You can configure outbound restrictions for the virtual network where your App Service Environment is deployed.
274277

275278
When you integrate a function app in an Elastic Premium plan or an App Service plan with a virtual network, the app can still make outbound calls to the internet by default. By integrating your function app with a virtual network with Route All enabled, you force all outbound traffic to be sent into your virtual network, where network security group rules can be used to restrict traffic. For Flex Consumption, all traffic is already routed through the virtual network, and **Route All** isn't needed.
276279

@@ -289,17 +292,11 @@ The following APIs let you programmatically manage regional virtual network inte
289292

290293
::: zone-end
291294

292-
## Hybrid Connections
293-
294-
[Hybrid Connections](../azure-relay/relay-hybrid-connections-protocol.md) is a feature of Azure Relay that you can use to access application resources in other networks. It provides access from your app to an application endpoint. You can't use it to access your application. Hybrid Connections is available to functions that run on Windows in all but the Consumption plan.
295-
296-
::: zone pivot="consumption-plan,flex-consumption-plan"
295+
::: zone pivot="premium-plan,dedicated-plan,container-apps"
297296

298-
> [!NOTE]
299-
> Hybrid Connections isn't supported on the Consumption or Flex Consumption plans. To use Hybrid Connections, consider the [Elastic Premium plan](./functions-premium-plan.md) or [Dedicated (App Service) plan](./dedicated-plan.md).
297+
## Hybrid Connections
300298

301-
::: zone-end
302-
::: zone pivot="premium-plan,dedicated-plan,container-apps"
299+
[Hybrid Connections](../azure-relay/relay-hybrid-connections-protocol.md) is a feature of Azure Relay that you can use to access application resources in other networks. It provides access from your app to an application endpoint. You can't use it to access your application.
303300

304301
As used in Azure Functions, each hybrid connection correlates to a single TCP host and port combination. This means that the hybrid connection's endpoint can be on any operating system and any application as long as you're accessing a TCP listening port. The Hybrid Connections feature doesn't know or care what the application protocol is or what you're accessing. It just provides network access.
305302

@@ -310,6 +307,8 @@ To learn more, see the [App Service documentation for Hybrid Connections](../app
310307
311308
::: zone-end
312309

310+
::: zone pivot="flex-consumption-plan,premium-plan,dedicated-plan,container-apps"
311+
313312
## Connecting to Azure Services through a virtual network
314313

315314
Virtual network integration enables your function app to access resources in a virtual network. This section overviews things you should consider when attempting to connect your app to certain services.
@@ -321,27 +320,38 @@ Virtual network integration enables your function app to access resources in a v
321320
322321
When you create a function app, you must create or link to a general-purpose Azure Storage account that supports Blob, Queue, and Table storage. You can replace this storage account with one that is secured with service endpoints or private endpoints.
323322

324-
You can use a network restricted storage account with function apps on the Flex Consumption, Elastic Premium, and Dedicated (App Service) plans; the Consumption plan isn't supported. For Elastic Premium and Dedicated plans, you have to ensure that private [content share routing](../app-service/configure-vnet-integration-routing.md#content-share) is configured. To learn how to configure your function app with a storage account secured with a virtual network, see [Restrict your storage account to a virtual network](configure-networking-how-to.md#restrict-your-storage-account-to-a-virtual-network).
323+
::: zone-end
324+
::: zone pivot="flex-consumption-plan"
325+
326+
To learn how to configure your function app with a storage account secured with a virtual network, see [Restrict your storage account to a virtual network](configure-networking-how-to.md#restrict-your-storage-account-to-a-virtual-network).
327+
328+
::: zone-end
329+
::: zone pivot="premium-plan,dedicated-plan"
330+
331+
You must ensure that private [content share routing](../app-service/configure-vnet-integration-routing.md#content-share) is configured. To learn how to configure your function app with a storage account secured with a virtual network, see [Restrict your storage account to a virtual network](configure-networking-how-to.md#restrict-your-storage-account-to-a-virtual-network).
332+
333+
::: zone-end
334+
::: zone pivot="container-apps"
335+
336+
To learn how to configure your function app with a storage account secured with a virtual network, see [Restrict your storage account to a virtual network](configure-networking-how-to.md#restrict-your-storage-account-to-a-virtual-network).
337+
338+
::: zone-end
339+
340+
::: zone pivot="flex-consumption-plan,premium-plan,dedicated-plan,container-apps"
325341

326342
### Use Key Vault references
327343

328344
You can use Azure Key Vault references to use secrets from Azure Key Vault in your Azure Functions application without requiring any code changes. Azure Key Vault is a service that provides centralized secrets management, with full control over access policies and audit history.
329345

330346
If virtual network integration is configured for the app, [Key Vault references](../app-service/app-service-key-vault-references.md) can be used to retrieve secrets from a network-restricted vault.
331347

332-
### Virtual network triggers (non-HTTP)
333-
334-
Your workload might require your app to be triggered from an event source protected by a virtual network. There's two options if you want your app to dynamically scale based on the number of events received from non-HTTP trigger sources:
335-
336-
* Run your function app in a [Flex Consumption](./flex-consumption-plan.md).
337-
* Run your function app in an [Elastic Premium plan](./functions-premium-plan.md), and enable virtual network trigger support.
348+
::: zone-end
338349

339-
Function apps running on the [Dedicated (App Service)](./dedicated-plan.md) plans don't dynamically scale based on events. Rather, [autoscale](./dedicated-plan.md#scaling) rules you define dictate scale out.
350+
::: zone pivot="flex-consumption-plan,premium-plan,dedicated-plan,container-apps"
340351

341-
::: zone pivot="consumption-plan"
352+
### Virtual network triggers (non-HTTP)
342353

343-
> [!NOTE]
344-
> The Consumption plan doesn't support virtual network triggers. To use virtual network triggers with dynamic scaling, consider the [Flex Consumption plan](./flex-consumption-plan.md) or [Elastic Premium plan](./functions-premium-plan.md).
354+
Your workload might require your app to be triggered from an event source protected by a virtual network.
345355

346356
::: zone-end
347357
::: zone pivot="container-apps"
@@ -357,8 +367,6 @@ The Flex Consumption plan natively supports virtual network triggers. Your funct
357367
::: zone-end
358368
::: zone pivot="premium-plan"
359369

360-
#### Elastic Premium plan with virtual network triggers
361-
362370
The [Elastic Premium plan](functions-premium-plan.md) lets you create functions that trigger services secured by a virtual network. These non-HTTP triggers are known as _virtual network triggers_.
363371

364372
The Elastic Premium plan lets you create functions that trigger services secured by a virtual network.
@@ -414,15 +422,15 @@ The extensions in this table support dynamic scale monitoring of virtual network
414422
::: zone-end
415423
::: zone pivot="dedicated-plan"
416424

417-
#### App Service plan and App Service Environment with virtual network triggers
418-
419425
When your function app runs in either an App Service plan or an App Service Environment, you can write functions that resources secured by a virtual network trigger. For your functions to get triggered correctly, your app must be connected to a virtual network with access to the resource defined in the trigger connection.
420426

421427
For example, assume you want to configure Azure Cosmos DB to accept traffic only from a virtual network. In this case, you must deploy your function app in an App Service plan that provides virtual network integration with that virtual network. Integration enables that Azure Cosmos DB resource to trigger a function.
422428

423429
::: zone-end
424430

425-
## Testing considerations
431+
::: zone pivot="flex-consumption-plan,premium-plan,dedicated-plan"
432+
433+
## Testing private endpoints
426434

427435
When testing functions in a function app with private endpoints, you must do your testing from within the same virtual network, such as on a virtual machine (VM) in that network. To use the **Code + Test** option in the portal from that VM, you need to add following [CORS origins](./functions-how-to-use-azure-function-app-settings.md?tabs=portal#cors) to your function app:
428436

@@ -443,6 +451,8 @@ When you restrict access to your function app with private endpoints or any othe
443451

444452
1. Make sure the action is **Allow**, and set your desired name and priority.
445453

454+
::: zone-end
455+
446456
## Troubleshooting
447457

448458
[!INCLUDE [app-service-web-vnet-troubleshooting](../../includes/app-service-web-vnet-troubleshooting.md)]
@@ -461,7 +471,7 @@ You can also use the Network troubleshooter to resolve connection issues. To ope
461471

462472
**Subnet/VNet deletion issue** - This troubleshooter checks if your subnet has any locks and if it has any unused Service Association Links that might be blocking the deletion of the VNet/subnet.
463473

464-
## Next steps
474+
## Related articles
465475

466476
To learn more about networking and Azure Functions:
467477

0 commit comments

Comments
 (0)