Home / Databricks on Azure

Databricks on AzureHow-toIntermediate

Azure Databricks IP access lists: restricting workspace access by network without locking yourself out

Enable workspace IP access lists in Azure Databricks with the CLI or REST API, allow office, VPN and CI/CD ranges, and fix "blocked by Databricks IP ACL" errors.

Deepak Bhardwaj4 min read

Applies toAzure Databricks (Premium tier), Databricks CLI 0.2xx, Workspace IP access list API 2.0

What IP access lists do

IP access lists restrict which public IP addresses can reach a workspace's web UI and REST APIs. They apply to the public front end. They don't replace Private Link, but on workspaces that keep public access they are a simple, effective control.

  • Allow lists: if any allow list exists, only those IPs are permitted.
  • Block lists: always denied, checked first, even if an allow list also matches.
  • The feature needs the Premium tier and is off until you enable it.
  • The account console has its own, separate IP access lists.

Step 1: collect every source IP first

Before enabling anything, list every place that calls the workspace:

Caller Where to find the IP
Office and VPN egress Network team; your public IP from curl https://ifconfig.me
CI/CD agents (Azure DevOps, GitHub Actions) Self-hosted agent NAT IP; hosted agents use wide, changing ranges, so prefer self-hosted
Azure Data Factory, Power BI, other services Their outbound IPs, or private connectivity
Terraform runners, monitoring, scripts Their NAT gateway or public IPs

Check who is calling today from the audit logs if they are enabled (system.access.audit):

SELECT source_ip_address, user_identity.email, count(*) AS calls
FROM system.access.audit
WHERE event_date >= current_date() - 14
GROUP BY ALL
ORDER BY calls DESC;

Caution

Enabling an allow list that doesn't include your own IP blocks you from the UI and the API that could undo it. Always add your current IP and test from a second session before closing the first.

Step 2: create the lists, then enable the feature

Authenticate the CLI to the workspace (OAuth or Entra ID token), then create lists before turning enforcement on:

databricks ip-access-lists create --json '{
  "label": "office-and-vpn",
  "list_type": "ALLOW",
  "ip_addresses": ["203.0.113.0/24", "198.51.100.17/32"]
}'

databricks ip-access-lists create --json '{
  "label": "ci-cd-agents",
  "list_type": "ALLOW",
  "ip_addresses": ["192.0.2.40/32"]
}'

databricks ip-access-lists list

Enable enforcement:

databricks workspace-conf set-status --json '{"enableIpAccessLists": "true"}'
databricks workspace-conf get-status enableIpAccessLists

The same with the REST API:

curl -X PATCH "$DATABRICKS_HOST/api/2.0/workspace-conf" \
  -H "Authorization: Bearer $TOKEN" \
  -d '{"enableIpAccessLists": "true"}'

curl -X POST "$DATABRICKS_HOST/api/2.0/ip-access-lists" \
  -H "Authorization: Bearer $TOKEN" \
  -d '{"label": "office-and-vpn", "list_type": "ALLOW", "ip_addresses": ["203.0.113.0/24"]}'

Changes can take a few minutes to apply.

Step 3: maintain the lists

# Replace the addresses in an existing list (get the list_id from 'list')
databricks ip-access-lists replace <list-id> --json '{
  "label": "office-and-vpn", "list_type": "ALLOW", "enabled": true,
  "ip_addresses": ["203.0.113.0/24", "198.51.100.17/32", "198.51.100.18/32"]
}'

# Temporarily disable one list without deleting it
databricks ip-access-lists update <list-id> --json '{"enabled": false}'

# Delete
databricks ip-access-lists delete <list-id>

Block a known bad range:

databricks ip-access-lists create --json '{
  "label": "blocked", "list_type": "BLOCK", "ip_addresses": ["192.0.2.0/24"]
}'

Exact flags vary between CLI versions; check databricks ip-access-lists --help.

Troubleshooting

The error users see in the browser or API response is similar to: "Source IP address: x.x.x.x is blocked by Databricks IP ACL for workspace: ...".

Symptom Cause Fix
One user blocked from home Not on VPN, or split tunnelling sends Databricks traffic direct Route the workspace URL through the VPN, or add their range temporarily
Pipeline fails with 403 after enabling CI/CD agent IP not on the list Add the agent's egress IP; move to self-hosted agents with a fixed NAT IP
ADF or Power BI connections fail Service egress IPs not listed Add them, or use private connectivity for those services
Users get different IPs every hour Corporate proxy with a large egress pool Add the whole egress range from the network team
Clusters still work, UI doesn't Expected: cluster-to-control-plane traffic is not filtered by workspace IP lists Nothing to fix
Everyone is locked out Allow list didn't include admin IPs Call the API from an allowed IP; if none exist, open a support request with Microsoft

Prevent it next time

  • Keep IP lists in Terraform (databricks_ip_access_list and databricks_workspace_conf) so changes are reviewed.
  • Add a "break-glass" allow entry for a jump host with a fixed IP that admins can always use.
  • Label lists by purpose and keep a comment with the owner for each range.
  • Re-check the audit log monthly for blocked attempts; repeated blocks from your own ranges mean the list is out of date.
  • For workspaces with sensitive data, plan the move to front-end Private Link and disable public access.