Azure Databricks - Networking & Security - Simple Mode

The Two Planes and Three Doors, Explained Simply

A plain-English version of Lesson 2. The goal is to draw the architecture on a whiteboard: what runs where, who owns it, which way connections point, and where data lives. Once you can say that, every later control is just "harden one hop on this map."
Azure-first Who owns what Customer talk-track No port memorization

The One Mental Model

Think of Azure Databricks as an airport with exactly three doors.

Control plane

The control tower. Databricks runs it in their own subscription. It directs; it never holds your cargo.

Compute plane

The runway and aircraft where your data is processed.

Classic

Your runway at your airport - compute in your subscription and VNet.

Serverless

Rented runway at Databricks' airport - no VNet of yours.

Door ①

User to Databricks - the front door.

Door ②

Compute to control - the staff intercom, outbound only.

Door ③

Compute to storage - the loading dock.

Your data

Lives in your ADLS Gen2 behind Unity Catalog. Never flows through the control tower.

Azure Databricks two-plane architecture: user to control plane, classic compute outbound to the SCC relay, compute to ADLS Gen2, and serverless plane reaching control and storage over the backbone
The same architecture map, used as a story: two planes, three doors, and data that stays in your storage.

Interactive diagrams live in each tab

Each tab below has its own clickable whiteboard: Two planes → Control vs Compute, Three doors → Three Paths, Deployment map → Deployment & Storage. Open a tab, then click a box to see what it does in plain English.

The line a security team wants to hear

"Customer data stays in the customer's storage and is processed in the compute plane; the control plane holds metadata and orchestration only. Classic compute to control and all serverless traffic ride the Microsoft backbone - not the public internet."

Control Plane vs Compute Plane: Who Owns What

Start here (plain English)

Picture a delivery company: a dispatch office takes orders and tells drivers where to go, and the trucks actually carry the goods. Databricks splits the platform the same way - a brain that gives orders and muscle that does the heavy lifting - and the two live in different places owned by different people.

Two separate sets of machines, run by two parties, in two subscriptions.

Interactive: click the boxes

Click each box to see who owns it and what runs there.

How the brain runs the muscle (without dialing in)

If the two planes are separate machines in separate subscriptions, how does the control plane "run this" on compute it can't connect into? Through a reverse tunnel via the SCC relay (which lives in the control plane):

  1. The compute node dials out first. At launch each No-Public-IP cluster VM opens one outbound 443 connection to the SCC relay - never the other way around (this is Door ②).
  2. The connection is held open. The control plane then pushes run / scale / terminate commands back down that already-open tunnel.
  3. The direction of connection setup (outbound, from compute) is not the direction of commands (control plane → compute). That is how "the brain directs the muscle" with no inbound port on your network.

Control travels the tunnel; data does not

The relay carries orchestration only - "run this," logs, status. Your business data moves directly between the compute plane and ADLS Gen2 (Door ③), never through the control plane. Serverless reaches the control plane over the Microsoft backbone + TLS instead - no relay, because there is no VNet of yours. (Full mechanism on the Secure Boundary tab.)

Why the plane decides which toolbox is on the table

In classic, compute is in your VNet, so you can attach an NSG, a UDR, a firewall, or a Private Endpoint. In serverless, there is no VNet of yours, so none of those apply. That is exactly why NCC (Network Connectivity Configuration) exists - the serverless answer to "VNet controls" (Stage 5).

DimensionClassicServerless
Runs inYour subscription / VNetDatabricks-owned subscription
Network you controlThe VNet (managed or injected)None - no customer VNet
VMs visible to youYes (in a managed RG)No
Public IPs on computeNo (NPIP)No
Secure egress withNSG / UDR / NAT / Firewall / Private EndpointNCC + network policies
StartupMinutes (VMs provision)Seconds (pre-warmed)

Customer explanation

"Two planes. Databricks runs the brain in its own subscription; your data is processed in the compute plane and never leaves your storage. Classic puts compute in your VNet so you own the network controls; serverless trades that VNet for speed and uses NCC instead."

Portal naming gotcha

A classic workspace is labelled a "Hybrid workspace" in the Azure Portal (CLI --compute-mode Hybrid). "Hybrid" means classic compute in your subscription - it does not mean hybrid-cloud.

The Secure Boundary: Connections Point Outward

Start here (plain English)

Think of your compute as a house with no doorbell on the outside - no one can knock and be let in. Instead, the house calls the office first, and the office only ever talks back on that call it already answered. So the compute always starts the conversation; nothing from outside can start one with it.

The platform's single most important security property is "no inbound ports." It is not magic - it is a reversed connection.

How it works with SCC / No Public IP (the default)

  1. Cluster VMs have no public IPs; your VNet has no open inbound ports. Nothing on the internet - or the control plane - can dial into a cluster.
  2. So how does "start this job" arrive? The cluster dials out first. At startup, each cluster opens an outbound connection on port 443 to the SCC relay, forming a reverse tunnel.
  3. The control plane sends instructions back down that already-open tunnel. It never initiates inbound.

The phone analogy

You call support; they answer on your open line. They can never call your phone. That is why "no inbound ports" is a consequence of reversing the connection, not a feature you toggle.

Serverless reaches the same property differently

Serverless VMs also have no public IPs, and compute-to-control is always over the Microsoft backbone with TLS. There is no SCC relay because there is no VNet of yours.

Customer explanation

"'No inbound ports' is not a feature we toggle - it is a consequence of reversing the connection. The cluster dials out to the relay on 443; the control plane only ever answers down that tunnel. Nothing outside can open a connection to your compute."

Stable egress IP

For classic, route egress through an Azure NAT Gateway so partners can allowlist a fixed IP. Serverless egress IPs are dynamic - pivot to the AzureDatabricksServerless service tag or NCC instead.

Backbone vs Internet: The "Is Our Data On The Internet?" Talk

Start here (plain English)

There are two ways to drive across town: the public roads (the open internet) that anyone can use, or Microsoft's own private toll road (the backbone) that only Azure traffic rides. Most Databricks traffic is already on the private toll road by default - it never touches the public roads.

The Microsoft backbone is Microsoft's private global network. Azure-to-Azure traffic rides it without ever touching the public internet.

A lot of Databricks traffic is already off the public internet by default:

Important idea

"Public IP" here means routable over the backbone, not exposed to the open internet. Private Link removes the public-IP hop the auditor cares about. It does not "get you off the internet," because you mostly already are.

What "back-end Private Link removes the public-IP hop" means

The back-end path is compute → control plane (Door ②, the cluster dialing the SCC relay on 443). SCC and back-end Private Link remove public IPs from two different ends of that same connection:

Which endRemoved byWhat it does
Source - your cluster VMSCC / No Public IPVM has no public IP and no inbound port; it only dials out.
Destination - the relay endpointBack-end Private LinkReplaces the relay's public endpoint with a Private Endpoint (databricks_ui_api) inside your VNet.

With SCC alone, your VM has no public IP, but the address it dials is still the relay's public IP (over the backbone) - which is exactly why you keep the AzureDatabricks service tag in your egress allowlist. Back-end Private Link puts that relay behind a private IP in your own VNet, so the outbound 443 connection never targets a public address at all. That last public-IP hop is gone.

The consequence

Add back-end Private Link and you no longer need the AzureDatabricks egress tag for the relay - there is nothing public to allow out to. SCC handles the source, back-end PL handles the destination; together the whole compute→control path is private on both ends.

Customer explanation

"A lot is already off the public internet by default. Private Link and NCC just remove the last public-IP hop the auditor cares about. So let's not over-buy Private Link you don't actually need."

What breaks if you skip this

Customers over-buy Private Link (per-GB cost, Premium prerequisite, DNS work) to solve a problem they did not have.

The Three Connectivity Paths

Start here (plain English)

Think of one building with exactly three openings: a front door for visitors, a staff intercom to call head office, and a loading dock for goods. Databricks has the same three - and almost every security control just locks down one of them.

Front door

User to Databricks - people signing in or running queries against the workspace.

Staff intercom

Compute to control - clusters phoning head office to be told what to do.

Loading dock

Compute to storage - clusters reading and writing your actual data.

Secure a building and you ask exactly three questions: who comes in the front door, how staff reach head office, and how the loading dock is locked. Same three for Databricks - and almost every control protects one of them.

Interactive: click the boxes

Click each box to see what travels through that door and how it is secured.

#PathWho talks to whomAnalogy
①User to Databricks (front-end)Browser, BI (JDBC/ODBC), REST/CLI to the workspace URLFront door
②Compute to Control plane (back-end)Cluster phoning home to be managedStaff intercom
③Compute to Storage (data path)Cluster reading/writing your ADLS Gen2 dataLoading dock

How each door hardens

① User to DBX② Compute to Control③ Compute to Storage
DirectionInbound to control planeOutbound from compute (SCC reverses it)Outbound from compute
Classic controlIP access list / front-end PLSCC + VNet injection, back-end PLStorage firewall + Service/Private Endpoint
Serverless controlSame (front-end PL / IP ACL)Managed backbone + TLS (no SCC)NCC service tag / NCC PE
Key port443443 (SCC)443 to storage

Customer explanation

"There are only three traffic paths: users in, clusters to control, clusters to data. We secure each one independently. When something breaks, which path failed tells us which control to inspect."

Time-sensitive (verify)

By 2026-06-09, a storage account that allowlists serverless must onboard to an Azure Network Security Perimeter (NSP) and allow the AzureDatabricksServerless.<region> service tag - the older "allow serverless subnet IDs" pattern is retiring.

Deployment & Workspace Storage

Start here (plain English)

When you create a workspace, Azure drops the pieces into two folders: your folder, which you fully control, and a Databricks-run folder you can look in but should not touch. And there are two separate sets of keys - one for the Azure resource, a different one for governing the data - so holding one does not give you the other.

Azure Databricks is a first-party Azure service (Microsoft.Databricks/workspaces) - sold, billed, and RBAC'd by Azure itself. One create lands resources in two resource groups.

Interactive: click the boxes

Click each box to see who owns it after a single workspace create.

Resource groupWhat it holdsWho edits it
Your RGThe Microsoft.Databricks/workspaces objectYou (Azure RBAC, Policy, locks, tags)
Managed RGWorkspace storage account, managed identity, managed VNet (if not injected), cluster disksDatabricks-managed - viewable, not editable. Lock it.

The governance spine

The account to workspace to metastore spine is the backbone every later lesson hangs off:

ConcernWorkspace storage / DBFS rootUnity Catalog + ADLS Gen2
GovernanceWorkspace-scoped, coarseCentral metastore, fine-grained grants
Lineage & auditNone for raw pathsFull lineage + system.access audit
StatusDeprecated / legacyRecommended, GA

Customer explanation

"Housekeeping goes in workspace storage; governed data goes in ADLS Gen2 behind Unity Catalog - never the DBFS root. And there are two role systems: Azure RBAC creates the workspace resource, but a Databricks account admin governs the account and metastore. Being Azure Owner does not make you a Databricks account admin."

Two deadlines and a danger

Standard tier is EOL 2026-10-01 - treat Premium as baseline (Private Link, CMK, IP ACLs, CSP are Premium-only). And deleting the workspace storage account makes the workspace unrecoverable - lock the managed RG.

Field Notes: Symptom to First Thought

Do not start by memorizing ports or service tags. Start by asking which plane, which direction, and which of the three doors is involved.

SymptomFirst Thing To Think
Clusters stuck "Pending" on a fresh VNetIs there outbound egress (NAT Gateway / UDR to firewall)? New VNets have no default outbound after 2026-03-31.
"We see a public IP" panicCheck the cluster VM in the managed RG - under NPIP the Public IP field is empty.
Intermittent control-plane loss after firewall lockdownDid they allowlist the SCC relay by raw IP instead of FQDN?
Serverless can't reach firewalled storageIs the NCC bound, with the AzureDatabricksServerless.<region> service tag or NCC PE allowed?
"Private now" but ADLS still publicPath ③ forgotten - is storage still "Enabled from all networks"?
Jobs/notebooks fail on dbfs:/ pathsNew accounts ship without DBFS root - migrate to a UC volume / external location.
"I'm Owner but can't admin the account/metastore"Wrong role system - Azure RBAC creates the resource; a Databricks account admin governs the account.
The architect one-liner
"Two planes: Databricks runs the brain in its own subscription; your data is processed in the compute plane and never leaves your storage. There are only three traffic paths - users in, clusters to control, clusters to data - and we secure each one independently. A lot is already off the public internet by default; Private Link and NCC just remove the last public-IP hop the auditor cares about."

The seven questions

  1. Which plane is the compute - classic (your VNet) or serverless (no VNet)?
  2. Which direction does the connection point? (Compute always dials out.)
  3. Is this traffic on the backbone or genuinely on the public internet?
  4. Which of the three paths is involved - front door, intercom, or loading dock?
  5. Where does the data actually live - UC + ADLS Gen2, or (wrongly) the DBFS root?
  6. Which resource group owns this - my RG, or the locked managed RG?
  7. Which role system is in play - Azure RBAC, or Databricks account admin?