Skip to content
CAMPUX Cloud Bootcamp Phase Two · Class Fourteen · Part II
Phase Two — Core Infrastructure
Reading 20 min · Drills 4 · Part II of II
Private Connectivity
Class Fourteen · Part II

Private Link Service — and the limits that bite

Part I reached into someone else's service. This half flips the arrow: publish your own service behind a Standard Load Balancer, hand a stranger only an alias, and approve every connection yourself — then meet the regions, tenants, and NAT-pool limits that decide whether the design actually holds.

Play

Play it through

Four minutes, one order to rebuild. Stand up the load balancer, publish the service, let the partner ask, then approve it yourself — get the order wrong and see exactly what it produces instead.

This half carries no lab. Standing up a Private Link Service means a real Standard Load Balancer, a NAT-IP subnet, and — to see the cross-tenant approval for real — a second Azure tenant to request from, which is well past a beginner Cloud Shell exercise. Play the lesson above instead; it rehearses the exact same build-then-approve sequence at zero cost and zero risk.

§2

Across regions, across tenants, and the limits that bite

Private Link crosses boundaries that stop most networking. A private endpoint does not have to share a region with the resource it fronts: the NIC lives in your subnet's region, the target can sit in another, and the private path still holds — the only price is the latency of the distance, which makes cross-region private endpoints a normal shape for disaster-recovery designs where a failover region reaches primary data privately. What does not cross a region is the Private Link Service itself, which must be deployed alongside its virtual network and load balancer; the consumer's endpoint, though, may sit anywhere.

The more surprising reach is across ownership. A private endpoint and its target — or a private endpoint and a Private Link Service — can live in different subscriptions and even different Microsoft Entra tenants, with no peering and no shared RBAC between them. The two sides are joined only by the connection handshake of §1: the consumer requests, the provider approves. This is the security property that makes Private Link the sane answer for exposing a service to a customer. You never grant them a role in your subscription or a route into your network; you approve one connection to one endpoint, and revoke it by rejecting that connection. Contrast VNet peering, which joins two entire address spaces and demands cooperation on both sides — Private Link hands over a single door, not a shared hallway.

The DNS zone group, named at last

Three times already in Part I this class mentioned wiring the endpoint to its zone; here is the object that does it. A private DNS zone group is a small sub-resource of the private endpoint that binds the endpoint to one or more private DNS zones and keeps the A-record in step with the endpoint's IP automatically. It is the difference between a zone you hand-maintain and one Azure keeps correct for you: create the endpoint, attach the zone group, and if the endpoint's private IP ever changes the record follows it without a human touching the zone. This is why the CLI lab ran private-endpoint dns-zone-group create as its own step and the portal's DNS tab offered one toggle — both are creating this object. Resolving that same name from on-premises, where your machines cannot see an Azure private zone at all, is the whole of Class Fifteen; the zone group is the piece that makes the name correct inside Azure, and the on-prem resolver is what carries that answer back to the office.

Finally, the accounting, because "private everything" has a shape and a bill. A private endpoint is not free the way a service endpoint is: it bills per hour it exists, plus a charge for every gigabyte processed inbound and outbound through it. Multiply that by one endpoint per service per network and the number is real at estate scale — a reason to reach for a service endpoint when the requirement genuinely is only "restrict to my subnets." There are also structural limits: one private endpoint fronts one sub-resource, so a storage account exposing blob, file, queue and table needs four; a Private Link Service holds up to eight NAT addresses and is capped per load balancer and per subscription; and endpoints consume real private IPs from your subnets, so a plan that puts hundreds of them in one small subnet runs out of addresses before it runs out of budget.1

Table 2 — The three private-connectivity tools, side by side
 Service endpointPrivate endpointPrivate Link Service
Whose side you are onConsumerConsumerProvider
What it producesA trusted subnet on a public resourceA NIC + private IP fronting one resourceAn alias others connect to privately
Crosses tenants?NoYes — with connection approvalYes — you approve each consumer
Crosses regions?NoYes — endpoint and target may differConsumer endpoint may; the service may not
Needs a load balancer?NoNoYes — Standard, never Basic
CostFreePer hour + data processedNo hourly charge to publish; data processed

Read Table 2 as a decision, not a taxonomy. If the requirement is "keep this on the backbone," a service endpoint. If it is "give this resource a private address and let me close the public door," a private endpoint. If it is "let another company reach a service I run, without joining our networks," a Private Link Service. Three requirements, three tools; the interview question is whether you can name which one the sentence in front of you is actually asking for.

On the job

Approving the one connection that matters

You · Cloud Engineer · a shipping partner needs the order-status API

"Can partner logistics reach our order-status API without us opening it to the internet?" You publish a Private Link Service behind the API's Standard Load Balancer, hand the partner one alias, and wait. Their connection request lands Pending. You check the subscription ID against the partnership paperwork, approve the one connection, and traffic starts flowing — no peering, no shared role, no route into your network ever granted. Six months later an unrecognised subscription tries the same alias; it sits Pending too, and you reject it without calling a meeting.

Class Fourteen · Part II

Examination

Four drills, then two situations. The situations have no marking scheme — write your answer before you reveal the reasoning, or the exercise is worthless. Nothing is stored; this is between you and the page.

Drill 01Recall · what it publishes
You create a Private Link Service in front of your order API. What does a consumer in another tenant actually do to reach it?
Marked

A. The alias is the only thing that crosses the tenant boundary; the consumer's side of the handshake is exactly the same private endpoint you built in Part I, just aimed at your alias instead of a storage account. B is wrong because peering is precisely what this design avoids — no shared address space, no cooperation required on both sides. C is wrong because Private Link never hands out subscription roles; the security model is a connection you approve, not an identity you grant. D is wrong because publishing a Private Link Service does not create a new public IP — the whole point is that nothing new appears on the public internet.

Drill 02Recall · the Pending state
A partner's connection request arrives on your Private Link Service and shows as Pending. What has to happen before any of their traffic actually flows?
Marked

C. Pending means exactly what it says: a request is waiting for a decision, and no traffic moves until you make one. A and B invent behaviour Private Link does not have — there is no low-priority traffic mode and no timeout that promotes a request on its own. D is the trap dressed up as convenience: resolving the alias only finds the door, it does not open it. The request/approve handshake is the entire security model, and it sits entirely in the provider's hands unless you have explicitly pre-approved a subscription.

Drill 03Select three
Which three statements about Private Link Service are true?
Marked

The Standard-Load-Balancer requirement, the eight-address NAT ceiling, and the region rule. The two false statements are the pair this half exists to correct. The Private Link Service is anchored to its own load balancer and virtual network for its whole life — it does not travel to meet a consumer, only their endpoint does, and the distance is a latency cost, not a redesign. And the alias is not a secret: it identifies nothing about your subscription, but nothing stops anyone who obtains it from trying to connect, which is exactly why "anyone holding the alias" throws away the one control — your approval — that made the design safe in the first place.

Drill 04Spot the error
A colleague's plan to onboard a new logistics partner over Private Link. One line undoes the whole point of the design. Which?
PLAN — onboard partner-logistics over Private Link

1.  Put the order API behind a Standard Load Balancer.
2.  Create the Private Link Service against that balancer;
    note the alias it mints.
3.  Set visibility to "Anyone with the alias", so future
    partners can connect without waiting on us.
4.  Hand today's partner the alias; they create a private
    endpoint against it in their own subnet.
Marked

Line three. "Anyone with the alias" removes the request/approve handshake entirely — every connection auto-completes, known partner or not, because the alias is a working credential for whoever holds it, not a secret only your real partners have. The fix is a visibility scoped to known subscriptions, with an auto-approval list for the ones you already trust, so onboarding stays fast without opening the door to strangers. Line one is correct as written — Standard is mandatory, not optional. Line two is backwards: the alias is exactly what you are meant to hand the consumer; it reveals nothing sensitive on its own. Line four is also correct: a private endpoint on the consumer's side is the whole mechanism — peering is the thing this design exists to avoid.

Situation 01Write before you reveal
A second shipping partner, based in a region on the other side of the world from your order API, asks: "Can you move the Private Link Service closer to us? Our connections are slow." What is and is not possible here, and what do you actually do?
One side of this connection can move to chase a region. Which one?
Reasoning

Concede the latency is real, then correct the request. The Private Link Service cannot be redeployed to sit "closer" to a consumer — it is anchored to the Standard Load Balancer and virtual network it was created against, for as long as it exists. There is no setting that relocates it, because it is not a standalone object; it is a front door bolted to a specific building. Moving the building is not an option.

Name what actually can move: their endpoint, not your service. The partner's private endpoint can already sit in whatever region their own workload runs in — that part of the design is region-agnostic by design. The distance between their endpoint and your Private Link Service is a real latency cost of geography, not a networking mistake to fix; it is priced in the same way any cross-region call would be, private or not.

If the requirement is genuinely "fast, private access from three continents," the honest answer is more infrastructure, not a relocated one. Deploy the order API, its load balancer, and a Private Link Service in each region that needs low latency, and give each regional partner an alias for the stack nearest them. That costs real money and real operational surface — which is exactly why it should be a deliberate decision against a stated latency requirement, not a favour granted because one partner asked.

Situation 02Write before you reveal
A teammate pushes back: "Approving every partner connection by hand doesn't scale. Let's just set visibility to open — anyone holding the alias connects immediately — and stop being the bottleneck." How do you answer?
The complaint about manual approval is legitimate. The fix they are proposing removes the wrong thing.
Reasoning

Concede the real cost before defending the control. Being the manual approver for every new partner genuinely does not scale past a handful of relationships, and a teammate who is tired of being that bottleneck is pointing at a real problem. Dismissing the complaint outright loses the argument before it starts.

Name what "anyone with the alias" actually throws away. The alias is not a secret credential issued per partner — it is one string, and holding it is the only thing "open" visibility checks. Approval, not the alias, is the actual security boundary of this whole design; remove it and an unrecognised subscription connects exactly as easily as the partner you meant to onboard, because nothing distinguishes them anymore.

Offer the setting that actually solves the scaling problem: an auto-approval allow-list. Name the known subscriptions once, and their future connections complete without a manual step, while anything outside that list still lands Pending for a human to see. That gets your teammate the speed they want for partners you have already vetted, and keeps the one check that matters for everyone else — which is the difference between removing a bottleneck and removing a boundary.

Examination record · first attempt
0/4
Class Fourteen · Part II · Complete
Retain this much

What Part II leaves you holding

  1. A Private Link Service is the provider side of Private Link: it publishes your own service, behind a Standard Load Balancer, for private consumption — the exact mirror of the private endpoint you built to reach in.
  2. A consumer connects by creating a private endpoint against the alias you hand them; the connection sits Pending until you approve it, and approval is the whole security model.
  3. Visibility decides who may even try: role-based access, a named allow-list with auto-approval, or open to anyone holding the alias — and the alias is not a secret, so "open" approves everyone at once.
  4. A private endpoint may cross regions and tenants; the Private Link Service itself may not move — it stays anchored to its own load balancer and virtual network for as long as it exists.
  5. Private Link hands over one door, not a shared hallway: no peering, no shared RBAC, one connection approved or revoked at a time.
Notes
  1. Treat the specific figures here as current-at-writing, not eternal: the eight-NAT-address ceiling per Private Link Service and the per-load-balancer and per-subscription caps are the ones Microsoft documents today, and the hourly and per-gigabyte prices vary by region and drift over time. The direction is what to carry — private endpoints bill where service endpoints do not, endpoints are per-sub-resource, and a Private Link Service is a Standard-Load-Balancer-only, provider-side object with a NAT pool. Check the live limits and pricing pages before you size or budget anything.