啟用安全的叢集連線能力
本文說明如何使用 Azure Databricks 工作區的安全叢集連線。 安全叢集聯機也稱為無公用IP(NPIP)。 雖然無伺服器計算平面不會使用安全的叢集連線,但無伺服器計算資源沒有公用IP位址。
安全叢集聯機概觀
啟用安全叢集連線時,客戶虛擬網路沒有開啟的埠,傳統計算平面中的計算資源沒有公用IP位址。
- 每個叢集在建立階段會建立與控制平面安全叢集連接中繼的連線。 叢集會使用埠 443 (HTTPS) 建立此連線,並使用與用於 Web 應用程式和 REST API 不同的 IP 位址。
- 當控制平面執行叢集管理工作時,這些要求會透過這個通道傳送至叢集。
注意
傳統計算平面 VNet 與 Azure Databricks 控制平面之間的所有 Azure Databricks 網路流量都會經過 Microsoft網路骨幹,而不是公用因特網。 即使已停用安全叢集連線,也是如此。
您可以在新的工作區上啟用安全的叢集連線,或將它新增至已使用 VNet 插入的現有工作區。
在新工作區上啟用安全的叢集連線
當您使用 Azure 入口網站或 Azure Resource Manager (ARM) 範本建立工作區時,您可以啟用安全的叢集連線。
Azure 入口網站:當您布建工作區時,請在 [
網路 ] 索引標籤上,將[使用安全叢集連線功能部署 Azure Databricks 工作區 (無公共 IP)] 設定為 [是]。 如需使用 Azure 入口網站建立工作區的詳細指示,請參閱 使用入口網站建立 Azure Databricks 工作區。
ARM 樣本:在建立新工作區的
Microsoft.Databricks/workspaces
資源中,將enableNoPublicIp
布爾參數設定為true
。如需使用 ARM 範本建立工作區的詳細指示,請參閱 使用 ARM 範本部署工作區。 如需使用 VNet 注入的 ARM 範本,請參閱 使用 Azure Resource Manager 範本進行進階設定。
將安全的叢集連線新增至現有的工作區
您可以使用 Azure 入口網站、ARM 範本或 azurerm
Terraform 提供者 3.41.0 版+,在現有工作區上啟用安全的叢集連線。 升級需要工作區使用 VNet 插入。
重要
如果您使用防火牆或其他網路組態變更來控制傳統計算平面的輸入或輸出,您可能需要在進行這些變更的同時更新防火牆或網路安全組規則,才能讓變更完全生效。 例如,使用安全的叢集連線,會有額外的到控制平面的連出連線,而且不再使用來自控制平面的連入連線。
步驟 1:停止所有計算資源
停止所有傳統計算資源,例如叢集、集區或傳統 SQL 倉儲。 Databricks 建議規劃升級的下限時間。
步驟 2:更新工作區
您可以使用 Azure 入口網站、ARM 範本或 Terraform 來更新工作區。
使用 Azure 入口網站
- 在 Azure 入口網站中移至您的 Azure Databricks 工作區。
- 在左側導覽的 [設定] 底下,按兩下 [網络]。
- 在 [
網络存取 ] 索引標籤中,將 [[使用安全叢集連線 部署 Azure Databricks 工作區 為 [啟用]。 - 按一下 [檔案] 。
網路更新可能需要15分鐘才能完成。
使用 Azure 入口網站 套用更新的 ARM 範本
使用 ARM 範本將 enableNoPublicIp
參數設定為 True (true
)。
注意
如果您的受控資源群組具有自定義名稱,您必須據以修改範本。 如需詳細資訊,請連絡 Azure Databricks 帳戶團隊。
複製下列升級 ARM 樣本 JSON:
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "location": { "defaultValue": "[resourceGroup().location]", "type": "String", "metadata": { "description": "Location for all resources." } }, "workspaceName": { "type": "String", "metadata": { "description": "The name of the Azure Databricks workspace to create." } }, "apiVersion": { "defaultValue": "2023-02-01", "allowedValues": [ "2018-04-01", "2020-02-15", "2022-04-01-preview", "2023-02-01" ], "type": "String", "metadata": { "description": "2018-03-15 for 'full region isolation control plane' and 2020-02-15 for 'FedRAMP certified' regions" } }, "enableNoPublicIp": { "defaultValue": true, "type": "Bool" }, "pricingTier": { "defaultValue": "premium", "allowedValues": [ "premium", "standard", "trial" ], "type": "String", "metadata": { "description": "The pricing tier of workspace." } }, "publicNetworkAccess": { "type": "string", "defaultValue": "Enabled", "allowedValues": [ "Enabled", "Disabled" ], "metadata": { "description": "Indicates whether public network access is allowed to the workspace - possible values are Enabled or Disabled." } }, "requiredNsgRules": { "type": "string", "defaultValue": "AllRules", "allowedValues": [ "AllRules", "NoAzureDatabricksRules" ], "metadata": { "description": "Indicates whether to retain or remove the AzureDatabricks outbound NSG rule - possible values are AllRules or NoAzureDatabricksRules." } } }, "variables": { "managedResourceGroupName": "[concat('databricks-rg-', parameters('workspaceName'), '-', uniqueString(parameters('workspaceName'), resourceGroup().id))]", "managedResourceGroupId": "[subscriptionResourceId('Microsoft.Resources/resourceGroups', variables('managedResourceGroupName'))]" }, "resources": [ { "type": "Microsoft.Databricks/workspaces", "apiVersion": "[parameters('apiVersion')]", "name": "[parameters('workspaceName')]", "location": "[parameters('location')]", "sku": { "name": "[parameters('pricingTier')]" }, "properties": { "ManagedResourceGroupId": "[variables('managedResourceGroupId')]", "publicNetworkAccess": "[parameters('publicNetworkAccess')]", "requiredNsgRules": "[parameters('requiredNsgRules')]", "parameters": { "enableNoPublicIp": { "value": "[parameters('enableNoPublicIp')]" } } } } ] }
移至 [自定義部署] 頁面 Azure 入口網站。
按一下 [Build your own template in the editor] \(在編輯器中建置您自己的範本\)。
貼上您複製之範本的 JSON。
按一下 [檔案] 。
填入參數。
若要更新現有的工作區,請使用您用來建立工作區的相同參數,不同的是將
enableNoPublicIp
設定為true
。 設定現有 VNet 的訂用帳戶、區域、工作區名稱、子網名稱、資源識別碼。重要
資源組名、工作區名稱和子網名稱與您現有的工作區相同,因此此命令會更新現有的工作區,而不是建立新的工作區。
按一下 [檢閱 + 建立]。
如果沒有驗證問題,請按一下 [建立]。
網路更新可能需要15分鐘才能完成。
使用 Terraform 套用更新
針對使用 Terraform 建立的工作區,您可以更新工作區,而不需重新建立工作區。
重要
您必須使用 terraform-provider-azurerm
3.41.0 版或更新版本,因此請視需要升級您的 Terraform 提供者版本。 如果您變更這些設定,舊版會嘗試重新建立工作區。
變更下列工作區設定:
-
no_public_ip
區塊custom_parameters
中的 可以從false
變更為true
。
網路更新可能需要15分鐘才能完成。
步驟 3:驗證更新
工作區處於作用中狀態之後,更新作業就會完成。 確認已套用更新:
在網頁瀏覽器中開啟 Azure Databricks。
啟動其中一個工作區的叢集,並等候叢集完全啟動。
移至 Azure 入口網站 中的工作區實例。
按下欄位標籤 [受控資源群組] 旁的藍色標識碼。
在該群組中,尋找叢集的 VM,然後按兩下其中一個。
在 VM 設定的 [屬性] 內,尋找 [網络] 區域中的欄位。
確認 [公用 IP 位址] 欄位是空的。
如果已填入,VM 就會有公用IP位址,這表示更新失敗。
升級至安全叢集連線的暫時復原
如果在部署期間發生問題,您可以將程式反轉為暫時回復,但除了暫時復原之外,不支援在工作區上停用 SCC,之後再繼續進行升級。 如果這是暫時必要的,您可以遵循上述的指示進行升級,但將 enableNoPublicIp
設定為 false
,而不是 true。
來自工作區子網的輸出
當您啟用安全的叢集連線時,您的兩個工作區子網都是私人子網,因為叢集節點沒有公用IP位址。
網路流出的實作細節取決於您是否使用預設的(受管理的)VNet,或是否藉由使用 VNet 插入 來提供您自己的 VNet 以部署工作區。
重要
當您使用安全叢集連線時,可能會產生額外的成本,因為輸出流量增加。 對於最安全的部署,Microsoft和 Databricks 強烈建議您啟用安全的叢集連線。
具有預設 (受控) VNet 的輸出
如果您使用安全叢集連線與 Azure Databricks 所建立的預設 VNet,Azure Databricks 會自動建立 NAT 閘道 ,以便將工作區子網的輸出流量傳送至 Azure 骨幹和公用網路。 NAT 閘道是建立在由 Azure Databricks 管理的受控資源群組中。 您無法修改此資源群組或在其中布建的任何資源。 此 NAT 閘道會產生額外的成本。
使用 VNet 插入的輸出
如果您在使用 VNet 插入的工作區上啟用安全的叢集連線,Databricks 建議您的工作區具有穩定的輸出公用 IP。 穩定的輸出公用IP位址很有用,因為您可以將它們新增至外部允許清單。 例如,若要使用穩定的連出IP位址從 Azure Databricks 連線到 Salesforce。
警告
Microsoft宣佈,在 2025 年 9 月 30 日,Azure 中虛擬機的默認輸出存取連線將會淘汰。 請參閱 此公告。 這表示使用默認輸出存取的現有 Azure Databricks 工作區,而不是穩定的輸出公用 IP 可能無法在該日期之後繼續運作。 Databricks 建議您在該日期之前為工作區新增明確的輸出方法。
若要為您工作區新增明確的輸出方法,請使用 Azure NAT 閘道 或使用者定義的路由(UDR)。
- Azure NAT 閘道:如果您的部署只需要一些自定義,請使用 Azure NAT 閘道。 在工作區的子網上設定閘道,以確保 Azure 骨幹和公用網路的所有輸出流量都會透過它傳輸。 叢集具有穩定的輸出公用IP,而且您可以修改自訂輸出需求的組態。 您可以使用 Azure 樣本 或從 Azure 入口網站進行此設定。
- UDR:如果您的部署需要複雜的路由需求,或使用 VNet 插入搭配輸出防火牆,請使用 UDR。 UDR 可確保您的工作區已正確路由傳送網路流量,直接路由至所需的端點或透過輸出防火牆。 若要使用 UDR,您必須為 Azure Databricks 的安全叢集連線中繼新增直接路由或允許的防火牆規則,以及在 Azure Databricks 使用者定義路由設定中列出的其他必要端點。
警告
請勿在 已啟用安全叢集連線的工作區中使用輸出負載平衡器 。 在生產系統中,輸出負載平衡器可能會導致耗盡埠的風險。