Skip to content

Commit 0b5bdfc

Browse files
authored
Merge pull request #225524 from madsd/peupdate
Update private endpoint article
2 parents edfd164 + e985297 commit 0b5bdfc

File tree

1 file changed

+53
-81
lines changed

1 file changed

+53
-81
lines changed
Lines changed: 53 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -1,68 +1,60 @@
11
---
2-
title: Connect privately to an Azure Web App using Private Endpoint
3-
description: Connect privately to a Web App using Azure Private Endpoint
4-
author: ericgre
2+
title: Connect privately to an App Service apps using private endpoint
3+
description: Connect privately to an App Service apps using Azure private endpoint
4+
author: madsd
55
ms.assetid: 2dceac28-1ba6-4904-a15d-9e91d5ee162c
66
ms.topic: article
7-
ms.date: 08/23/2022
8-
ms.author: ericg
9-
ms.service: app-service
10-
ms.workload: web
11-
ms.custom: fasttrack-edit, references_regions
12-
7+
ms.date: 01/30/2023
8+
ms.author: madsd
139
---
1410

15-
# Using Private Endpoints for Azure Web App
11+
# Using Private Endpoints for App Service apps
1612

1713
> [!IMPORTANT]
18-
> Private Endpoint is available for Windows and Linux Web App, containerized or not, hosted on these App Service Plans : **Basic**, **Standard**, **PremiumV2**, **PremiumV3**, **IsolatedV2**, **Functions Premium** (sometimes referred to as the Elastic Premium plan).
14+
> Private endpoint is available for Windows and Linux apps, containerized or not, hosted on these App Service plans : **Basic**, **Standard**, **PremiumV2**, **PremiumV3**, **IsolatedV2**, **Functions Premium** (sometimes referred to as the Elastic Premium plan).
1915
20-
You can use Private Endpoint for your Azure Web App to allow clients located in your private network to securely access the app over Private Link. The Private Endpoint uses an IP address from your Azure virtual network address space. Network traffic between a client on your private network and the Web App traverses over the virtual network and a Private Link on the Microsoft backbone network, eliminating exposure from the public Internet.
16+
You can use private endpoint for your App Service apps to allow clients located in your private network to securely access the app over Azure Private Link. The private endpoint uses an IP address from your Azure virtual network address space. Network traffic between a client on your private network and the app traverses over the virtual network and a Private Link on the Microsoft backbone network, eliminating exposure from the public Internet.
2117

22-
Using Private Endpoint for your Web App enables you to:
18+
Using private endpoint for your app enables you to:
2319

24-
- Secure your Web App by configuring the Private Endpoint, eliminating public exposure.
25-
- Securely connect to Web App from on-premises networks that connect to the virtual network using a VPN or ExpressRoute private peering.
20+
- Secure your app by configuring the private endpoint and disable public network access to eliminating public exposure.
21+
- Securely connect to your app from on-premises networks that connect to the virtual network using a VPN or ExpressRoute private peering.
2622
- Avoid any data exfiltration from your virtual network.
2723

28-
If you just need a secure connection between your virtual network and your Web App, a Service Endpoint is the simplest solution.
29-
If you also need to reach the web app from on-premises through an Azure Gateway, a regionally peered virtual network, or a globally peered virtual network, Private Endpoint is the solution.
30-
31-
For more information, see [Service Endpoints][serviceendpoint].
32-
3324
## Conceptual overview
3425

35-
A Private Endpoint is a special network interface (NIC) for your Azure Web App in a Subnet in your virtual network.
36-
When you create a Private Endpoint for your Web App, it provides secure connectivity between clients on your private network and your Web App. The Private Endpoint is assigned an IP Address from the IP address range of your virtual network.
37-
The connection between the Private Endpoint and the Web App uses a secure [Private Link][privatelink]. Private Endpoint is only used for incoming flows to your Web App. Outgoing flows won't use this Private Endpoint. You can inject outgoing flows to your network in a different subnet through the [virtual network integration feature][vnetintegrationfeature].
26+
A private endpoint is a special network interface (NIC) for your App Service app in a subnet in your virtual network.
27+
When you create a private endpoint for your app, it provides secure connectivity between clients on your private network and your app. The private endpoint is assigned an IP Address from the IP address range of your virtual network.
28+
The connection between the private endpoint and the app uses a secure [Private Link](../../private-link/private-link-overview.md). Private endpoint is only used for incoming traffic to your app. Outgoing traffic won't use this private endpoint. You can inject outgoing traffic to your network in a different subnet through the [virtual network integration feature](../overview-vnet-integration.md).
3829

39-
Each slot of an app is configured separately. You can plug up to 100 Private Endpoints per slot. You can't share a Private Endpoint between slots.
30+
Each slot of an app is configured separately. You can plug up to 100 private endpoints per slot. You can't share a private endpoint between slots.
4031

41-
The Subnet where you plug the Private Endpoint can have other resources in it, you don't need a dedicated empty Subnet.
42-
You can also deploy the Private Endpoint in a different region than the Web App.
32+
The subnet where you plug the private endpoint can have other resources in it, you don't need a dedicated empty subnet.
33+
You can also deploy the private endpoint in a different region than your app.
4334

44-
> [!Note]
45-
>The virtual network integration feature cannot use the same subnet as Private Endpoint, this is a limitation of the virtual network integration feature.
35+
> [!NOTE]
36+
> The virtual network integration feature cannot use the same subnet as private endpoint, this is a limitation of the virtual network integration feature.
4637
4738
From a security perspective:
4839

49-
- By default, when you enable Private Endpoints to your Web App, you disable all public access.
50-
- You can enable multiple Private Endpoints in others virtual networks and Subnets, including virtual network in other regions.
51-
- The access restrictions configuration of a Web App isn't evaluated for traffic through the Private Endpoint.
52-
- You can eliminate the data exfiltration risk from the virtual network by removing all NSG rules where destination is tag Internet or Azure services. When you deploy a Private Endpoint for a Web App, you can only reach this specific Web App through the Private Endpoint. If you have another Web App, you must deploy another dedicated Private Endpoint for this other Web App.
40+
- Private endpoint and public access can co-exist on an app. For more information, see [overview of access restrictions](../overview-access-restrictions.md#how-it-works)
41+
- When you enable private endpoints to your app, ensure that public network access is disabled to ensure isolation.
42+
- You can enable multiple private endpoints in others virtual networks and subnets, including virtual network in other regions.
43+
- The access restrictions rules of your app aren't evaluated for traffic through the private endpoint.
44+
- You can eliminate the data exfiltration risk from the virtual network by removing all NSG rules where destination is tag Internet or Azure services.
5345

54-
In the Web HTTP logs of your Web App, you'll find the client source IP. This feature is implemented using the TCP Proxy protocol, forwarding the client IP property up to the Web App. For more information, see [Getting connection Information using TCP Proxy v2][tcpproxy].
46+
In the Web HTTP logs of your app, you'll find the client source IP. This feature is implemented using the TCP Proxy protocol, forwarding the client IP property up to the app. For more information, see [Getting connection Information using TCP Proxy v2](../../private-link/private-link-service-overview.md#getting-connection-information-using-tcp-proxy-v2).
5547

5648

5749
> [!div class="mx-imgBorder"]
58-
> ![Web App Private Endpoint global overview](media/private-endpoint/global-schema-web-app.png)
50+
> ![App Service app private endpoint global overview](media/private-endpoint/global-schema-web-app.png)
5951
6052

6153
## DNS
6254

63-
When you use Private Endpoint for Web App, the requested URL must match the name of your Web App. By default mywebappname.azurewebsites.net.
55+
When you use private endpoint for App Service apps, the requested URL must match the name of your app. By default mywebappname.azurewebsites.net.
6456

65-
By default, without Private Endpoint, the public name of your web app is a canonical name to the cluster.
57+
By default, without private endpoint, the public name of your web app is a canonical name to the cluster.
6658
For example, the name resolution will be:
6759

6860
|Name |Type |Value |
@@ -72,33 +64,33 @@ For example, the name resolution will be:
7264
|cloudservicename.cloudapp.net|A|40.122.110.154|
7365

7466

75-
When you deploy a Private Endpoint, we update the DNS entry to point to the canonical name mywebapp.privatelink.azurewebsites.net.
67+
When you deploy a private endpoint, we update the DNS entry to point to the canonical name mywebapp.privatelink.azurewebsites.net.
7668
For example, the name resolution will be:
7769

7870
|Name |Type |Value |Remark |
7971
|-----|-----|------|-------|
8072
|mywebapp.azurewebsites.net|CNAME|mywebapp.privatelink.azurewebsites.net|
8173
|mywebapp.privatelink.azurewebsites.net|CNAME|clustername.azurewebsites.windows.net|
8274
|clustername.azurewebsites.windows.net|CNAME|cloudservicename.cloudapp.net|
83-
|cloudservicename.cloudapp.net|A|40.122.110.154|<--This public IP isn't your Private Endpoint, you'll receive a 403 error|
75+
|cloudservicename.cloudapp.net|A|40.122.110.154|<--This public IP isn't your private endpoint, you'll receive a 403 error|
8476

85-
You must setup a private DNS server or an Azure DNS private zone, for tests you can modify the host entry of your test machine.
86-
The DNS zone that you need to create is: **privatelink.azurewebsites.net**. Register the record for your Web App with a A record and the Private Endpoint IP.
77+
You must set up a private DNS server or an Azure DNS private zone. For tests, you can modify the host entry of your test machine.
78+
The DNS zone that you need to create is: **privatelink.azurewebsites.net**. Register the record for your app with a A record and the private endpoint IP.
8779
For example, the name resolution will be:
8880

8981
|Name |Type |Value |Remark |
9082
|-----|-----|------|-------|
91-
|mywebapp.azurewebsites.net|CNAME|mywebapp.privatelink.azurewebsites.net|<--Azure creates this entry in Azure Public DNS to point the app service to the privatelink and this is managed by us|
92-
|mywebapp.privatelink.azurewebsites.net|A|10.10.10.8|<--You manage this entry in your DNS system to point to your Private Endpoint IP address|
83+
|mywebapp.azurewebsites.net|CNAME|mywebapp.privatelink.azurewebsites.net|<--Azure creates this CNAME entry in Azure Public DNS to point the app address to the private endpoint address|
84+
|mywebapp.privatelink.azurewebsites.net|A|10.10.10.8|<--You manage this entry in your DNS system to point to your private endpoint IP address|
9385

94-
After this DNS configuration you can reach your Web App privately with the default name mywebappname.azurewebsites.net. You must use this name, because the default certificate is issued for *.azurewebsites.net.
86+
After this DNS configuration, you can reach your app privately with the default name mywebappname.azurewebsites.net. You must use this name, because the default certificate is issued for *.azurewebsites.net.
9587

9688

97-
If you need to use a custom DNS name, you must add the custom name in your Web App.
89+
If you need to use a custom DNS name, you must add the custom name in your app.
9890
The custom name must be validated like any custom name, using public DNS resolution.
99-
For more information, see [custom DNS validation][dnsvalidation].
91+
For more information, see [custom DNS validation](../app-service-web-tutorial-custom-domain.md).
10092

101-
For the Kudu console, or Kudu REST API (deployment with Azure DevOps self-hosted agents for example), you must create two records pointing to the Private Endpoint IP in your Azure DNS private zone or your custom DNS server. The first is for your Web App, the second is for the SCM of your Web App.
93+
For the Kudu console, or Kudu REST API (deployment with Azure DevOps self-hosted agents for example), you must create two records pointing to the private endpoint IP in your Azure DNS private zone or your custom DNS server. The first is for your app, the second is for the SCM of your app.
10294

10395
| Name | Type | Value |
10496
|-----|-----|-----|
@@ -108,7 +100,7 @@ For the Kudu console, or Kudu REST API (deployment with Azure DevOps self-hosted
108100

109101
## App Service Environment v3 special consideration
110102

111-
In order to enable Private Endpoint for apps hosted in an IsolatedV2 plan (App Service Environment v3), you have to enable the Private Endpoint support at the App Service Environment level.
103+
In order to enable private endpoint for apps hosted in an IsolatedV2 plan (App Service Environment v3), you have to enable the private endpoint support at the App Service Environment level.
112104
You can activate the feature by the Azure portal in the App Service Environment configuration pane, or through the following CLI:
113105

114106
```azurecli-interactive
@@ -117,48 +109,28 @@ az appservice ase update --name myasename --allow-new-private-endpoint-connectio
117109

118110
## Specific requirements
119111

120-
If the virtual network is in a different subscription than the app, you must ensure that the subscription with the virtual network is registered for the Microsoft.Web resource provider. You can explicitly register the provider [by following this documentation][registerprovider], but it will also automatically be registered when creating the first web app in a subscription.
112+
If the virtual network is in a different subscription than the app, you must ensure that the subscription with the virtual network is registered for the `Microsoft.Web` resource provider. You can explicitly register the provider [by following this documentation](../../azure-resource-manager/management/resource-providers-and-types.md#register-resource-provider), but it will also automatically be registered when creating the first web app in a subscription.
121113

122114
## Pricing
123115

124-
For pricing details, see [Azure Private Link pricing][pricing].
116+
For pricing details, see [Azure Private Link pricing](https://azure.microsoft.com/pricing/details/private-link/).
125117

126118

127119
## Limitations
128120

129-
* When you use Azure Function in Elastic Premium Plan with Private Endpoint, to run or execute the function in Azure Web portal, you must have direct network access or you'll receive an HTTP 403 error. In other words, your browser must be able to reach the Private Endpoint to execute the function from the Azure Web portal.
130-
* You can connect up to 100 Private Endpoints to a particular Web App.
131-
* Remote Debugging functionality is not available when Private Endpoint is enabled for the Web App. The recommendation is to deploy the code to a slot and remote debug it there.
132-
* FTP access is provided through the inbound public IP address. Private Endpoint doesn't support FTP access to the Web App.
133-
* IP-Based SSL isn't supported with Private Endpoints.
121+
* When you use Azure Function in Elastic Premium plan with private endpoint, to run or execute the function in Azure portal, you must have direct network access or you'll receive an HTTP 403 error. In other words, your browser must be able to reach the private endpoint to execute the function from the Azure portal.
122+
* You can connect up to 100 private endpoints to a particular app.
123+
* Remote Debugging functionality isn't available through the private endpoint. The recommendation is to deploy the code to a slot and remote debug it there.
124+
* FTP access is provided through the inbound public IP address. Private endpoint doesn't support FTP access to the app.
125+
* IP-Based SSL isn't supported with private endpoints.
134126

135-
We're improving Private Link feature and Private Endpoint regularly, check [this article][pllimitations] for up-to-date information about limitations.
127+
We're improving Azure Private Link feature and private endpoint regularly, check [this article](../../private-link/private-endpoint-overview.md#limitations) for up-to-date information about limitations.
136128

137129
## Next steps
138130

139-
- To deploy Private Endpoint for your Web App through the portal, see [How to connect privately to a Web App with the Portal][howtoguide1]
140-
- To deploy Private Endpoint for your Web App using Azure CLI, see [How to connect privately to a Web App with Azure CLI][howtoguide2]
141-
- To deploy Private Endpoint for your Web App using PowerShell, see [How to connect privately to a Web App with PowerShell][howtoguide3]
142-
- To deploy Private Endpoint for your Web App using Azure template, see [How to connect privately to a Web App with Azure template][howtoguide4]
143-
- End-to-end example, how to connect a frontend web app to a secured backend web app with VNet injection and private endpoint with ARM template, see this [quickstart][howtoguide5]
144-
- End-to-end example, how to connect a frontend web app to a secured backend web app with VNet injection and private endpoint with terraform, see this [sample][howtoguide6]
145-
146-
147-
<!--Links-->
148-
[serviceendpoint]: ../../virtual-network/virtual-network-service-endpoints-overview.md
149-
[privatelink]: ../../private-link/private-link-overview.md
150-
[vnetintegrationfeature]: ../overview-vnet-integration.md
151-
[disablesecuritype]: ../../private-link/disable-private-endpoint-network-policy.md
152-
[accessrestrictions]: ../app-service-ip-restrictions.md
153-
[tcpproxy]: ../../private-link/private-link-service-overview.md#getting-connection-information-using-tcp-proxy-v2
154-
[dnsvalidation]: ../app-service-web-tutorial-custom-domain.md
155-
[pllimitations]: ../../private-link/private-endpoint-overview.md#limitations
156-
[pricing]: https://azure.microsoft.com/pricing/details/private-link/
157-
[howtoguide1]: ../../private-link/tutorial-private-endpoint-webapp-portal.md
158-
[howtoguide2]: ../scripts/cli-deploy-privateendpoint.md
159-
[howtoguide3]: ../scripts/powershell-deploy-private-endpoint.md
160-
[howtoguide4]: ../scripts/template-deploy-private-endpoint.md
161-
[howtoguide5]: https://github.com/Azure/azure-quickstart-templates/tree/master/quickstarts/microsoft.web/webapp-privateendpoint-vnet-injection
162-
[howtoguide6]: ../scripts/terraform-secure-backend-frontend.md
163-
[TiP]: ../deploy-staging-slots.md#route-traffic
164-
[registerprovider]: ../../azure-resource-manager/management/resource-providers-and-types.md#register-resource-provider
131+
- To deploy private endpoint for your app through the portal, see [How to connect privately to an app with the Azure portal](../../private-link/tutorial-private-endpoint-webapp-portal.md)
132+
- To deploy private endpoint for your app using Azure CLI, see [How to connect privately to an app with Azure CLI](../scripts/cli-deploy-privateendpoint.md)
133+
- To deploy private endpoint for your app using PowerShell, see [How to connect privately to an app with PowerShell](../scripts/powershell-deploy-private-endpoint.md)
134+
- To deploy private endpoint for your app using Azure template, see [How to connect privately to an app with Azure template](../scripts/template-deploy-private-endpoint.md)
135+
- End-to-end example, how to connect a frontend app to a secured backend app with virtual network integration and private endpoint with ARM template, see this [quickstart](https://github.com/Azure/azure-quickstart-templates/tree/master/quickstarts/microsoft.web/webapp-privateendpoint-vnet-injection)
136+
- End-to-end example, how to connect a frontend app to a secured backend app with virtual network integration and private endpoint with terraform, see this [sample](../scripts/terraform-secure-backend-frontend.md)

0 commit comments

Comments
 (0)