Azure Private Link: Bringing Cloud Services Inside Your Private Network
A complete, plain-English guide to Azure Private Link: private endpoints, Private Link Service, the DNS magic that makes it work, hybrid and hub-and-spoke designs, security benefits, troubleshooting, cost, and the patterns that separate smooth deployments from weeks of confusion.
Imagine a large office building with a strict security desk at the front. Your employees need to use a specialist service, say an external archive that stores company records. The usual way is to walk out the front door, cross a busy public street, and ring the archive’s public doorbell. Even if the archive checks your badge, you have still walked on a public road, and anyone could, in theory, try the same doorbell. Now imagine the archive builds a private door inside your own building, directly connected to its vault by a sealed tunnel. Your staff never step outside. Only those who work in your building can reach that door, and it opens only into your vault, not any other customer’s. That private door is the central idea of Azure Private Link.
This guide assumes you know nothing about it. Each new term is explained when it first appears, with an everyday comparison. We then go deep: what a private endpoint really is, why DNS is the part that trips almost everyone, how traffic flows, how to connect from on-premises networks, how to expose your own service privately to other customers, how to control and monitor the traffic, and how to troubleshoot. Azure networking features evolve, so where limits, prices or behaviors may have changed, we say so and recommend checking the current official documentation.
1The Problem: Public Doors on Private Data
To appreciate the solution, we first look at what the default looks like.
Platform services have public addresses
Many Azure services, such as storage accounts, SQL databases, key vaults and message queues, are called platform services or PaaS services, short for platform as a service. You do not manage their servers; you simply use them. By default, each one is reachable through a public endpoint: a name and an address on the public internet. Authentication and firewall rules protect them, but the front door still faces the street.
For many organizations that is not acceptable. Security policies, regulations and risk reviews often require that sensitive traffic never travels over public addresses at all. Teams want the database to feel like it is sitting inside their own private network, with a private address, reachable only by their own systems.
A public endpoint is like a bank branch on a main road: anyone can walk up to the door, and only the guard inside decides who enters. A private endpoint is like a secret internal corridor between your office and your bank’s vault that is not visible from the street at all.
What organizations really want
Four wishes appear again and again. First, reach platform services using private addresses from inside the virtual network. Second, reach them from on-premises networks over private connections without going through the internet. Third, ensure that private access leads to one specific resource, not to the whole service where an insider could copy data to another customer’s account. Fourth, let teams publish their own services to customers or other business units without exposing them publicly. Private Link addresses all four.
Private Link does not make a service “more encrypted” or change who is allowed to log in. It changes the network path: how the request gets there. Identity, permissions and encryption remain separate controls that you still need.
2What Azure Private Link Is
Private Link is a family of pieces that work together, not a single switch.
Azure Private Link lets you access Azure platform services, and services hosted by other organizations on Azure, over a private connection inside your virtual network. A virtual network, often shortened to VNet, is your own isolated network in Azure with its own address range. Private Link places a private address from that range in front of the target service, so traffic stays on the Microsoft backbone network and never needs the public internet.
flowchart LR
A["Client VM in your VNet"] --> B["Private endpoint with private IP"]
B --> C["Microsoft backbone network"]
C --> D["Azure service resource, for example a storage account"]
Private endpoint
A network interface in your subnet with a private IP address that represents a specific resource, such as one storage account or one database server.
Private Link resource
The destination: the Azure service instance the endpoint connects to. Many services in Azure support this.
Private Link Service
The provider-side feature that lets you expose your own service, placed behind a standard load balancer, so others can reach it through their own private endpoints.
Private DNS
The naming system that makes the service’s usual name resolve to the private address inside your network. Without it, nothing works as expected.
Connection approval
A workflow in which the owner of the target resource accepts or rejects a private endpoint connection request.
Think of an apartment building’s internal phone system. The private endpoint is an extension number inside your building. The resource is the person at the other end. The private DNS is the directory that tells everyone which extension to dial when they ask for that person by name.
Where to find it
The Azure portal offers a Private Link Center that gathers private endpoints, private link services and pending connection requests in one place. This is useful for security teams who want one view across subscriptions.
3Anatomy of a Private Endpoint
A private endpoint is simple to describe and full of detail underneath.
A private endpoint is a network interface, the virtual equivalent of a network card, that is created in a subnet of your virtual network. It receives a private IP address from that subnet’s range. The interface is linked to one specific resource through a connection managed by the platform. Any machine that can reach the private address, whether in the same network, a peered network or on-premises through a private link, can send requests to the target service through it.
Choose the target resource
Select the exact service instance, such as a particular storage account in a particular subscription.
Choose the sub-resource
Many services expose several separate endpoints inside one resource. A storage account, for example, has separate ones for blob, file, queue, table and web. You pick which one the endpoint represents. This choice is called the group ID or target sub-resource.
Place it in a subnet
The endpoint takes one private address from the subnet. Plan the size of the subnet with growth in mind.
Wire up DNS
Link the endpoint to a private DNS zone, so the service name resolves to the private address.
Get the connection approved
Within the same organization with sufficient permission, this is automatic. Otherwise the owner must approve it.
One endpoint, one sub-resource
A common beginner surprise is that a single private endpoint does not cover every feature of a service. If an application uses both the blob and the file features of one storage account, it needs two private endpoints, one for each sub-resource, and two matching DNS entries. Missing one leaves that feature still trying to use the public path.
“I created a private endpoint, so the service is now private.” Not by itself. Unless you also turn off public network access on the resource, the public endpoint still exists and still works. The private endpoint only adds a second, private way in.
Endpoints are regional but flexible
The endpoint lives in a virtual network in one region, but it can point to a resource in a different region, which supports designs where a service in another region is reached privately. Plan latency and data-transfer cost accordingly. Also remember that the subnet holding the endpoint must exist in the same region as the virtual network, naturally, and the endpoint lives in the same subscription as the network it sits in, which may differ from the subscription of the target.
4Private Link Service: Publishing Your Own Service
The same technology works in reverse, for providers.
Until now we described the consumer side: someone who wants to reach a service privately. The provider side is for organizations that run a service of their own and want customers, partners or other teams to reach it privately. This is called Private Link Service. You place your application behind a standard load balancer, a component that spreads incoming connections across several servers, and then attach a Private Link Service to the load balancer’s front end. Consumers then create private endpoints in their own networks that connect to your service.
flowchart LR
subgraph Consumer["Consumer network"]
C1["Client application"] --> PE["Private endpoint"]
end
subgraph Provider["Provider network"]
PLS["Private Link Service"] --> LB["Standard load balancer"]
LB --> S1["Server 1"]
LB --> S2["Server 2"]
end
PE ==>|Private connection| PLS
Alias
A unique name for your service that you can share with consumers so they can request a connection even from other organizations.
Visibility
Controls who can even see and request your service: nobody, specific subscriptions, or everyone who knows the alias.
Auto-approval
A list of subscriptions whose requests are approved automatically. Others wait for manual approval.
NAT IP configuration
Traffic from consumers is translated to addresses in a subnet you provide, so consumer address ranges can overlap with yours without conflict.
Proxy protocol
An optional setting that passes the original consumer connection details to your application, which otherwise only sees the translated address.
A provider running a Private Link Service is like a company that installs a private phone line to each important client’s office. Clients dial a local extension in their own building, and the call arrives at the company’s switchboard, which distributes it to available staff. The client never sees the company’s internal numbering.
Why address overlap is not a problem
Different customers often use the same private address ranges, such as the common ranges that begin with ten. Normally two networks with overlapping ranges cannot be connected. Private Link avoids this: the consumer sees an address from its own range, the provider sees translated addresses from its NAT subnet, and no routes are exchanged between the two networks. This makes it ideal for software as a service providers with many customers.
Size the NAT subnet for the number of simultaneous connections you expect, not for the number of customers. Each translated connection uses a combination of address and port, and running short causes failures that are hard to diagnose.
5Private Link, Service Endpoints and Firewalls Compared
Azure offers more than one way to restrict access, and they are not the same.
Service endpoints are an older feature that extends your virtual network’s identity to a service, so that the service can be told “accept traffic only from this subnet”. The service still uses its public address, but the platform tags the traffic as coming from your subnet. Public firewall rules simply allow certain internet addresses. Private Link gives the service a true private address inside your network. Each approach has a place.
| Aspect | Public with firewall rules | Service endpoints | Private Link |
|---|---|---|---|
| Address used by client | Public IP of the service | Public IP of the service | Private IP in your VNet |
| Reachable from on-premises privately | No, goes via internet | Not directly for on-premises clients in the usual design | Yes, through VPN or ExpressRoute |
| Scope of access | Allowed address ranges | Whole service in a region, filtered by subnet rules | One specific resource instance |
| Protection against data exfiltration | Weak | Moderate | Strong, since endpoint maps to one resource |
| Extra cost | None | None | Hourly endpoint charge plus data processed |
| Setup effort | Low | Low | Higher, mainly because of DNS |
Private Link: Advantages
- True private address inside your network
- Works from peered networks and from on-premises
- Maps to one specific resource, limiting exfiltration
- Lets you turn off public access completely
- Lets providers publish services without exposing them
- Allows overlapping address ranges between networks
Private Link: Trade-offs
- Costs money per endpoint and per data processed
- Requires careful DNS design
- Needs one endpoint per service and sub-resource
- More resources to manage and govern at scale
- Some services or features have restrictions or limits
If you need on-premises access, strong exfiltration control or the ability to disable public access entirely, choose Private Link. If you only need a cheap, quick restriction between Azure subnets and the service for a low-risk workload, service endpoints may suffice. Check the current recommendation for your service, since guidance has been moving toward Private Link.
flowchart TD
A["Need to restrict access to a platform service"] --> B{"Must clients use private IPs or connect from on-premises?"}
B -->|Yes| C["Use Private Link"]
B -->|No| D{"Need strong exfiltration control or disabled public access?"}
D -->|Yes| C
D -->|No| E{"Only Azure subnets need access and low risk?"}
E -->|Yes| F["Service endpoints may be enough"]
E -->|No| G["Public endpoint with strict firewall rules"]
6How Traffic Actually Flows
The path of a request tells you where to look when something breaks.
When a client in your virtual network sends a request to a service through a private endpoint, the packet leaves the client with the private address as its destination. The virtual network routes it to the endpoint’s network interface. From there, the Azure platform carries it across the Microsoft backbone network, a private global network owned and operated by Microsoft, directly to the target resource. It does not pass through the public internet, even though the service is a public cloud service.
Application asks for a name
The application uses the usual service name. DNS turns it into the private address of the endpoint.
Network routes to the endpoint
The client’s network sends the packets to the private address. Network security rules and routes apply here.
Platform forwards to the resource
The endpoint passes traffic across the backbone to the specific resource it represents.
Service authenticates and responds
The service still checks identity and permissions as usual and returns the response along the same private path.
It is like using an internal courier chute inside a skyscraper that drops parcels straight into a specific bank vault on another floor. The chute is private, but the vault still demands the correct key before it hands anything out.
The endpoint does not use your service’s public address at all
The traffic does not leave toward the service’s public address and get redirected. It is addressed to the private one from the start. This is why a correct DNS answer is critical: if the client resolves the public address, the packets go out the public way and ignore your private endpoint entirely.
Special behavior of some services
Certain services have connection modes that affect how private endpoints work. Azure SQL, for example, offers redirect and proxy connection policies. With private endpoints, connections use the proxy approach, so the client talks to the gateway at the private address instead of being redirected to a separate node address. Always read the service-specific guidance before designing firewalls and routes.
7DNS: The Part Everyone Gets Wrong
If Private Link has one secret, it is that the network piece is easy and the naming piece is hard.
DNS, the Domain Name System, is the internet’s phone book. It translates names that humans use, such as the address of a storage account, into the numeric addresses that machines use. When you create a private endpoint, the service’s name must resolve to the private address when asked from inside your network, but still resolve to the public address when asked from anywhere else. Making that split work is the trickiest part of any Private Link design.
The trick: a special alias name
Azure solves this with a chain of names. When someone asks for the normal service name, the public DNS answers with an alias that points to a special name in a “privatelink” zone. For example, the storage blob name is redirected to a name containing the word privatelink. Outside your network, that special name has no private answer, so it falls through to the public address. Inside your network, you create a private DNS zone with the matching privatelink name and put an entry for the private endpoint in it. Your clients then get the private address.
sequenceDiagram
participant C as Client VM
participant R as DNS resolver
participant PZ as Private DNS zone
participant PD as Public DNS
C->>R: Ask for service name
R->>PD: Ask public DNS
PD-->>R: Alias to privatelink name
R->>PZ: Ask private zone for privatelink name
PZ-->>R: Private IP of endpoint
R-->>C: Private IP
Note over C: Client connects to the private IP
You call a company’s main number and the receptionist says, “for your account, dial our VIP desk”. Outside the building, the VIP desk number goes to the public reception. Inside your building, the same VIP desk number rings a direct internal line. The same words lead to different places depending on where you stand.
Private DNS zones you will meet
| Service | Typical private zone name |
|---|---|
| Storage, blob | privatelink.blob.core.windows.net |
| Storage, file | privatelink.file.core.windows.net |
| Azure SQL Database | privatelink.database.windows.net |
| Key Vault | privatelink.vaultcore.azure.net |
| Cosmos DB, NoSQL API | privatelink.documents.azure.com |
| Service Bus and Event Hubs | privatelink.servicebus.windows.net |
| Container Registry | privatelink.azurecr.io |
| App Service and Functions | privatelink.azurewebsites.net |
Zone names differ by service and by cloud environment, such as government clouds. Use the official table of private DNS zone names for your service and cloud and do not guess them. A zone with the wrong name will quietly do nothing.
The three most common DNS failures
Problem
The private DNS zone exists but is not linked to the virtual network where the clients live.
Why It’s Harmful
Clients in the unlinked network cannot see the zone, so they receive the public address. Connections go the public way, then fail if public access is disabled, or succeed insecurely if it is not.
Correct Approach
Link the private DNS zone to every virtual network whose workloads must resolve the private address, or to the hub network used by your central DNS forwarders.
Problem
On-premises DNS servers are not told how to resolve privatelink names, so on-premises clients still resolve the public address.
Why It’s Harmful
On-premises users either go out to the internet or fail to connect, even though a perfectly good private path exists.
Correct Approach
Configure conditional forwarding from on-premises DNS to a DNS resolver inside Azure that can read the private zones.
Problem
Forwarding the whole public zone, such as the entire windows.net domain, to the private resolver instead of the privatelink zone.
Why It’s Harmful
Names for resources that have no private endpoint stop resolving correctly, causing mysterious outages for unrelated services.
Correct Approach
Forward only the specific privatelink zones, and let everything else use normal public resolution.
8DNS Architectures: From One Network to a Whole Enterprise
The right DNS design depends on how many networks and how much on-premises integration you have.
Single network, Azure-provided DNS
Link a private DNS zone to the network. Clients in it use the default Azure resolver and receive private answers. The simplest case.
Several spoke networks, shared zones
One set of private DNS zones linked to every spoke, or to a central network. Avoids duplicate zones and conflicting answers.
Hub with a DNS resolver
Zones are linked to the hub. Spokes send their queries to a resolver in the hub, which can see the zones. Central control and fewer links.
Hybrid with on-premises forwarding
On-premises DNS forwards privatelink zones to a resolver in Azure. Both sides share a consistent view of names.
flowchart LR
OP["On-premises DNS server"] -->|Conditional forward of privatelink zones| IN["Azure DNS Private Resolver inbound endpoint"]
IN --> Z["Private DNS zones linked to hub VNet"]
SP["Spoke VNet workloads"] -->|Custom DNS setting| IN
Z --> A["Answer: private IP of endpoint"]
The role of the private resolver
Azure offers a managed DNS Private Resolver. It has an inbound endpoint that accepts questions from on-premises or other networks and answers them using the private zones, and an outbound endpoint with rules that forward chosen names to other DNS servers. Before it existed, teams had to run their own forwarder virtual machines, which needed patching, scaling and high availability. The managed resolver removes that work and is generally the preferred design today.
A central DNS resolver is like a company switchboard operator. Instead of every department keeping its own contact book, everyone asks the operator, who knows which numbers are internal extensions and which are outside lines.
Records that update themselves
When you attach a DNS zone group to a private endpoint, Azure automatically creates and removes the matching records in the private zone. If you delete the endpoint, the record disappears with it. Doing this by hand is a common source of stale entries pointing to addresses that no longer belong to the endpoint.
Keep exactly one private zone per privatelink name across the whole organization, in a central subscription, and link it where needed. Several competing copies of the same zone are the number one cause of “it works in one network but not the other”.
9Connection Approval and Lifecycle
Who decides whether a private door may be opened?
A private endpoint is a request to connect to a resource. The owner of the resource must be able to control which requests are accepted. Each connection has a state that you will see in the portal.
Approved
The connection is active and traffic can flow through the endpoint.
Pending
The request was made but the resource owner has not yet accepted it. Traffic does not flow yet.
Rejected
The owner declined the request. The endpoint remains but cannot be used.
Disconnected
The other side removed the connection, so the endpoint exists but is no longer attached.
Automatic versus manual approval
If the person creating the endpoint also has sufficient permission over the target resource, as is usual inside one team, the connection is approved automatically. When the target belongs to another team or another organization, or when the creator lacks the permission, the connection waits in a pending state, and the resource owner must approve it. Providers of private link services can pre-approve specific subscriptions to speed this up.
Approval is like a building reception. Your own employees badge straight in. A visitor from another company waits at the desk until the host comes down and confirms they are expected.
Permissions that matter
Creating a private endpoint requires rights on the network side to create the interface and on the resource side to request the connection. Approving requires rights on the target. Separating these roles supports good governance: network teams manage endpoints and DNS, while data owners decide who may connect to their data.
Leaving endpoints in a pending state and then debugging the network for hours. If a freshly created endpoint does not work, check the connection state before anything else.
10Controlling Traffic: NSGs, Routes and Firewalls
A private address is still a network address, and network controls can apply to it.
Network security groups
A network security group, or NSG, is a set of allow and deny rules attached to a subnet or interface. Historically, private endpoints ignored NSG rules by default, and a subnet setting called the network policy had to be enabled before NSG rules and custom routes would apply to them. Platform behavior has evolved, so check the current option for private endpoint network policies on your subnet. Where it is enabled, you can write rules that restrict which clients may talk to the endpoint, which is a valuable second layer of defense.
User-defined routes and inspection
Many organizations send traffic through a central firewall for inspection. Private endpoints add a wrinkle: the platform creates a very specific route for each endpoint address, which normally wins over your custom route and sends traffic straight to the endpoint, skipping the firewall. To inspect that traffic, you use the subnet network policy setting that lets your own routes apply to private endpoints, and you handle address translation so that return traffic comes back through the same firewall. Without that, you can get asymmetric routing: requests go through the firewall but replies take a shortcut, and the connection breaks.
flowchart LR
A["Client in spoke"] --> B["Central firewall in hub"]
B --> C["Private endpoint"]
C --> D["Target resource"]
D -.->|Reply must return the same way| B
B -.-> A
Airport security checks you on the way in. If you could leave through a side door without passing the same checkpoint, the record of your visit would be incomplete and the guards would be confused. Symmetric routing keeps entry and exit on the same checked path.
Application-level filtering
Some firewalls can filter traffic aimed at private endpoint addresses by name or by application rule. Whether you inspect or not depends on your security requirements. Inspecting everything adds cost and latency; not inspecting trusts the endpoint’s inherent resource scoping and the service’s own authentication.
Put private endpoints in a dedicated subnet where possible. It makes NSG rules, route tables and address planning much simpler than mixing endpoints with virtual machines.
11Security Benefits and Governance
Private Link is a security feature, so let us be precise about what it protects.
Removes public exposure
With public network access disabled on the resource, the service is unreachable from the internet. Scanners and attackers have nothing to probe.
Limits data exfiltration
The endpoint maps to one resource, so a compromised or careless insider cannot use it to copy data into a different account of the same service.
Keeps traffic on the backbone
Traffic avoids the public internet, which reduces exposure to interception and certain denial-of-service paths.
Supports compliance
Many regulations and internal standards require private network access to sensitive data, and Private Link provides evidence for it.
Data exfiltration protection is like a mailroom that can only send parcels to one registered address. Even if a dishonest employee tries to mail secrets to a rival, the machine only addresses the approved vault.
What it does not protect against
Private Link does not stop a stolen password or key. It does not stop an authorized user from misusing their rights. It does not protect against vulnerabilities inside the service. It does not inspect content. You still need strong identity, least privilege, encryption, monitoring and patching. Private Link narrows the doors; it does not replace the locks.
Governance at scale
Large organizations manage private endpoints through policy and automation rather than by hand. Azure Policy can audit or deny services whose public access is enabled, and can automatically deploy private endpoints or DNS zone groups for resources that lack them. Naming conventions, tags for ownership and cost center, and central visibility in the Private Link Center help keep order when hundreds of endpoints exist.
Enabling Private Link everywhere but never disabling public access, then reporting the environment as “private” in an audit. A private endpoint with an open public door is a second door, not a closed one.
12Which Services Support Private Link
A long and growing list, grouped here by purpose.
| Category | Examples of services with private endpoint support |
|---|---|
| Storage and data lakes | Blob, files, queues, tables, data lake storage |
| Databases | Azure SQL Database, Managed Instance connectivity patterns, Cosmos DB, PostgreSQL and MySQL flexible servers |
| Security and secrets | Key Vault, Managed HSM |
| Messaging and events | Service Bus, Event Hubs, Event Grid |
| Compute and web | App Service, Functions, Container Registry, private Kubernetes control planes |
| Analytics and AI | Synapse, Data Factory, Azure OpenAI and other AI services, Machine Learning workspaces |
| Monitoring | Azure Monitor through a Private Link Scope |
| Edge and delivery | Origins for certain tiers of content delivery and application gateway offerings |
Support, sub-resource names, DNS zone names, tier requirements and limitations differ per service and change over time. Always confirm in the service’s own documentation that your tier supports private endpoints and which group IDs you must create.
Service-specific notes worth knowing
Storage accounts
Remember one endpoint per sub-resource. Disable public network access once private access works, and consider a firewall exception only for trusted services that cannot use the endpoint.
Azure SQL Database
Private endpoints use the proxy connection style. Verify that the name resolves to the private address from every place the application runs, including build agents and reporting tools.
Key Vault
Applications use the vault name constantly, often at startup. A DNS mistake here breaks deployments and secrets retrieval across many applications at once.
App Service and Functions
Private endpoints control inbound access to the app. Outbound access to other private services is a separate feature, regional virtual network integration, and many designs need both.
Azure Monitor
A Private Link Scope groups the monitoring resources you want reachable privately. It needs several DNS zones and affects data ingestion, so plan it carefully before enabling.
13Hybrid Connectivity: From On-Premises to Private Endpoints
The private address works for any client that can route to it.
One of the biggest reasons to adopt Private Link is that on-premises systems can use platform services privately. Connect the data center to Azure with a site-to-site virtual private network, which builds an encrypted tunnel across the internet, or ExpressRoute, a dedicated private circuit. Once the on-premises network can route to the subnet holding the private endpoint, the on-premises client simply connects to the private address.
flowchart LR
A["On-premises application"] --> B["VPN or ExpressRoute"]
B --> C["Hub virtual network"]
C --> D["Private endpoint subnet"]
D --> E["Storage account or database"]
A -.->|DNS query forwarded| F["Azure DNS resolver"]
Establish the private link to Azure
Set up VPN or ExpressRoute and verify routes are exchanged so that on-premises sees the endpoint subnet.
Place the endpoint
Create the endpoint in a subnet reachable from the hub or gateway, usually in the hub or a shared services network.
Make DNS work from on-premises
Add conditional forwarders so privatelink zones are answered by the Azure resolver.
Open firewall paths
Allow the required ports in on-premises firewalls and in network security rules in Azure.
Test from the real client
Resolve the name and connect from an actual on-premises machine, not just from a test virtual machine in Azure.
Check address overlap early. If your on-premises ranges overlap with the Azure virtual network that holds the endpoint, routing breaks. Plan address space for the whole enterprise before you create networks.
14Hub-and-Spoke and Landing Zone Design
Where you place endpoints and zones shapes cost, security and simplicity.
Many enterprises use a hub-and-spoke network layout. A central hub network holds shared components such as the firewall, gateways and DNS resolvers. Separate spoke networks hold individual workloads and are peered to the hub. Private endpoints can be placed in the hub, in a dedicated shared-services network, or in each workload’s spoke.
flowchart TD
H["Hub: firewall, gateway, DNS resolver, shared private endpoints"]
S1["Spoke 1: Workload A"] --- H
S2["Spoke 2: Workload B"] --- H
S3["Spoke 3: Data platform with own private endpoints"] --- H
OP["On-premises"] --- H
| Placement | Strength | Weakness |
|---|---|---|
| Endpoints in the hub | Central control, shared by many spokes, easy on-premises access | Hub grows large, blast radius is wider, ownership is blurred |
| Endpoints in each spoke | Clear ownership, isolated per workload | More endpoints, more cost, more DNS entries to manage |
| Dedicated shared-services network | Balanced: central but separate from the hub’s network functions | One more network to connect and secure |
Putting endpoints in the hub is like one shared mailroom for a campus; placing them in each spoke is like a mailbox in every building. The shared mailroom is cheaper and easier to guard, but a problem there affects everyone.
Reuse an endpoint across peered networks
A private endpoint in one virtual network can be used by clients in other networks that are peered to it, as long as routing and DNS allow it. This is often more economical than creating one endpoint per spoke for the same service, but be aware that traffic crossing peering incurs data charges, and shared endpoints centralize risk.
Standardize with policy and modules
In a landing zone, teams should not hand-build endpoints. Provide approved templates, infrastructure-as-code modules and Azure Policy that deploys the endpoint and its DNS zone group automatically when a team creates a supported service. This produces consistent naming, correct DNS and measurable compliance.
15Setting It Up Step by Step
The order matters; doing DNS last is the classic mistake.
Plan the address space and subnet
Reserve a subnet for private endpoints with room to grow. Each endpoint uses at least one address, and some services use more.
Decide the DNS design first
Choose where private zones will live, which networks link to them, and how on-premises will forward queries.
Create the private endpoint
Pick the resource and sub-resource, choose the subnet, and attach a private DNS zone group so records are created automatically.
Check the connection state
Confirm that it is approved. If pending, ask the resource owner to approve.
Verify name resolution
From a client in each network that needs access, resolve the service name and confirm it returns the private address.
Test the application path
Run a real operation, such as reading a blob or running a query, and confirm it succeeds over the private address.
Migrate clients and then close the public door
After every client is confirmed on the private path, disable public network access on the resource. Do this last, ideally in a quiet window.
Document and monitor
Record the design, owners and DNS zones, and enable logging and alerts.
Disabling public access before every client, including pipelines, monitoring tools, backup services and developers’ laptops, has a private route. This is how projects cause outages on the first day. Inventory every consumer first.
16Common Patterns for Platform Services
Recipes that appear in nearly every enterprise design.
Private web application with private data
A web app integrated with a virtual network makes outbound calls to a database and a storage account through private endpoints. Inbound traffic reaches the app through a gateway or a private endpoint on the app itself. No part of the data path touches a public address.
Secure data platform
Analytics workspaces, data lake storage, a key vault and a metadata database all have private endpoints in a data subnet, with public access disabled. Data engineers reach the platform through a private route from their network.
Private container pipeline
A container registry and a private Kubernetes control plane use private endpoints, so that build agents and cluster nodes pull images and talk to the control plane without public exposure.
Secrets and configuration without public exposure
A key vault with a private endpoint serves secrets to applications inside the network. Public access is disabled, and access policies or role assignments restrict which identities may read.
Private monitoring pipeline
A Private Link Scope for Azure Monitor lets agents in private networks send telemetry without public endpoints. Careful DNS and scope configuration prevent ingestion from silently failing.
Pairing inbound and outbound controls
A subtle point: a private endpoint on a service controls how others reach it. To let that service reach other private resources, it may need its own outbound network integration. Treat inbound and outbound as separate decisions for each component, and draw both on your architecture diagram.
Giving a shop a private front door for deliveries does not give its staff a private back road to the warehouse. Inbound access and outbound access are separate roads that must both be built.
17Publishing Services Privately as a Provider
For software vendors and internal platform teams, Private Link Service opens a clean delivery model.
Put the service behind a standard load balancer
The Private Link Service attaches to a load balancer front end, so your service must be reachable through one.
Create the Private Link Service
Choose the front end, define the NAT subnet and addresses, and decide on visibility and auto-approval.
Share the alias
Give consumers the alias or the resource identifier so they can create private endpoints that point to it.
Approve and monitor connections
Approve requests, track each consumer’s connection, and revoke when a contract ends.
Provide DNS guidance
Tell consumers which private DNS name to create so their applications can find your service by a friendly name.
Provider Advantages
- Customers never receive routes into your network
- No exposure of the service on the public internet
- Overlapping customer address ranges are fine
- Granular approval and revocation per customer
- Strong selling point for security-sensitive customers
Provider Trade-offs
- Requires a standard load balancer in front of the service
- The NAT subnet needs careful capacity planning
- Applications see translated addresses unless proxy protocol is used
- Operational work grows with the number of customers
If your application logs or rules rely on the caller’s address, enable the proxy protocol option and make your application parse it. Otherwise, every customer appears to come from the same small range of translated addresses.
A provider’s service is like a restaurant with a private delivery chute built into each regular customer’s office wall. Orders arrive straight in the kitchen through a numbered slot. The restaurant never needs to know how the customer’s building is laid out.
18Monitoring, Logging and Troubleshooting
When something cannot connect, work through the layers in order.
What you can observe
Endpoint metrics
Bytes in and out through the endpoint, helpful to confirm traffic really uses the private path.
Connection state
Approved, pending, rejected or disconnected status for each connection.
Flow logs
Records of allowed and denied traffic at the network security group level, useful for spotting blocked flows.
DNS query logs
Logs from the resolver showing what was asked and answered, helpful for catching public answers where private ones were expected.
Service diagnostic logs
The target service often logs the source address of requests, letting you confirm whether calls arrive from the private range.
flowchart TD
A["Cannot connect"] --> B{"Connection state Approved?"}
B -->|No| C["Approve or recreate the connection"]
B -->|Yes| D{"Name resolves to private IP from the client?"}
D -->|No| E["Fix DNS: zone link, forwarders, custom DNS settings"]
D -->|Yes| F{"Route and NSG allow the path?"}
F -->|No| G["Fix routes, network policy, NSG, firewall"]
F -->|Yes| H{"Public access disabled and client using private path?"}
H -->|Unsure| I["Check service logs and client network"]
H -->|Yes| J["Check authentication, permissions and service-specific settings"]
| Symptom | Likely cause | What to do |
|---|---|---|
| Name resolves to a public address | Zone not linked, client uses other DNS, missing forwarder | Check which resolver the client uses and the zone links |
| Resolves to private IP but connection times out | NSG, route, firewall or on-premises routing blocks it | Use connection tests and flow logs to find the block |
| Connection works from Azure but not on-premises | On-premises DNS or routing missing | Add conditional forwarders and verify routes |
| Intermittent failures with a central firewall | Asymmetric routing | Make forward and return paths symmetric, review translation |
| Works for blob but not file | Missing endpoint for the second sub-resource | Create the endpoint and DNS entry for each sub-resource |
| Access denied despite private path | Identity or permission issue, not network | Check roles, keys and service access policies |
| Stale or wrong address after changes | Manually managed records or cached answers | Use zone groups and flush caches |
Always run a name lookup from the exact client that fails. Ninety percent of Private Link problems are solved by that single step, because the answer shows immediately whether the client is even trying to reach the private address.
Problem
Troubleshooting by testing from the engineer’s own machine or from a convenient virtual machine that uses different DNS than the failing application.
Why It’s Harmful
The test succeeds or fails for reasons that do not apply to the real client, so the team chases the wrong problem for hours.
Correct Approach
Test from the actual failing host or from a machine in the same network with the same DNS settings.
19Cost, Capacity and Limits
Private Link is not free, and design choices change the bill.
Private endpoints are typically billed per hour that they exist, plus a charge for the data processed through them in each direction. Private Link Service has its own pricing structure. Data transfer between virtual networks over peering, between regions, or through gateways adds to the total. Prices and billing details change, so confirm current figures on the official pricing page before you build a budget.
Share endpoints across peered networks
One endpoint in a shared network can serve many spokes, reducing hourly charges, though data and routing costs still apply.
Create only needed sub-resources
Do not create endpoints for every possible sub-resource of a service. Create those the application truly uses.
Delete orphaned endpoints
Endpoints left over from decommissioned test environments keep billing. Review periodically with a tag-based report.
Keep chatty traffic close
Place clients and endpoints in the same region where possible. Cross-region private access adds latency and transfer cost.
Limits and capacity planning
Subscriptions and virtual networks have limits on the number of private endpoints, and a private link service has limits on NAT addresses and connections. These limits are documented and can change. In large estates, track endpoint counts per network and per subscription so that you do not discover a ceiling in the middle of a project.
Every private door you build has a monthly maintenance fee and a toll for each parcel passing through. Building a door for every cupboard is wasteful; build doors for the rooms people really use.
Estimating cost by endpoint count alone and ignoring the data processed. A high-volume data pipeline through a few endpoints can cost more than many idle endpoints. Model both parts.
20Patterns and Anti-Patterns
Habits that work, and habits that cause incidents.
Patterns worth adopting
Central DNS with one zone per privatelink name
Keep one authoritative private zone for each service type in a central subscription and link it where needed, with automated record management.
Dedicated endpoint subnets
Group endpoints in their own subnets with clear NSG rules and simple route tables.
Policy-driven enforcement
Use policy to require private endpoints for sensitive service types and to deny or audit public access settings.
Staged rollout
Add the private endpoint, move clients, verify through logs, then disable public access last.
Infrastructure as code modules
Package endpoint and DNS configuration into reusable modules so every team gets a correct, consistent setup by default.
Ownership tagging
Tag every endpoint with an owner, application and cost center so cleanup and troubleshooting are quick.
Anti-patterns to avoid
Problem
Each team creates its own private DNS zones for the same privatelink name in different subscriptions.
Why It’s Harmful
Different networks see different answers for the same name. Some work, some do not, and no one knows which zone is authoritative.
Correct Approach
Centralize zone ownership and automate record creation through zone groups and policy.
Problem
Using hard-coded private IP addresses in application settings instead of service names.
Why It’s Harmful
Certificates fail to validate, addresses change when endpoints are recreated, and failover or region changes break the application.
Correct Approach
Always use the normal service name and let DNS return the private address.
Problem
Treating Private Link as the only security control and relaxing identity and permission discipline because “it is private”.
Why It’s Harmful
An attacker already inside the network, or a compromised workload, can use the private path with stolen credentials.
Correct Approach
Layer controls: private networking, strong identity, least privilege, encryption and monitoring together.
21Best Practices Checklist
A review list before going to production.
Do
- Design DNS before creating endpoints
- Use one central private zone per privatelink name
- Attach zone groups so records are managed automatically
- Create an endpoint for each sub-resource actually used
- Confirm connection approval and name resolution before testing the application
- Disable public access only after all clients are confirmed on the private path
- Use dedicated endpoint subnets with documented rules
- Enforce and audit through Azure Policy
- Tag endpoints with owner and cost center
- Test from real clients including on-premises ones
Avoid
- Assuming an endpoint makes the service private by itself
- Forwarding whole public domains to the private resolver
- Hard-coding private IP addresses
- Leaving pending or orphaned endpoints behind
- Ignoring address overlap with on-premises networks
- Skipping a plan for inspection and symmetric routing
- Forgetting build agents, monitoring and backup tools as consumers
- Relying on network privacy instead of identity controls
Create a reusable test checklist that records, for each service, the resolved address from each client network, the connection state and a successful sample operation. Keep it with your design documents for audits and future troubleshooting.
22Real-World Scenarios
How organizations apply these ideas.
Bank protecting customer data
A bank places storage, databases and key vaults behind private endpoints with public access disabled, and routes all traffic through a central firewall with symmetric paths. Policy blocks any new resource that enables public access, and auditors review endpoint inventories every quarter.
Manufacturer with factories and a data center
A manufacturer connects plants and its data center to Azure through ExpressRoute. Plant systems send telemetry to storage and messaging services through private endpoints in a central network, using conditional forwarding for DNS so that every site resolves the same private addresses.
Software vendor serving regulated customers
A vendor exposes its application with Private Link Service. Each customer creates a private endpoint in their own network, with manual approval and a contract-driven revocation process. The vendor avoids exchanging network routes with hundreds of different address plans.
Healthcare analytics platform
A healthcare organization builds a data platform in which storage, analytics workspaces and secrets all sit behind private endpoints. Researchers connect through a controlled virtual desktop network, and data exfiltration protection ensures that data cannot be copied to unapproved accounts.
Retailer with a multi-team landing zone
A retailer gives each product team a spoke network and a policy-driven setup that creates endpoints and DNS records automatically when teams deploy supported services. A platform team owns central DNS and gets an alert when any zone link is missing.
Public sector with data residency rules
A government agency keeps private endpoints in-region, uses private connectivity only, and documents the network path for each dataset to satisfy residency and audit requirements.
23Frequently Asked Questions
Quick answers to questions that come up constantly.
It is a feature that gives a platform service or your own service a private address inside your virtual network, so that traffic stays on the Microsoft backbone and does not need to use the public internet.
A private endpoint is the consumer side: an interface in your network that connects to a service. Private Link Service is the provider side: a way to publish your own service, behind a standard load balancer, so that others can connect to it through their private endpoints.
No. You must disable public network access on the resource, or restrict it with firewall rules, to remove the public path. The endpoint only adds a private path.
Usually because the private DNS zone is not linked to the client’s network, the client uses a different DNS server that does not know the zone, or on-premises DNS lacks a conditional forwarder.
You need one for each sub-resource you use. For example, a storage account needs separate endpoints for blob and for file if you use both.
Yes, through VPN or ExpressRoute, provided that routing reaches the endpoint subnet and on-premises DNS resolves the private address through forwarding to an Azure resolver.
Service endpoints keep the service’s public address and add a subnet-based rule, while Private Link gives the service a private address in your network, works from on-premises, and maps to a single resource, which gives stronger protection against data exfiltration.
Yes. The connection may require approval from the resource owner, and providers can share an alias and pre-approve selected subscriptions.
Behavior has changed over time and depends on the subnet’s network policy setting. Check the current documentation and enable the policy that lets NSG rules and custom routes apply if you need them.
Yes. Private endpoints are generally billed per hour plus data processed, so check current pricing and design to avoid unnecessary endpoints.
Yes. Because the provider sees translated addresses and no routes are exchanged, overlapping ranges are not a problem, which is a major advantage for providers.
Check that the connection is approved, then resolve the service name from the failing client and confirm it returns the private address. Only then investigate routes and firewalls.
The concepts are stable, but supported services, limits, network policy behavior, zone names and prices change. Always confirm details in the current official Azure documentation before finalizing a design.
24Summary and Key Takeaways
Azure Private Link brings cloud services inside your own network. A private endpoint gives a platform service a private address in your subnet, tied to one specific resource. A Private Link Service lets providers publish their own services without exposing them or exchanging routes. The network side is straightforward; the naming side, DNS, decides success or failure. Good designs centralize DNS, link zones correctly, forward on-premises queries to a private resolver, place endpoints thoughtfully in a hub-and-spoke layout, and apply policy to keep things consistent. They disable public access last, after every client is confirmed on the private path, and they keep strong identity and monitoring in place because private networking narrows the doors but does not replace the locks. Treat the details of services, prices and limits as things to verify, and the ideas in this guide will serve you across any Azure environment.
Key Takeaways
- A private endpoint is a private door to one resource — it lives in your subnet, maps to a specific instance and sub-resource, and keeps traffic on the Microsoft backbone.
- DNS is the hard part — the service name must resolve to the private address from every client, using linked private zones, central resolvers and on-premises forwarding of privatelink zones only.
- The endpoint alone does not close the public door — disable public network access after confirming all clients, including pipelines and tools, use the private path.
- One endpoint per sub-resource — services such as storage need separate endpoints and DNS entries for each feature in use.
- Private Link Service is for providers — publish behind a standard load balancer, control visibility and approval, and avoid address overlap issues with customers.
- Plan routing and inspection — use network policies deliberately and keep paths symmetric when a central firewall is involved.
- Govern and verify — use policy, tagging and central DNS ownership at scale, and always confirm current service support, limits and pricing in the official documentation.