Databricks Apps 支援更細緻的網路控制,協助您保護及管理應用程式與因特網和內部資源通訊的方式。 您可以使用 IP 存取清單、前端專用連線和網路原則的組合來設定輸入 (傳入) 和輸出 (傳出) 流量規則。
網路架構
Azure Databricks 將應用程式部署在無伺服器運算平面,直接接收流量。 這類似於其他路由最佳化服務,例如模型服務和向量搜尋。
連接過程的運作方式如下:
- 使用者對 Azure Databricks 應用程式的初始請求會啟動 OAuth 認證,透過控制平面驗證會話並授權存取該應用程式。
- 驗證成功後,所有後續請求都會直接路由到無伺服器計算平面,而無需遍歷控制平面。
針對無伺服器計算平面設定的網路安全性原則會套用至 Databricks Apps 流量。 這包括 IP 存取清單和前端專用連線設定。
進入控制
請使用以下功能限制從公共網際網路存取您的 Azure Databricks 工作空間及應用程式。
- IP存取清單: 在工作區層級啟用 IP 存取清單,將工作區和應用程式存取限制為已知且受信任的 IP 範圍。 只允許來自已設定IP範圍的流量。 如需詳細資訊,請參閱 設定工作區的IP存取清單。
前端私人連線:將流量透過Azure Private Link連線路由,安全存取 VNet 上的應用程式。
您必須為網域設定
databricksapps.com條件式 DNS 轉送,以確保透過私人連線正確的名稱解析。 否則,應用程式網域的 DNS 查詢可能會解析為公用 IP 位址,而不是私人端點。 關於設定說明,請參見 Configure Inbound Private Link。Databricks Apps 不支援舊有區域 URL,因為它們不支援 OAuth,而 OAuth 是應用程式認證的必要條件。 詳情請參閱 Legacy 區域網址。
出口控制
若要控制來自您應用程式的輸出流量,請建立網路連線設定 (NCC),並將網路原則套用至裝載應用程式的工作區。
網路連線設定
使用network 連線設定來安全地將你的應用程式連接到Azure服務。 NCC 提供穩定的子網路識別碼,您可以將其新增至儲存體帳戶防火牆,以明確允許從應用程式和其他無伺服器計算存取。
若要進一步限制出口流量至私人目的地,請為 Azure 資源設定無伺服器私人端點,或將流量路由 VNet 中的 Azure 負載平衡器。
網路原則
使用 網路原則 對 Databricks 應用程式和其他無伺服器工作負載強制執行輸出限制。 當您需要符合控制輸出連線的組織或合規性需求時,這會很有用。
備註
網路原則僅適用於進階層。
如果您的應用程式需要套用網路政策:
- 必須限制對一組特定已核准外部網域的存取
- 需要防止意外的數據外流
- 必須遵守限制輸出因特網流量的安全性或合規性標準
應用程式部署所需的出口域
使用限制性出口網路政策時,必須將特定網域列入應用程式建置或執行時的允許名單,才能成功。 沒有這些網域,應用程式部署會失敗,因為建置過程無法下載相依性或與所需服務溝通。
所有 Databricks 應用程式部署皆需以下網域:
| Domain | Purpose |
|---|---|
*.databricksapps.com |
應用程式服務與使用者連接 |
pypi.org、files.pythonhosted.org |
Python套件在應用程式建置時下載(如果你的應用程式使用 requirements.txt,則必須) |
registry.npmjs.org |
Node.js 套件在應用程式建置期間下載(若應用程式使用 package.json 時必須下載) |
:::
此外,Azure 部署可能需要以下網域:
| Domain | Purpose |
|---|---|
*.blob.core.windows.net |
供應用程式連接至 Azure 儲存體使用的 Azure Blob Storage 端點 |
*.dfs.core.windows.net |
連接 ADLS 的應用程式所使用的 Azure Data Lake Storage 端點 |
:::
:::
你的應用程式可能會根據特定的依賴項或所呼叫的外部 API 需要額外的網域。 例如,如果你的應用程式呼叫第三方 REST API,將該 API 的網域加入允許清單。
這很重要
在有限制的 Private Link 環境中,缺少網域允許清單條目常會導致應用程式部署失敗。 如果你的應用程式無法部署,請檢查 system.access.outbound_network 系統表是否有拒絕連線嘗試,以找出應該新增哪些網域。 請參閱 檢查拒絕記錄。
設定網路原則的最佳做法
請遵循下列指導方針,以避免意外中斷,並確保您的應用程式可以存取所需的資源:
- 只允許必要的目的地。 為您的應用程式需要的公用或私人資源新增完整網域名稱(FQDN)。 請參閱 應用程式部署所需的出口域 ,了解部署所需的最小域集。
- 視需要包含套件存放庫。 如果你的應用程式安裝了公開的 Python 或 Node.js 套件,可能需要允許類似
pypi.org的域名用於 Python,或類似registry.npmjs.org的域名用於 Node。 您的應用程式可能需要其他或不同的網域,視您的特定相依性而定。 沒有這些存放庫,依賴requirements.txt或package.json的應用程式組建可能會失敗。 - 使用乾跑模式來驗證您的網路原則。 此模式會模擬原則強制執行,而不會封鎖流量。
- 檢閱使用
system.access.outbound_network數據表的拒絕連線嘗試。 這可協助您識別可能需要允許的網域。 請參閱 檢查拒絕記錄。
- 新增任何必要的外部網域,例如受信任的 API 或未在 Unity 目錄註冊的 Azure 儲存帳號。
在Private Link環境中部署應用程式
如果您的工作空間使用前端私有連線,您必須完成額外的設定步驟來部署並使用 Databricks 應用程式。 若沒有此設定,應用程式部署可能會失敗,或使用者無法存取該應用程式。
DNS 設定
你必須為該網域設定條件式 DNS 轉發 databricksapps.com ,讓應用程式的 URL 解析成私有 IP 位址,而不是公共 IP 位址。 沒有此配置,私有網路後方的使用者無法連線已部署的應用程式。
在您的 Azure DNS 伺服器中新增以下網域的條件轉發規則:
*.databricksapps.com*.azuredatabricks.net*.privatelink.azuredatabricks.net
確認你的 VNet 是否連結到 Azure Private DNS Zone。 如需詳細的 DNS 設定說明,請參閱 自訂 DNS 設定。
逃生要求
在 Private Link 環境中,出口受限,應用程式在建置時間與執行期間都需要對特定網域進行外站連線。 完整允許清單請參閱應用程式 部署所需的出口網域 。
要在 Private Link 環境中設定應用程式的出口:
- 建立或更新網路 連線設定(NCC), 並將其附加到主機工作區。
- 建立或更新 網路政策 以允許列出 所需的網域。
- 首先使用模擬運行模式來驗證您的設定,以確保不會阻擋流量。
- 在應用程式部署期間,檢視
system.access.outbound_network系統表中是否有被拒絕連線的嘗試。
疑難排解 Private Link 部署失敗
如果您的應用程式無法在 Private Link 環境中部署:
檢查出口拒絕紀錄。 查詢
system.access.outbound_network系統表中的近期拒絕事件。 請參閱 檢查拒絕記錄。SELECT * FROM system.access.outbound_network WHERE event_time >= CURRENT_TIMESTAMP() - INTERVAL 2 HOUR ORDER BY event_time DESC;驗證 DNS 解析。 確認你的應用程式的 URL 解析為私有 IP 位址,而非公共 IP。 在你的私人網路內使用
nslookup來檢查:nslookup <your-app-name>.databricksapps.com檢視網路政策設定。 確認 所需網域 是否在允許清單中。 套件倉庫
pypi.org缺少的網域(,registry.npmjs.org)是建置失敗最常見的原因。重新啟動應用程式。 更新網路政策後,重新部署或重新啟動應用程式,使更新的政策生效。 請參見 「重新啟動或重新部署無伺服器工作負載」。
加密和流量路由
Databricks Apps 會使用專用路由路徑和多個加密層來保護網路通訊並保護資料。
網路流量路由
Azure Databricks 控制平面、計算平面、其他 Azure Databricks 資源與雲端服務之間的流量會經過雲端供應商的全球網路,不會穿越公共網際網路。
使用者與 databricksapps.com 之間的流量可能會通過公用網際網路,這取決於使用者的網路位置。 若要避免公用網際網路路由,請設定前端私人連線。
傳輸中的加密
與應用程式之間的所有網路通訊都經過加密:
-
用戶流量: 用戶之間以及
databricksapps.com的通訊使用傳輸層安全性(TLS)1.3 加密。 - 控制平面流量: Azure Databricks控制平面與計算平面之間的通訊使用互助TLS(mTLS)進行管理操作,包括應用程式建立、更新與刪除。
靜態加密
Databricks Apps 會使用下列方法加密儲存的資料:
- 應用程式碼: Azure Databricks將應用程式程式碼儲存在工作空間檔案中,並使用與筆記本及其他工作區檔案相同的加密方式。
- 運算儲存: 應用程式會使用使用 AES-256 加密的暫時主機作業系統磁碟和雲端供應商的預設加密實作。