Private endpoint DNS zones

Last reviewed 2026-07-21 by the Just Software engineering team · print-friendly

Every private endpoint needs the right privatelink.* private DNS zone, or clients keep resolving the public IP and traffic never enters the endpoint. This page is the printable version of the Private Endpoint DNS Zones tool, which deduplicates zones across a selection and generates the az cli commands for you.

How the redirection works

The service's public DNS name gains a CNAME into the matching privatelink.* name once a private endpoint exists. Public resolvers follow the chain back out to a public A record; resolvers that can see the private zone answer with the endpoint's private IP:

myvault.vault.azure.net
  → CNAME myvault.privatelink.vaultcore.azure.net
    → private zone linked to your VNet?  A 10.x.x.x   (private endpoint)
    → otherwise                          A <public IP> (or refusal, if public access is off)

Two consequences worth memorising: the zone must be linked to every VNet whose resolvers should see it (or reachable via your central DNS), and on-prem clients must forward the public zone (e.g. vault.azure.net) to a resolver inside Azure — you cannot forward privatelink.* directly, because on-prem clients never see that name until the CNAME redirects them.

Zones by service

Storage

Service Sub-resource Private DNS zone Public zone to forward
Blob Storage blob privatelink.blob.core.windows.net blob.core.windows.net
File shares file privatelink.file.core.windows.net file.core.windows.net
Queues queue privatelink.queue.core.windows.net queue.core.windows.net
Tables table privatelink.table.core.windows.net table.core.windows.net
Static website web privatelink.web.core.windows.net web.core.windows.net
Data Lake Gen2 dfs privatelink.dfs.core.windows.net dfs.core.windows.net

Databases

Service Sub-resource Private DNS zone Public zone to forward
SQL Database / Managed Instance sqlServer privatelink.database.windows.net database.windows.net
PostgreSQL Flexible Server postgresqlServer privatelink.postgres.database.azure.com postgres.database.azure.com
MySQL Flexible Server mysqlServer privatelink.mysql.database.azure.com mysql.database.azure.com
Cosmos DB (NoSQL) Sql privatelink.documents.azure.com documents.azure.com
Cosmos DB (MongoDB) MongoDB privatelink.mongo.cosmos.azure.com mongo.cosmos.azure.com
Cosmos DB (Cassandra) Cassandra privatelink.cassandra.cosmos.azure.com cassandra.cosmos.azure.com
Cosmos DB (Gremlin) Gremlin privatelink.gremlin.cosmos.azure.com gremlin.cosmos.azure.com
Cosmos DB (Table) Table privatelink.table.cosmos.azure.com table.cosmos.azure.com
Cache for Redis redisCache privatelink.redis.cache.windows.net redis.cache.windows.net

Security

Service Sub-resource Private DNS zone Public zone to forward
Key Vault vault privatelink.vaultcore.azure.net vault.azure.net
Key Vault Managed HSM managedhsm privatelink.managedhsm.azure.net managedhsm.azure.net

Compute & containers

Service Sub-resource Private DNS zone Public zone to forward
AKS private cluster (API server) management privatelink.{region}.azmk8s.io {region}.azmk8s.io
Container Registry registry privatelink.azurecr.io azurecr.io
App Service / Functions sites privatelink.azurewebsites.net azurewebsites.net
Azure Databricks databricks_ui_api privatelink.azuredatabricks.net azuredatabricks.net

Notes: replace {region} with the resource's region (e.g. privatelink.westeurope.azmk8s.io). Container Registry data-endpoint records (<registry>.<region>.data) live in the same zone. App Service also needs the <app>.scm record for Kudu/deployments — same zone.

Integration & messaging

Service Sub-resource Private DNS zone Public zone to forward
Service Bus namespace privatelink.servicebus.windows.net servicebus.windows.net
Event Hubs namespace privatelink.servicebus.windows.net (shared) servicebus.windows.net
Event Grid (topics/domains) topic privatelink.eventgrid.azure.net eventgrid.azure.net
IoT Hub iotHub privatelink.azure-devices.net + privatelink.servicebus.windows.net azure-devices.net
SignalR Service signalr privatelink.service.signalr.net service.signalr.net
Data Factory dataFactory privatelink.datafactory.azure.net datafactory.azure.net
Data Factory (portal) portal privatelink.adf.azure.com adf.azure.com

Management & monitoring

Service Sub-resource Private DNS zone Public zone to forward
Azure Monitor / Log Analytics / App Insights (AMPLS) azuremonitor privatelink.monitor.azure.com + privatelink.oms.opinsights.azure.com + privatelink.ods.opinsights.azure.com + privatelink.agentsvc.azure-automation.net + privatelink.blob.core.windows.net monitor.azure.com (and friends)
Automation Webhook / DSCAndHybridWorker privatelink.azure-automation.net azure-automation.net
Backup (Recovery Services) AzureBackup privatelink.{geo}.backup.windowsazure.com + blob + queue zones {geo}.backup.windowsazure.com
App Configuration configurationStores privatelink.azconfig.io azconfig.io

{geo} is the vault's geo code, e.g. weu for West Europe. An Azure Monitor Private Link Scope needs all five zones — a partial set produces maddening partially-working telemetry.

AI & analytics

Service Sub-resource Private DNS zone Public zone to forward
Azure OpenAI account privatelink.openai.azure.com openai.azure.com
AI Services (Cognitive Services) account privatelink.cognitiveservices.azure.com cognitiveservices.azure.com
AI Search searchService privatelink.search.windows.net search.windows.net
Machine Learning workspace amlworkspace privatelink.api.azureml.ms + privatelink.notebooks.azure.net api.azureml.ms
Synapse (SQL pools) Sql / SqlOnDemand privatelink.sql.azuresynapse.net sql.azuresynapse.net
Synapse (workspace dev) Dev privatelink.dev.azuresynapse.net dev.azuresynapse.net

Setup commands

# Create a zone (once per DNS environment, not per endpoint)
az network private-dns zone create -g <rg> -n "privatelink.blob.core.windows.net"

# Link it to a VNet (once per VNet that must resolve it)
az network private-dns link vnet create -g <rg> -z "privatelink.blob.core.windows.net" \
  -n <link-name> --virtual-network <vnet-id> --registration-enabled false

# Attach the zone to a private endpoint (creates/maintains the A record)
az network private-endpoint dns-zone-group create -g <rg> \
  --endpoint-name <pe-name> -n default \
  --private-dns-zone <zone-id> --zone-name <any-label>

Gotchas

  • One zone per DNS environment, not per endpoint. Duplicate privatelink.* zones in every spoke is the classic anti-pattern — records fragment and resolution depends on which VNet asks. Centralize (hub or dedicated DNS subscription) and link outward.
  • Zone linked but not to the right VNet — resolution comes from whatever the client's DNS server's VNet sees, not the client's own VNet. With custom DNS servers or a Private Resolver, the zone must be linked to that VNet.
  • Don't create records by hand. Use the endpoint's DNS zone group so the A record is created, updated and deleted with the endpoint.
  • Verify from both sides: inside Azure nslookup myvault.vault.azure.net should return 10.x.x.x; from the internet it should not. Check the outside view with the DNS Record Lookup and decode any confusing resolver output with the dig & nslookup Output Explainer.
  • Services with unstable or partitioned zone schemes are omitted here — verify anything exotic against Microsoft Learn's private endpoint DNS zone table.
An unhandled error has occurred. Reload 🗙