Azure / Intermediate: managed services and governance / Lesson 9
Private endpoints, DNS, and end-to-end access
Trace a service connection from the client’s resolver to the target identity. Distinguish private endpoints, service endpoints, application outbound integration, and data authorization.
On this page
Lesson goals
- Explain network and DNS roles in Private Link access.
- Separate inbound exposure from outbound integration.
- Interpret an offline address model without claiming connectivity.
Similar private-network names describe different mechanisms
A private endpoint provides a private network interface for supported access to a service through Azure Private Link. Service endpoints follow a different design involving a service’s endpoint and virtual-network identity under its support rules. Neither phrase means every public path is automatically disabled or every application identity is authorized. App Service outbound virtual-network integration is also distinct from giving the application a private inbound endpoint. Identify direction, client location, target subresource, public-access policy, and service support before selecting a mechanism. A diagram with a private IP is insufficient to establish the entire access path.
The client must resolve the service name in its own context
A client normally uses the service’s documented hostname so TLS and application addressing remain correct. Private DNS records, zone links, forwarding, and hybrid resolvers influence whether that name leads to the intended private address. A zone existing somewhere is not proof that this client’s resolver can use it. Avoid replacing a hostname with an IP as a permanent fix when certificate and service routing expect the original name. The model below records resolver context and expected address class using a reserved example domain. It is not a DNS zone deployment or a real lookup result.
{
"model": "dns-expectation-only",
"hostname": "storage.example.invalid",
"client_contexts": [
{
"client": "inside-linked-network",
"expected_address_class": "private"
},
{
"client": "outside-private-resolution",
"expected_address_class": "depends-on-public-dns-and-policy"
}
]
}
evaluate resolution from the actual client context before testing transport
The example domain is reserved and no DNS request occurs. Real service-specific zone names must come from current Microsoft documentation.
Address classification does not prove a connection
The offline program checks whether two documentation addresses belong to an intended synthetic subnet. It distinguishes the private candidate from an address outside that prefix without resolving a name or sending a packet. Even a correct private result can fail because of routing, network rules, endpoint approval, service firewall settings, TLS, identity, or application policy. Diagnose these in order and preserve safe context instead of granting broad roles or allowing all network sources. A single successful test from an administrator’s machine is not evidence that a different application subnet and resolver context works.
from ipaddress import ip_address, ip_network
expected = ip_network("10.20.2.0/24")
observed_model = {"inside": "10.20.2.5", "outside": "203.0.113.5"}
for client, address in observed_model.items():
print(client, ip_address(address) in expected)
inside True
outside False
These are synthetic expected values, not captured DNS or network observations. No socket, resolver, or Azure API is called.
Private routing does not decide who may read data
After name and transport conditions are correct, the service still evaluates the credential and requested data operation. Managed identity selection, token audience, tenant, role scope, and data-plane permissions can all matter. Public-network restrictions and private endpoint access are service configuration, not replacements for least privilege. Review which credential path the client actually uses; a shared key, signed URL, and Entra token are different authorization routes. Keep secrets out of packet or application diagnostics. Error status and correlation information should help identify the boundary without publishing credentials or private object contents.
Verify each client path and the intended denial
A future authorized verification should record the client, resolver, hostname, resolved address, route/security context, service response, and access decision. Include an allowed workload and a denied source or identity so success is not obtained by accidental public exposure. Private endpoints can introduce dependencies on DNS forwarding and regional network components that belong in recovery planning. This course performs no DNS queries, pings, connection attempts, endpoint approvals, or cloud configuration changes. It validates the planning data and offline prefix arithmetic only, leaving real connectivity and service authorization explicitly untested.
Common errors and fixes
A private DNS zone exists but the client resolves elsewhere
- Why it happens
- Zone existence is confused with resolver reachability and links.
- How to fix it
- Trace the actual client’s forwarding and zone-link path.
- Prevent it next time
- Record resolver context for every supported client network.
VNet integration is assumed to make App Service inbound private
- Why it happens
- Outbound integration and inbound exposure are conflated.
- How to fix it
- Design the intended direction and service-specific endpoint policy.
- Prevent it next time
- Review inbound and outbound paths separately.
A private IP is treated as proof of data authorization
- Why it happens
- Network placement substitutes for identity and operation checks.
- How to fix it
- Verify the credential path and narrow data permissions.
- Prevent it next time
- Include denied-identity evidence beside connectivity evidence.
Check your understanding
1. Why should the service hostname often remain unchanged with private access?
Show worked solution
The hostname participates in documented service addressing and TLS identity while DNS can direct it to a private address. Replacing it with an IP can break those contracts. Verify the service-specific DNS guidance and actual client resolver rather than applying a universal hosts-file workaround.
2. What does the prefix-classification program leave untested?
Show worked solution
It leaves real DNS, routing, security rules, endpoint approval, service configuration, TLS, credentials, and application access untested. It compares literal documentation addresses only. Do not report it as a private-endpoint connectivity or authorization test.
Key takeaways
- Resolve and verify the path from the real client context in an authorized test.
- Private networking, TLS identity, and data permission remain separate boundaries.