<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Accessing Azure Databricks Workspace via Private Endpoint and On-Premises Proxy in Data Engineering</title>
    <link>https://community.databricks.com/t5/data-engineering/accessing-azure-databricks-workspace-via-private-endpoint-and-on/m-p/154028#M54057</link>
    <description>&lt;P&gt;&lt;SPAN&gt;This is a classic &lt;/SPAN&gt;&lt;STRONG&gt;hub-spoke + on-premises hybrid&lt;/STRONG&gt;&lt;SPAN&gt; networking scenario. Here's how to architect it end-to-end.&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3&gt;&lt;STRONG&gt;Architecture Overview&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;&lt;SPAN&gt;The traffic flow will be:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;VM (VNet-App) --&amp;gt; ExpressRoute/VPN Gateway --&amp;gt; On-Prem Proxy Server --&amp;gt; ExpressRoute/VPN Gateway --&amp;gt; VNet-PE-ENDPOINT --&amp;gt; Private Endpoint --&amp;gt; Azure Databricks&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;&lt;STRONG&gt;Step 1: Network Connectivity Between VNets and On-Premises&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;&lt;SPAN&gt;You need &lt;/SPAN&gt;&lt;STRONG&gt;two connectivity paths&lt;/STRONG&gt;&lt;SPAN&gt; -- both going through your on-premises network:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;VM VNet (VNet-App) to On-Premises:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;Configure an &lt;/SPAN&gt;&lt;STRONG&gt;ExpressRoute circuit&lt;/STRONG&gt;&lt;SPAN&gt; or &lt;/SPAN&gt;&lt;STRONG&gt;Site-to-Site VPN Gateway&lt;/STRONG&gt;&lt;SPAN&gt; in VNet-App (or a hub VNet peered to VNet-App)&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;This allows the VM to route traffic to the on-premises proxy&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;On-Premises to Private Endpoint VNet (VNet-PE-ENDPOINT):&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;Configure an &lt;/SPAN&gt;&lt;STRONG&gt;ExpressRoute circuit&lt;/STRONG&gt;&lt;SPAN&gt; or &lt;/SPAN&gt;&lt;STRONG&gt;Site-to-Site VPN Gateway&lt;/STRONG&gt;&lt;SPAN&gt; in VNet-PE-ENDPOINT (or a hub VNet peered to it)&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;This allows the on-premises proxy to reach the private endpoint's private IP&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Recommended: Hub-Spoke Topology&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Rather than connecting each VNet individually, use a &lt;/SPAN&gt;&lt;STRONG&gt;hub VNet&lt;/STRONG&gt;&lt;SPAN&gt; with a single ExpressRoute/VPN gateway:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;VNet-App (spoke) ---peering---&amp;gt; Hub VNet &amp;lt;---peering--- VNet-PE-ENDPOINT (spoke)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;|&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ExpressRoute/VPN&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;|&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;On-Premises Network&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(Proxy Server here)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Enable &lt;/SPAN&gt;&lt;STRONG&gt;"Allow Gateway Transit"&lt;/STRONG&gt;&lt;SPAN&gt; on the hub peering and &lt;/SPAN&gt;&lt;STRONG&gt;"Use Remote Gateway"&lt;/STRONG&gt;&lt;SPAN&gt; on each spoke peering so all spokes can use the hub's gateway.&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3&gt;&lt;STRONG&gt;Step 2: Configure the On-Premises Proxy Server&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;&lt;SPAN&gt;The proxy server (e.g., Squid, nginx, or an enterprise proxy like Zscaler/Blue Coat) must be configured to:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Allow HTTPS traffic to Databricks endpoints:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;Your workspace URL: adb-xxxxxxxxxxxx.xx.azuredatabricks.net (port 443)&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;Browser auth URL: region.pl-auth.azuredatabricks.net (port 443)&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;Additional ports if needed: 6666, 3306, 8443-8451&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Forward traffic toward the Azure private endpoint IP:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;The proxy must resolve the Databricks workspace URL to the &lt;/SPAN&gt;&lt;STRONG&gt;private IP&lt;/STRONG&gt;&lt;SPAN&gt; of the private endpoint (not the public IP)&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;This requires proper DNS configuration (see Step 3)&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Proxy configuration example (Squid):&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;# Allow Databricks workspace traffic&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;acl databricks_hosts dstdomain .azuredatabricks.net&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;http_access allow databricks_hosts&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;&lt;STRONG&gt;Step 3: DNS Configuration (Critical)&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;&lt;SPAN&gt;This is the &lt;/SPAN&gt;&lt;STRONG&gt;most important step&lt;/STRONG&gt;&lt;SPAN&gt;. The proxy server must resolve Databricks URLs to private IPs, not public IPs.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Option A: Conditional DNS Forwarding (Recommended)&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;On your on-premises DNS server, configure a &lt;/SPAN&gt;&lt;STRONG&gt;conditional forwarder&lt;/STRONG&gt;&lt;SPAN&gt;:&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;Zone: &lt;/SPAN&gt;&lt;STRONG&gt;privatelink.azuredatabricks.net&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;Forward to: An &lt;/SPAN&gt;&lt;STRONG&gt;Azure DNS Forwarder&lt;/STRONG&gt;&lt;SPAN&gt; (a VM or Azure Firewall DNS proxy in your hub VNet)&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Important:&lt;/STRONG&gt;&lt;SPAN&gt; Do NOT forward directly to 168.63.129.16 -- this Azure DNS IP only responds to queries from within Azure VNets. You need an intermediary forwarder.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Azure DNS Forwarder options:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;A small &lt;/SPAN&gt;&lt;STRONG&gt;Windows/Linux VM&lt;/STRONG&gt;&lt;SPAN&gt; running DNS forwarding (e.g., BIND, Windows DNS, dnsmasq)&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;STRONG&gt;Azure Firewall&lt;/STRONG&gt;&lt;SPAN&gt; with DNS proxy enabled&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;STRONG&gt;Azure DNS Private Resolver&lt;/STRONG&gt;&lt;SPAN&gt; (managed service, no VM needed)&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Option B: Manual DNS A Records&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;If conditional forwarding isn't possible, create static A records on your on-premises DNS:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;adb-xxxxxxxxxxxx.xx.azuredatabricks.net&amp;nbsp; --&amp;gt;&amp;nbsp; 10.x.x.x&amp;nbsp; (private endpoint IP)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;region.pl-auth.azuredatabricks.net &amp;nbsp; &amp;nbsp; &amp;nbsp; --&amp;gt;&amp;nbsp; 10.x.x.x&amp;nbsp; (same private endpoint IP)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Find the private IP from: Azure Portal &amp;gt; Private Endpoint &amp;gt; Network Interface &amp;gt; IP Configuration&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Note:&lt;/STRONG&gt;&lt;SPAN&gt; Do NOT override accounts.azuredatabricks.net -- the Account Console must resolve publicly.&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3&gt;&lt;STRONG&gt;Step 4: VM Proxy Configuration&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;&lt;SPAN&gt;Configure the VM in VNet-App to route Databricks traffic through the on-premises proxy:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Environment variables (Linux):&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;export HTTPS_PROXY=&lt;A href="http://proxy.onprem.company.com:8080" target="_blank"&gt;http://proxy.onprem.company.com:8080&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;export HTTP_PROXY=&lt;A href="http://proxy.onprem.company.com:8080" target="_blank"&gt;http://proxy.onprem.company.com:8080&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;export NO_PROXY=169.254.169.254,168.63.129.16&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;For Databricks CLI or API calls:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;export HTTPS_PROXY=&lt;A href="http://proxy.onprem.company.com:8080" target="_blank"&gt;http://proxy.onprem.company.com:8080&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;databricks clusters list --profile my-workspace&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;For application code (Python example):&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;import os&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;os.environ['HTTPS_PROXY'] = '&lt;A href="http://proxy.onprem.company.com:8080" target="_blank"&gt;http://proxy.onprem.company.com:8080&lt;/A&gt;'&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;&lt;STRONG&gt;Step 5: NSG and Firewall Rules&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;&lt;SPAN&gt;Ensure Network Security Groups allow the required traffic:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;VNet-App NSG (outbound):&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;Allow TCP 443 outbound to on-premises proxy IP&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;On-premises firewall:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;Allow the proxy to reach VNet-PE-ENDPOINT subnet on TCP 443&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;VNet-PE-ENDPOINT NSG (inbound to private endpoint subnet):&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;Allow TCP 443, 6666, 3306, 8443-8451 from on-premises network CIDR&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;&lt;STRONG&gt;Step 6: Verify End-to-End Connectivity&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;&lt;STRONG&gt;From the on-premises proxy server:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;nslookup adb-xxxxxxxxxxxx.xx.azuredatabricks.net&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;# Should resolve to the private IP (e.g., 10.x.x.x)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;From the VM (through proxy):&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;curl -x &lt;A href="http://proxy.onprem.company.com:8080" target="_blank"&gt;http://proxy.onprem.company.com:8080&lt;/A&gt; \&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;A href="https://adb-xxxxxxxxxxxx.xx.azuredatabricks.net/api/2.0/clusters/list" target="_blank"&gt;https://adb-xxxxxxxxxxxx.xx.azuredatabricks.net/api/2.0/clusters/list&lt;/A&gt; \&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;-H "Authorization: Bearer &amp;lt;token&amp;gt;"&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;&lt;STRONG&gt;Summary Checklist&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;STRONG&gt;Component&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;STRONG&gt;Configuration&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SPAN&gt;VNet-App to On-Prem&lt;/SPAN&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SPAN&gt;ExpressRoute or VPN (via hub VNet peering)&lt;/SPAN&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SPAN&gt;On-Prem to VNet-PE-ENDPOINT&lt;/SPAN&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SPAN&gt;ExpressRoute or VPN (via hub VNet peering)&lt;/SPAN&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SPAN&gt;DNS Resolution&lt;/SPAN&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SPAN&gt;Conditional forwarder for privatelink.azuredatabricks.net to Azure DNS Forwarder&lt;/SPAN&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SPAN&gt;Proxy Server&lt;/SPAN&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SPAN&gt;Allow *.azuredatabricks.net on port 443&lt;/SPAN&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SPAN&gt;VM Proxy Config&lt;/SPAN&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SPAN&gt;Set HTTPS_PROXY environment variable&lt;/SPAN&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SPAN&gt;NSGs&lt;/SPAN&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SPAN&gt;Allow 443 (and 6666, 3306, 8443-8451) between all hops&lt;/SPAN&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SPAN&gt;Validation&lt;/SPAN&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SPAN&gt;nslookup from proxy + curl from VM through proxy&lt;/SPAN&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;H3&gt;&lt;STRONG&gt;Key Gotcha&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;&lt;SPAN&gt;The most common failure is &lt;/SPAN&gt;&lt;STRONG&gt;DNS resolution&lt;/STRONG&gt;&lt;SPAN&gt;. If the proxy resolves the Databricks URL to a &lt;/SPAN&gt;&lt;STRONG&gt;public IP&lt;/STRONG&gt;&lt;SPAN&gt; instead of the private endpoint IP, the connection will fail because public access is disabled. Always verify with nslookup from the proxy server itself.&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3&gt;&lt;STRONG&gt;References&lt;/STRONG&gt;&lt;/H3&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/databricks/security/network/front-end/front-end-private-connect" target="_blank"&gt;&lt;SPAN&gt;Configure Inbound Private Link -- Azure Databricks&lt;/SPAN&gt;&lt;/A&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/databricks/security/network/concepts/private-link" target="_blank"&gt;&lt;SPAN&gt;Azure Private Link Concepts -- Databricks&lt;/SPAN&gt;&lt;/A&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;A href="https://learn.microsoft.com/en-us/answers/questions/5586707/how-to-resolve-azure-databricks-private-endpoint-u" target="_blank"&gt;&lt;SPAN&gt;Resolve Databricks Private Endpoint URLs from On-Prem -- Microsoft Q&amp;amp;A&lt;/SPAN&gt;&lt;/A&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/architecture/networking/architecture/hub-spoke" target="_blank"&gt;&lt;SPAN&gt;Hub-Spoke Network Topology in Azure&lt;/SPAN&gt;&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;</description>
    <pubDate>Fri, 10 Apr 2026 04:56:42 GMT</pubDate>
    <dc:creator>anuj_lathi</dc:creator>
    <dc:date>2026-04-10T04:56:42Z</dc:date>
    <item>
      <title>Accessing Azure Databricks Workspace via Private Endpoint and On-Premises Proxy</title>
      <link>https://community.databricks.com/t5/data-engineering/accessing-azure-databricks-workspace-via-private-endpoint-and-on/m-p/153962#M54045</link>
      <description>&lt;P&gt;Public access to the Azure Databricks workspace is currently disabled. Access is required through a &lt;STRONG&gt;Private Link (private endpoint – api_ui)&lt;/STRONG&gt;.&lt;/P&gt;&lt;P&gt;A private endpoint has already been configured successfully:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Virtual Network: &lt;STRONG&gt;Vnet-PE-ENDPOINT&lt;/STRONG&gt;&lt;/LI&gt;&lt;LI&gt;Subnet: &lt;STRONG&gt;Snet-PE-ENDPOINT&lt;/STRONG&gt;&lt;/LI&gt;&lt;LI&gt;Private Link connection to the Databricks workspace is established&lt;/LI&gt;&lt;LI&gt;Connectivity from this VNet to the workspace has been tested and is working as expected (ns lookup and list cluster from a test vm )&lt;/LI&gt;&lt;/UL&gt;&lt;H3&gt;New Requirement&lt;/H3&gt;&lt;P&gt;An application hosted on a &lt;STRONG&gt;VM in a different Azure VNet&lt;/STRONG&gt; needs to access the Databricks workspace. However, the access must be routed through an &lt;STRONG&gt;on-premises proxy server&lt;/STRONG&gt;.&lt;/P&gt;&lt;H3&gt;---&amp;gt;&lt;/H3&gt;&lt;OL&gt;&lt;LI&gt;How can this architecture be configured to enable secure connectivity?&lt;/LI&gt;&lt;LI&gt;What configuration is required between:&lt;UL&gt;&lt;LI&gt;The &lt;STRONG&gt;on-premises proxy and Azure Databricks (via Private Endpoint)&lt;/STRONG&gt;?&lt;/LI&gt;&lt;LI&gt;The &lt;STRONG&gt;VM VNet and the on-premises proxy&lt;/STRONG&gt;?&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;LI&gt;What networking component should be used to enable this flow?&lt;/LI&gt;&lt;LI&gt;How can we ensure that the VM ultimately accesses the Databricks workspace &lt;STRONG&gt;via the private endpoint only&lt;/STRONG&gt;, without exposing public access?&lt;/LI&gt;&lt;/OL&gt;&lt;H3&gt;&lt;SPAN&gt;&lt;STRONG&gt;End Goal&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/H3&gt;&lt;P&gt;The VM hosted in a separate Azure VNet should be able to securely access the Azure Databricks workspace through the &lt;STRONG&gt;on-premises proxy&lt;/STRONG&gt;, while ensuring that all traffic is routed via the &lt;STRONG&gt;private endpoint&lt;/STRONG&gt;.&lt;/P&gt;</description>
      <pubDate>Thu, 09 Apr 2026 16:31:56 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-engineering/accessing-azure-databricks-workspace-via-private-endpoint-and-on/m-p/153962#M54045</guid>
      <dc:creator>ittzzmalind</dc:creator>
      <dc:date>2026-04-09T16:31:56Z</dc:date>
    </item>
    <item>
      <title>Re: Accessing Azure Databricks Workspace via Private Endpoint and On-Premises Proxy</title>
      <link>https://community.databricks.com/t5/data-engineering/accessing-azure-databricks-workspace-via-private-endpoint-and-on/m-p/154028#M54057</link>
      <description>&lt;P&gt;&lt;SPAN&gt;This is a classic &lt;/SPAN&gt;&lt;STRONG&gt;hub-spoke + on-premises hybrid&lt;/STRONG&gt;&lt;SPAN&gt; networking scenario. Here's how to architect it end-to-end.&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3&gt;&lt;STRONG&gt;Architecture Overview&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;&lt;SPAN&gt;The traffic flow will be:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;VM (VNet-App) --&amp;gt; ExpressRoute/VPN Gateway --&amp;gt; On-Prem Proxy Server --&amp;gt; ExpressRoute/VPN Gateway --&amp;gt; VNet-PE-ENDPOINT --&amp;gt; Private Endpoint --&amp;gt; Azure Databricks&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;&lt;STRONG&gt;Step 1: Network Connectivity Between VNets and On-Premises&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;&lt;SPAN&gt;You need &lt;/SPAN&gt;&lt;STRONG&gt;two connectivity paths&lt;/STRONG&gt;&lt;SPAN&gt; -- both going through your on-premises network:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;VM VNet (VNet-App) to On-Premises:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;Configure an &lt;/SPAN&gt;&lt;STRONG&gt;ExpressRoute circuit&lt;/STRONG&gt;&lt;SPAN&gt; or &lt;/SPAN&gt;&lt;STRONG&gt;Site-to-Site VPN Gateway&lt;/STRONG&gt;&lt;SPAN&gt; in VNet-App (or a hub VNet peered to VNet-App)&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;This allows the VM to route traffic to the on-premises proxy&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;On-Premises to Private Endpoint VNet (VNet-PE-ENDPOINT):&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;Configure an &lt;/SPAN&gt;&lt;STRONG&gt;ExpressRoute circuit&lt;/STRONG&gt;&lt;SPAN&gt; or &lt;/SPAN&gt;&lt;STRONG&gt;Site-to-Site VPN Gateway&lt;/STRONG&gt;&lt;SPAN&gt; in VNet-PE-ENDPOINT (or a hub VNet peered to it)&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;This allows the on-premises proxy to reach the private endpoint's private IP&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Recommended: Hub-Spoke Topology&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Rather than connecting each VNet individually, use a &lt;/SPAN&gt;&lt;STRONG&gt;hub VNet&lt;/STRONG&gt;&lt;SPAN&gt; with a single ExpressRoute/VPN gateway:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;VNet-App (spoke) ---peering---&amp;gt; Hub VNet &amp;lt;---peering--- VNet-PE-ENDPOINT (spoke)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;|&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ExpressRoute/VPN&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;|&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;On-Premises Network&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(Proxy Server here)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Enable &lt;/SPAN&gt;&lt;STRONG&gt;"Allow Gateway Transit"&lt;/STRONG&gt;&lt;SPAN&gt; on the hub peering and &lt;/SPAN&gt;&lt;STRONG&gt;"Use Remote Gateway"&lt;/STRONG&gt;&lt;SPAN&gt; on each spoke peering so all spokes can use the hub's gateway.&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3&gt;&lt;STRONG&gt;Step 2: Configure the On-Premises Proxy Server&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;&lt;SPAN&gt;The proxy server (e.g., Squid, nginx, or an enterprise proxy like Zscaler/Blue Coat) must be configured to:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Allow HTTPS traffic to Databricks endpoints:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;Your workspace URL: adb-xxxxxxxxxxxx.xx.azuredatabricks.net (port 443)&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;Browser auth URL: region.pl-auth.azuredatabricks.net (port 443)&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;Additional ports if needed: 6666, 3306, 8443-8451&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Forward traffic toward the Azure private endpoint IP:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;The proxy must resolve the Databricks workspace URL to the &lt;/SPAN&gt;&lt;STRONG&gt;private IP&lt;/STRONG&gt;&lt;SPAN&gt; of the private endpoint (not the public IP)&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;This requires proper DNS configuration (see Step 3)&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Proxy configuration example (Squid):&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;# Allow Databricks workspace traffic&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;acl databricks_hosts dstdomain .azuredatabricks.net&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;http_access allow databricks_hosts&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;&lt;STRONG&gt;Step 3: DNS Configuration (Critical)&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;&lt;SPAN&gt;This is the &lt;/SPAN&gt;&lt;STRONG&gt;most important step&lt;/STRONG&gt;&lt;SPAN&gt;. The proxy server must resolve Databricks URLs to private IPs, not public IPs.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Option A: Conditional DNS Forwarding (Recommended)&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;On your on-premises DNS server, configure a &lt;/SPAN&gt;&lt;STRONG&gt;conditional forwarder&lt;/STRONG&gt;&lt;SPAN&gt;:&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;Zone: &lt;/SPAN&gt;&lt;STRONG&gt;privatelink.azuredatabricks.net&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;Forward to: An &lt;/SPAN&gt;&lt;STRONG&gt;Azure DNS Forwarder&lt;/STRONG&gt;&lt;SPAN&gt; (a VM or Azure Firewall DNS proxy in your hub VNet)&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Important:&lt;/STRONG&gt;&lt;SPAN&gt; Do NOT forward directly to 168.63.129.16 -- this Azure DNS IP only responds to queries from within Azure VNets. You need an intermediary forwarder.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Azure DNS Forwarder options:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;A small &lt;/SPAN&gt;&lt;STRONG&gt;Windows/Linux VM&lt;/STRONG&gt;&lt;SPAN&gt; running DNS forwarding (e.g., BIND, Windows DNS, dnsmasq)&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;STRONG&gt;Azure Firewall&lt;/STRONG&gt;&lt;SPAN&gt; with DNS proxy enabled&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;STRONG&gt;Azure DNS Private Resolver&lt;/STRONG&gt;&lt;SPAN&gt; (managed service, no VM needed)&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Option B: Manual DNS A Records&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;If conditional forwarding isn't possible, create static A records on your on-premises DNS:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;adb-xxxxxxxxxxxx.xx.azuredatabricks.net&amp;nbsp; --&amp;gt;&amp;nbsp; 10.x.x.x&amp;nbsp; (private endpoint IP)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;region.pl-auth.azuredatabricks.net &amp;nbsp; &amp;nbsp; &amp;nbsp; --&amp;gt;&amp;nbsp; 10.x.x.x&amp;nbsp; (same private endpoint IP)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Find the private IP from: Azure Portal &amp;gt; Private Endpoint &amp;gt; Network Interface &amp;gt; IP Configuration&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Note:&lt;/STRONG&gt;&lt;SPAN&gt; Do NOT override accounts.azuredatabricks.net -- the Account Console must resolve publicly.&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3&gt;&lt;STRONG&gt;Step 4: VM Proxy Configuration&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;&lt;SPAN&gt;Configure the VM in VNet-App to route Databricks traffic through the on-premises proxy:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Environment variables (Linux):&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;export HTTPS_PROXY=&lt;A href="http://proxy.onprem.company.com:8080" target="_blank"&gt;http://proxy.onprem.company.com:8080&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;export HTTP_PROXY=&lt;A href="http://proxy.onprem.company.com:8080" target="_blank"&gt;http://proxy.onprem.company.com:8080&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;export NO_PROXY=169.254.169.254,168.63.129.16&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;For Databricks CLI or API calls:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;export HTTPS_PROXY=&lt;A href="http://proxy.onprem.company.com:8080" target="_blank"&gt;http://proxy.onprem.company.com:8080&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;databricks clusters list --profile my-workspace&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;For application code (Python example):&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;import os&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;os.environ['HTTPS_PROXY'] = '&lt;A href="http://proxy.onprem.company.com:8080" target="_blank"&gt;http://proxy.onprem.company.com:8080&lt;/A&gt;'&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;&lt;STRONG&gt;Step 5: NSG and Firewall Rules&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;&lt;SPAN&gt;Ensure Network Security Groups allow the required traffic:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;VNet-App NSG (outbound):&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;Allow TCP 443 outbound to on-premises proxy IP&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;On-premises firewall:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;Allow the proxy to reach VNet-PE-ENDPOINT subnet on TCP 443&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;VNet-PE-ENDPOINT NSG (inbound to private endpoint subnet):&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;Allow TCP 443, 6666, 3306, 8443-8451 from on-premises network CIDR&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;&lt;STRONG&gt;Step 6: Verify End-to-End Connectivity&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;&lt;STRONG&gt;From the on-premises proxy server:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;nslookup adb-xxxxxxxxxxxx.xx.azuredatabricks.net&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;# Should resolve to the private IP (e.g., 10.x.x.x)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;From the VM (through proxy):&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;curl -x &lt;A href="http://proxy.onprem.company.com:8080" target="_blank"&gt;http://proxy.onprem.company.com:8080&lt;/A&gt; \&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;A href="https://adb-xxxxxxxxxxxx.xx.azuredatabricks.net/api/2.0/clusters/list" target="_blank"&gt;https://adb-xxxxxxxxxxxx.xx.azuredatabricks.net/api/2.0/clusters/list&lt;/A&gt; \&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;-H "Authorization: Bearer &amp;lt;token&amp;gt;"&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;&lt;STRONG&gt;Summary Checklist&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;STRONG&gt;Component&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;STRONG&gt;Configuration&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SPAN&gt;VNet-App to On-Prem&lt;/SPAN&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SPAN&gt;ExpressRoute or VPN (via hub VNet peering)&lt;/SPAN&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SPAN&gt;On-Prem to VNet-PE-ENDPOINT&lt;/SPAN&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SPAN&gt;ExpressRoute or VPN (via hub VNet peering)&lt;/SPAN&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SPAN&gt;DNS Resolution&lt;/SPAN&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SPAN&gt;Conditional forwarder for privatelink.azuredatabricks.net to Azure DNS Forwarder&lt;/SPAN&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SPAN&gt;Proxy Server&lt;/SPAN&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SPAN&gt;Allow *.azuredatabricks.net on port 443&lt;/SPAN&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SPAN&gt;VM Proxy Config&lt;/SPAN&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SPAN&gt;Set HTTPS_PROXY environment variable&lt;/SPAN&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SPAN&gt;NSGs&lt;/SPAN&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SPAN&gt;Allow 443 (and 6666, 3306, 8443-8451) between all hops&lt;/SPAN&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SPAN&gt;Validation&lt;/SPAN&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SPAN&gt;nslookup from proxy + curl from VM through proxy&lt;/SPAN&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;H3&gt;&lt;STRONG&gt;Key Gotcha&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;&lt;SPAN&gt;The most common failure is &lt;/SPAN&gt;&lt;STRONG&gt;DNS resolution&lt;/STRONG&gt;&lt;SPAN&gt;. If the proxy resolves the Databricks URL to a &lt;/SPAN&gt;&lt;STRONG&gt;public IP&lt;/STRONG&gt;&lt;SPAN&gt; instead of the private endpoint IP, the connection will fail because public access is disabled. Always verify with nslookup from the proxy server itself.&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3&gt;&lt;STRONG&gt;References&lt;/STRONG&gt;&lt;/H3&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/databricks/security/network/front-end/front-end-private-connect" target="_blank"&gt;&lt;SPAN&gt;Configure Inbound Private Link -- Azure Databricks&lt;/SPAN&gt;&lt;/A&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/databricks/security/network/concepts/private-link" target="_blank"&gt;&lt;SPAN&gt;Azure Private Link Concepts -- Databricks&lt;/SPAN&gt;&lt;/A&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;A href="https://learn.microsoft.com/en-us/answers/questions/5586707/how-to-resolve-azure-databricks-private-endpoint-u" target="_blank"&gt;&lt;SPAN&gt;Resolve Databricks Private Endpoint URLs from On-Prem -- Microsoft Q&amp;amp;A&lt;/SPAN&gt;&lt;/A&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/architecture/networking/architecture/hub-spoke" target="_blank"&gt;&lt;SPAN&gt;Hub-Spoke Network Topology in Azure&lt;/SPAN&gt;&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;</description>
      <pubDate>Fri, 10 Apr 2026 04:56:42 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-engineering/accessing-azure-databricks-workspace-via-private-endpoint-and-on/m-p/154028#M54057</guid>
      <dc:creator>anuj_lathi</dc:creator>
      <dc:date>2026-04-10T04:56:42Z</dc:date>
    </item>
  </channel>
</rss>

