Skip to content

Commit acda18e

Browse files
authored
Merge pull request #111047 from mblanco77/privatelink-dns-scenarios
private enpoint dns integration p1
2 parents db0f40e + 10270bf commit acda18e

File tree

6 files changed

+131
-59
lines changed

6 files changed

+131
-59
lines changed

articles/private-link/index.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ landingContent:
3232
links:
3333
- text: What is a Private Endpoint?
3434
url: private-endpoint-overview.md
35+
- text: Private Endpoints DNS integration
36+
url: private-endpoint-dns.md
3537
- linkListType: quickstart
3638
links:
3739
- text: Create a Private Endpoint
191 KB
Loading
184 KB
Loading
Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
---
2+
title: Azure Private Endpoint DNS Configuration
3+
description: Learn Azure Private Endpoint DNS Configuration
4+
services: private-link
5+
author: mblanco77
6+
ms.service: private-link
7+
ms.topic: conceptual
8+
ms.date: 04/14/2020
9+
ms.author: allensu
10+
---
11+
# Azure Private Endpoint DNS Configuration
12+
13+
14+
When connecting to a private link resource using a fully qualified domain name (FQDN) as part of the connection string, it's important to correctly configure your DNS settings to resolve to the allocated private IP address. Existing Azure services might already have a DNS configuration to use when connecting over a public endpoint. This needs to be overridden to connect using your private endpoint.
15+
16+
The network interface associated with the private endpoint contains the complete set of information required to configure your DNS, including FQDN and private IP addresses allocated for a given private link resource.
17+
18+
You can use the following options to configure your DNS settings for private endpoints:
19+
- **Use the Host file (only recommended for testing)**. You can use the host file on a virtual machine to override the DNS.
20+
- **Use a private DNS zone**. You can use [private DNS zones](../dns/private-dns-privatednszone.md) to override the DNS resolution for a given private endpoint. A private DNS zone can be linked to your virtual network to resolve specific domains.
21+
- **Use your custom DNS server**. You can use your own DNS server to override the DNS resolution for a given private link resource. If your [DNS server](../virtual-network/virtual-networks-name-resolution-for-vms-and-role-instances.md#name-resolution-that-uses-your-own-dns-server) is hosted on a virtual network, you can create a DNS forwarding rule to use a private DNS zone to simplify the configuration for all private link resources.
22+
23+
> [!IMPORTANT]
24+
> It's not recommended to override a zone that is actively in use to resolve public endpoints. Connections to resources won't be able to resolve correctly without DNS forwarding to the public DNS. To avoid issues, create a different domain name or follow the suggested name for each service below.
25+
26+
## Azure services DNS zone configuration
27+
Azure services will create a canonical name DNS record (CNAME) on the public DNS to redirect the resolution to the suggested private domain names. You'll be able to override the resolution with the private IP address of your private endpoints.
28+
29+
Your applications don't need to change the connection URL. When attempting to resolve using a public DNS, the DNS server will now resolve to your private endpoints. The process does not impact your existing applications.
30+
31+
For Azure services, use the recommended zone names as described in the following table:
32+
33+
|Private Link resource type |Subresource |Zone name |
34+
|---------|---------|---------|
35+
|SQL DB (Microsoft.Sql/servers) | Sql Server (sqlServer) | privatelink.database.windows.net |
36+
|Azure Synapse Analytics (Microsoft.Sql/servers) | Sql Server (sqlServer) | privatelink.database.windows.net |
37+
|Storage Account (Microsoft.Storage/storageAccounts) | Blob (blob, blob_secondary) | privatelink.blob.core.windows.net |
38+
|Storage Account (Microsoft.Storage/storageAccounts) | Table (table, table_secondary) | privatelink.table.core.windows.net |
39+
|Storage Account (Microsoft.Storage/storageAccounts) | Queue (queue, queue_secondary) | privatelink.queue.core.windows.net |
40+
|Storage Account (Microsoft.Storage/storageAccounts) | File (file, file_secondary) | privatelink.file.core.windows.net |
41+
|Storage Account (Microsoft.Storage/storageAccounts) | Web (web, web_secondary) | privatelink.web.core.windows.net |
42+
|Data Lake File System Gen2 (Microsoft.Storage/storageAccounts) | Data Lake File System Gen2 (dfs, dfs_secondary) | privatelink.dfs.core.windows.net |
43+
|Azure Cosmos DB (Microsoft.AzureCosmosDB/databaseAccounts)|SQL |privatelink.documents.azure.com|
44+
|Azure Cosmos DB (Microsoft.AzureCosmosDB/databaseAccounts)|MongoDB |privatelink.mongo.cosmos.azure.com|
45+
|Azure Cosmos DB (Microsoft.AzureCosmosDB/databaseAccounts)|Cassandra|privatelink.cassandra.cosmos.azure.com|
46+
|Azure Cosmos DB (Microsoft.AzureCosmosDB/databaseAccounts)|Gremlin |privatelink.gremlin.cosmos.azure.com|
47+
|Azure Cosmos DB (Microsoft.AzureCosmosDB/databaseAccounts)|Table|privatelink.table.cosmos.azure.com|
48+
|Azure Database for PostgreSQL - Single server (Microsoft.DBforPostgreSQL/servers)|postgresqlServer|privatelink.postgres.database.azure.com|
49+
|Azure Database for MySQL (Microsoft.DBforMySQL/servers)|mysqlServer|privatelink.mysql.database.azure.com|
50+
|Azure Database for MariaDB (Microsoft.DBforMariaDB/servers)|mariadbServer|privatelink.mariadb.database.azure.com|
51+
|Azure Key Vault (Microsoft.KeyVault/vaults)|vault|privatelink.vaultcore.azure.net|
52+
|Azure Kubernetes Service - Kubernetes API (Microsoft.ContainerService/managedClusters) | managedCluster | {guid}.privatelink.<region>.azmk8s.io|
53+
|Azure Search (Microsoft.Search/searchServices)|searchService|privatelink.search.windows.net|
54+
|Azure Container Registry (Microsoft.ContainerRegistry/registries) | registry | privatelink.azurecr.io |
55+
|Azure App Configuration (Microsoft.Appconfiguration/configurationStores)| configurationStore | privatelink.azconfig.io|
56+
|Azure Backup (Microsoft.RecoveryServices/vaults)| vault |privatelink.{region}.backup.windowsazure.com|
57+
|Azure Event Hub (Microsoft.EventHub/namespaces)| namespace |privatelink.servicebus.windows.net|
58+
|Azure Service Bus (Microsoft.ServiceBus/namespaces) | namespace |privatelink.servicebus.windows.net|
59+
|Azure Relay (Microsoft.Relay/namespaces) | namespace |privatelink.servicebus.windows.net|
60+
|Azure Event Grid (Microsoft.EventGrid/topics) | topic | topic.{region}.privatelink.eventgrid.azure.net|
61+
|Azure Event Grid (Microsoft.EventGrid/domains) | domain | domain.{region}.privatelink.eventgrid.azure.net |
62+
|Azure WebApps (Microsoft.Web/sites) | site | privatelink.azurewebsites.net |
63+
|Azure Machine Learning(Microsoft.MachineLearningServices/workspaces) | workspace | privatelink.api.azureml.ms |
64+
65+
66+
67+
## DNS configuration scenarios
68+
69+
The FQDN of the services resolves a public ip address, you have to change your DNS configuration to resolve the private IP address of the private endpoint.
70+
71+
DNS is a critical component to make the application work correctly by resolving in a right manner the private endpoint IP address.
72+
73+
Based on your preferences, the following scenarios are available for DNS resolution integrated:
74+
75+
- [Virtual Network workloads without custom DNS server](#virtual-network-workloads-without-custom-dns-server)
76+
77+
78+
## Virtual Network workloads without custom DNS server
79+
80+
This configuration is appropriate for virtual network workloads without custom DNS server. In this scenario the client queries for the private endpoint IP address to Azure provided DNS [168.63.129.16](../virtual-network/what-is-ip-address-168-63-129-16.md). Azure DNS will be responsible for DNS resolution of the private DNS zones.
81+
82+
83+
> [!NOTE]
84+
> This scenario is using Azure SQL database recommended Private DNS zone. For other services you can adjust the model using the following reference [Azure services DNS zone configuration](#azure-services-dns-zone-configuration).
85+
86+
To configure properly you would need the following resources :
87+
88+
- Client virtual network
89+
90+
- Private DNS zone [privatelink.database.windows.net](../dns/private-dns-privatednszone.md) with [type A Record](../dns/dns-zones-records.md#record-types)
91+
92+
- Private endpoint information (FQDN record name and Private IP Address)
93+
94+
The following diagram illustrates the DNS resolution sequence from virtual network workloads using private dns zone
95+
96+
:::image type="content" source="media/private-endpoint-dns/single-vnet-azure-dns.png" alt-text="single virtual network and azure provided dns":::
97+
98+
This model can be extended to multiple peered virtual networks that are associated to the same private endpoint. This can be done by [adding new virtual network links](../dns/private-dns-virtual-network-links.md) to the private DNS zone for all peered virtual networks.
99+
100+
> [!IMPORTANT]
101+
> A single private DNS zone is required for this configuration, creating multiple zones with the same name for different virtual networks would need manual operations to merge the DNS records
102+
103+
In this scenario there's a [hub & spoke](https://docs.microsoft.com/azure/architecture/reference-architectures/hybrid-networking/hub-spoke) networking topology with the spoke networks sharing a common private endpoint and all the spoke virtual network are linked to the same private dns zone.
104+
105+
:::image type="content" source="media/private-endpoint-dns/hub-and-spoke-azure-dns.png" alt-text="hub and spoke with azure provided dns":::
106+
107+
108+
## Next steps
109+
- [Learn about Private Endpoints](private-endpoint-overview.md)

articles/private-link/private-endpoint-overview.md

Lines changed: 18 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -53,23 +53,23 @@ A private link resource is the destination target of a given private endpoint. T
5353
|**Azure Synapse Analytics** | Microsoft.Sql/servers | Sql Server (sqlServer) |
5454
|**Azure Storage** | Microsoft.Storage/storageAccounts | Blob (blob, blob_secondary)<BR> Table (table, table_secondary)<BR> Queue (queue, queue_secondary)<BR> File (file, file_secondary)<BR> Web (web, web_secondary) |
5555
|**Azure Data Lake Storage Gen2** | Microsoft.Storage/storageAccounts | Blob (blob, blob_secondary)<BR> Data Lake File System Gen2 (dfs, dfs_secondary) |
56-
|**Azure Cosmos DB** | Microsoft.AzureCosmosDB/databaseAccounts | Sql, MongoDB, Cassandra, Gremlin, Table|
57-
|**Azure Database for PostgreSQL -Single server** | Microsoft.DBforPostgreSQL/servers | postgresqlServer |
58-
|**Azure Database for MySQL** | Microsoft.DBforMySQL/servers | mysqlServer |
59-
|**Azure Database for MariaDB** | Microsoft.DBforMariaDB/servers | mariadbServer |
60-
|**Azure Key Vault** | Microsoft.KeyVault/vaults | vault |
61-
|**Azure Kubernetes Service - Kubernetes API** | Microsoft.ContainerService/managedClusters | managedCluster |
56+
|**Azure Cosmos DB** | Microsoft.AzureCosmosDB/databaseAccounts | Sql, MongoDB, Cassandra, Gremlin, Table|
57+
|**Azure Database for PostgreSQL -Single server** | Microsoft.DBforPostgreSQL/servers | postgresqlServer |
58+
|**Azure Database for MySQL** | Microsoft.DBforMySQL/servers | mysqlServer |
59+
|**Azure Database for MariaDB** | Microsoft.DBforMariaDB/servers | mariadbServer |
60+
|**Azure Key Vault** | Microsoft.KeyVault/vaults | vault |
61+
|**Azure Kubernetes Service - Kubernetes API** | Microsoft.ContainerService/managedClusters | managedCluster |
6262
|**Azure Search** | Microsoft.Search/searchService| searchService|
63-
|**Azure Container Registry** | Microsoft.ContainerRegistry/registries | registry |
64-
|**Azure App Configuration** | Microsoft.Appconfiguration/configurationStores | configurationStore |
65-
|**Azure Backup** | Microsoft.RecoveryServices/vaults | vault |
66-
|**Azure Event Hub** | Microsoft.EventHub/namespaces | namespace |
63+
|**Azure Container Registry** | Microsoft.ContainerRegistry/registries | registry |
64+
|**Azure App Configuration** | Microsoft.Appconfiguration/configurationStores | configurationStore |
65+
|**Azure Backup** | Microsoft.RecoveryServices/vaults | vault |
66+
|**Azure Event Hub** | Microsoft.EventHub/namespaces | namespace |
6767
|**Azure Service Bus** | Microsoft.ServiceBus/namespaces | namespace |
6868
|**Azure Relay** | Microsoft.Relay/namespaces | namespace |
69-
|**Azure Event Grid** | Microsoft.EventGrid/topics | topic |
70-
|**Azure Event Grid** | Microsoft.EventGrid/domains | domain |
71-
|**Azure WebApps** | Microsoft.Web/sites | site |
72-
|**Azure Machine Learning** | Microsoft.MachineLearningServices/workspaces | workspace |
69+
|**Azure Event Grid** | Microsoft.EventGrid/topics | topic |
70+
|**Azure Event Grid** | Microsoft.EventGrid/domains | domain |
71+
|**Azure WebApps** | Microsoft.Web/sites | site |
72+
|**Azure Machine Learning** | Microsoft.MachineLearningServices/workspaces | workspace |
7373

7474

7575
## Network security of private endpoints
@@ -100,52 +100,11 @@ Alias is a unique moniker that is generated when the service owner creates the p
100100
When connecting to a private link resource using a fully qualified domain name (FQDN) as part of the connection string, it's important to correctly configure your DNS settings to resolve to the allocated private IP address. Existing Azure services might already have a DNS configuration to use when connecting over a public endpoint. This needs to be overridden to connect using your private endpoint.
101101

102102
The network interface associated with the private endpoint contains the complete set of information required to configure your DNS, including FQDN and private IP addresses allocated for a given private link resource.
103-
104-
You can use the following options to configure your DNS settings for private endpoints:
105-
- **Use the Host file (only recommended for testing)**. You can use the host file on a virtual machine to override the DNS.
106-
- **Use a private DNS zone**. You can use private DNS zones to override the DNS resolution for a given private endpoint. A private DNS zone can be linked to your virtual network to resolve specific domains.
107-
- **Use your custom DNS server**. You can use your own DNS server to override the DNS resolution for a given private link resource. If your [DNS server](../virtual-network/virtual-networks-name-resolution-for-vms-and-role-instances.md#name-resolution-that-uses-your-own-dns-server) is hosted on a virtual network, you can create a DNS forwarding rule to use a private DNS zone to simplify the configuration for all private link resources.
108-
109-
> [!IMPORTANT]
110-
> It's not recommended to override a zone that is actively in use to resolve public endpoints. Connections to resources won't be able to resolve correctly without DNS forwarding to the public DNS. To avoid issues, create a different domain name or follow the suggested name for each service below.
111-
112-
For Azure services, use the zone names as described in the following table:
113103

114-
|Private Link resource type |Subresource |Zone name |
115-
|---------|---------|---------|
116-
|SQL DB (Microsoft.Sql/servers) | Sql Server (sqlServer) | privatelink.database.windows.net |
117-
|Azure Synapse Analytics (Microsoft.Sql/servers) | Sql Server (sqlServer) | privatelink.database.windows.net |
118-
|Storage Account (Microsoft.Storage/storageAccounts) | Blob (blob, blob_secondary) | privatelink.blob.core.windows.net |
119-
|Storage Account (Microsoft.Storage/storageAccounts) | Table (table, table_secondary) | privatelink.table.core.windows.net |
120-
|Storage Account (Microsoft.Storage/storageAccounts) | Queue (queue, queue_secondary) | privatelink.queue.core.windows.net |
121-
|Storage Account (Microsoft.Storage/storageAccounts) | File (file, file_secondary) | privatelink.file.core.windows.net |
122-
|Storage Account (Microsoft.Storage/storageAccounts) | Web (web, web_secondary) | privatelink.web.core.windows.net |
123-
|Data Lake File System Gen2 (Microsoft.Storage/storageAccounts) | Data Lake File System Gen2 (dfs, dfs_secondary) | privatelink.dfs.core.windows.net |
124-
|Azure Cosmos DB (Microsoft.AzureCosmosDB/databaseAccounts)|SQL |privatelink.documents.azure.com|
125-
|Azure Cosmos DB (Microsoft.AzureCosmosDB/databaseAccounts)|MongoDB |privatelink.mongo.cosmos.azure.com|
126-
|Azure Cosmos DB (Microsoft.AzureCosmosDB/databaseAccounts)|Cassandra|privatelink.cassandra.cosmos.azure.com|
127-
|Azure Cosmos DB (Microsoft.AzureCosmosDB/databaseAccounts)|Gremlin |privatelink.gremlin.cosmos.azure.com|
128-
|Azure Cosmos DB (Microsoft.AzureCosmosDB/databaseAccounts)|Table|privatelink.table.cosmos.azure.com|
129-
|Azure Database for PostgreSQL - Single server (Microsoft.DBforPostgreSQL/servers)|postgresqlServer|privatelink.postgres.database.azure.com|
130-
|Azure Database for MySQL (Microsoft.DBforMySQL/servers)|mysqlServer|privatelink.mysql.database.azure.com|
131-
|Azure Database for MariaDB (Microsoft.DBforMariaDB/servers)|mariadbServer|privatelink.mariadb.database.azure.com|
132-
|Azure Key Vault (Microsoft.KeyVault/vaults)|vault|privatelink.vaultcore.azure.net|
133-
|Azure Kubernetes Service - Kubernetes API (Microsoft.ContainerService/managedClusters) | managedCluster | {guid}.privatelink.<region>.azmk8s.io|
134-
|Azure Search (Microsoft.Search/searchServices)|searchService|privatelink.search.windows.net|
135-
|Azure Container Registry (Microsoft.ContainerRegistry/registries) | registry | privatelink.azurecr.io |
136-
|Azure App Configuration (Microsoft.Appconfiguration/configurationStores)| configurationStore | privatelink.azconfig.io|
137-
|Azure Backup (Microsoft.RecoveryServices/vaults)| vault |privatelink.{region}.backup.windowsazure.com|
138-
|Azure Event Hub (Microsoft.EventHub/namespaces)| namespace |privatelink.servicebus.windows.net|
139-
|Azure Service Bus (Microsoft.ServiceBus/namespaces) | namespace |privatelink.servicebus.windows.net|
140-
|Azure Relay (Microsoft.Relay/namespaces) | namespace |privatelink.servicebus.windows.net|
141-
|Azure Event Grid (Microsoft.EventGrid/topics) | topic | topic.{region}.privatelink.eventgrid.azure.net|
142-
|Azure Event Grid (Microsoft.EventGrid/domains) | domain | domain.{region}.privatelink.eventgrid.azure.net |
143-
|Azure WebApps (Microsoft.Web/sites) | site | privatelink.azurewebsites.net |
144-
|Azure Machine Learning(Microsoft.MachineLearningServices/workspaces) | workspace | privatelink.api.azureml.ms |
145-
146-
Azure will create a canonical name DNS record (CNAME) on the public DNS to redirect the resolution to the suggested domain names. You'll be able to override the resolution with the private IP address of your private endpoints.
147-
148-
Your applications don't need to change the connection URL. When attempting to resolve using a public DNS, the DNS server will now resolve to your private endpoints. The process does not impact your applications.
104+
For complete detailed information about best practices and recommendations to configure DNS for Private Endpoints, please review [Private Endpoint DNS configuration article](private-endpoint-dns.md).
105+
106+
107+
149108

150109
## Limitations
151110

articles/private-link/toc.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525
href: private-endpoint-overview.md
2626
- name: Private Link Service
2727
href: private-link-service-overview.md
28+
- name: Private Endpoint DNS integration
29+
href: private-endpoint-dns.md
2830

2931
- name: How to
3032
items:

0 commit comments

Comments
 (0)