安全的叢集連線能力 (沒有公用 IP/NPIP)

啟用安全叢集連線時,客戶虛擬網路沒有開啟的埠,傳統計算平面中的計算資源沒有公用IP位址。 保護叢集連線也稱為「無公用 IP」(NPIP)。

  • 在網路層級,每個叢集都會在叢集建立期間起始與控制平面安全叢集連線轉接的連線。 叢集會使用埠 443 (HTTPS) 建立此連線,並使用與用於 Web 應用程式和 REST API 不同的 IP 位址。
  • 當控制平面以邏輯方式啟動新的 Databricks 運行時間作業或執行其他叢集管理工作時,這些要求會透過這個通道傳送至叢集。
  • 計算平面 (VNet) 沒有開啟的埠,而傳統計算平面資源則沒有公用 IP 位址。

優點:

  • 輕鬆進行網路管理,不需要在安全組上設定埠,或設定網路對等互連。
  • 透過增強的安全性和簡單的網路管理,資訊安全小組可以加速 Databricks 作為 PaaS 提供者的核准。

注意

傳統計算平面 VNet 與 Azure Databricks 控制平面之間的所有 Azure Databricks 網路流量都會通過 Microsoft 網路骨幹,而不是公用因特網。 即使已停用安全叢集連線,也是如此。

雖然無伺服器計算平面不會針對傳統計算平面使用安全的叢集連線轉接,但無伺服器 SQL 倉儲沒有公用 IP 位址。

保護叢集連線能力

使用安全的叢集連線能力

若要搭配新的 Azure Databricks 工作區使用安全的叢集連線,請使用下列任何選項。

  • Azure 入口網站:當您布建工作區時,請移至 [網络] 索引卷標,並將 [使用安全叢集部署 Azure Databricks 工作區 連線] 選項設定為 [否公用 IP][是]。
  • ARM 樣本:針對 Microsoft.Databricks/workspaces 建立新工作區的資源,將 enableNoPublicIp 布爾參數設定為 true

重要

不論是哪一種情況,您都必須在 Azure 訂用帳戶中註冊 Azure 資源提供者 Microsoft.ManagedIdentity ,以用來啟動具有安全叢集連線的工作區。 這是每個訂用帳戶的一次性作業。 如需指示,請參閱 Azure 資源提供者和類型

您可以將安全的叢集連線新增至已使用 VNet 插入的現有工作區。 請參閱 將安全的叢集連線新增至現有的工作區

如果您使用 ARM 範本,請根據您想要 Azure Databricks 為工作區建立預設(受控)虛擬網路,或想要使用自己的虛擬網路,也稱為 VNet 插入,將 參數新增至下列其中一個範本。 VNet 插入是選擇性功能,可讓您提供自己的 VNet 來裝載新的 Azure Databricks 叢集。

來自工作區子網的輸出

當您啟用安全的叢集連線時,您的兩個工作區子網都是私人子網,因為叢集節點沒有公用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 閘道。 在工作區的子網上設定閘道,以確保 Azure 骨幹和公用網路的所有輸出流量都會透過它傳輸。 叢集具有穩定的輸出公用IP,而且您可以修改自訂輸出需求的組態。 您可以使用 Azure 樣本或從 Azure 入口網站 實作此解決方案
  • 對於具有複雜路由需求的部署,或使用 VNet 插入搭配輸出防火牆的部署,例如 Azure 防火牆 或其他自定義網路架構,您可以使用稱為使用者定義路由 (UDR) 的自定義路由。 UDR 可確保您的工作區已正確路由傳送網路流量,直接路由至所需的端點或透過輸出防火牆。 如果您使用這類解決方案,您必須為 Azure Databricks 安全叢集連線轉寄新增直接路由或允許的防火牆規則,以及 Azure Databricks 使用者定義路由設定中列出的其他必要端點。

警告

請勿在 已啟用安全叢集連線的工作區中使用輸出負載平衡器 。 在生產系統中,輸出負載平衡器可能會導致耗盡埠的風險。

將安全的叢集連線新增至現有的工作區

您可以在現有的工作區上啟用安全的叢集連線。 升級需要工作區使用 VNet 插入

您可以使用入口網站 UI、ARM 樣本或 azurerm Terraform 提供者 3.41.0 版+ 。 您可以使用 Azure 入口網站 來套用自定義範本,並在 UI 中修改 參數。 您也可以在 Azure 入口網站 UI 中升級 Azure Databricks 工作區實例本身。

重要

進行這項變更之前,如果您使用防火牆或進行其他網路組態變更來控制傳統計算平面的輸入或輸出,您可能需要更新防火牆或網路安全組規則,讓它們完全生效。 例如,使用安全的叢集連線,控制平面會有額外的連出連線,而且不再使用來自控制平面的連入連線。

如果升級發生問題,而且您需要暫時回復變更,請參閱暫時將升級回復至安全的叢集連線

步驟 1:停止所有計算資源

嘗試此升級之前,您必須停止所有計算資源,例如叢集、集區或傳統 SQL 倉儲。 無法執行工作區計算資源,或升級嘗試失敗。 Databricks 建議規劃升級的下限時間。

步驟 2:更新工作區

您必須更新 [無公用IP ] 參數 (在範本上為 enableNoPublicIp)。 將它設定為 True 值 (true)。

使用下列其中一種方法:

使用 Azure 入口網站 UI (不含樣本)

  1. 移至 Azure 入口網站 中的 Azure Databricks Service 實例。

  2. 在左側導覽的 [設定] 下,按兩下 [網络]。

  3. 選取 [沒有公用IP]。

    注意

    同時,您可以選擇也啟用 Azure Private Link,方法是將 [允許公用網路存取必要 NSG 規則] 的值設定為適當的使用案例值。 不過,啟用 Private Link 需要額外的組態和驗證,因此您可能會想要在此更新之後以個別步驟執行此動作,以確保叢集連線安全。 如需重要詳細數據和需求,請參閱 啟用 Azure Private Link

  4. 按一下 [檔案] 。

網路更新可能需要15分鐘才能完成。

使用 Azure 入口網站 套用更新的 ARM 範本

注意

如果您的受控資源群組具有自定義名稱,您必須據以修改範本。 如需詳細資訊,請連絡您的 Azure Databricks 帳戶小組。

  1. 複製下列升級 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')]"
                        }
                    }
                }
            }
        ]
    }
    
    1. 移至 [自定義部署] 頁面 Azure 入口網站

    2. 按一下 [Build your own template in the editor] \(在編輯器中建置您自己的範本\)

    3. 貼上您複製之範本的 JSON。

    4. 按一下 [檔案] 。

    5. 填寫參數。

    6. 若要更新現有的工作區,請使用您用來建立工作區以外的 enableNoPublicIp 相同參數,而您必須設定為 true。 設定現有 VNet 的訂用帳戶、區域、工作區名稱、子網名稱、資源識別碼。

      重要

      資源組名、工作區名稱和子網名稱與您現有的工作區相同,因此此命令會更新現有的工作區,而不是建立新的工作區。

    7. 按一下 [檢閱 + 建立]。

    8. 如果沒有驗證問題,請按兩下 [ 建立]。

    網路更新可能需要15分鐘才能完成。

使用 Terraform 套用更新

針對使用 Terraform 建立的工作區,您可以更新工作區,而不需重新建立工作區。

重要

您必須使用 terraform-provider-azurerm 3.41.0 版或更新版本,因此請視需要升級您的 Terraform 提供者版本。 如果您變更這些設定,舊版會嘗試重新建立工作區。

變更下列工作區設定:

  • no_public_ip 區塊 custom_parameters 中的 可以從 false 變更為 true

網路更新可能需要15分鐘才能完成。

步驟 3:驗證更新

工作區處於作用中狀態之後,更新作業就會完成。 確認已套用更新:

  1. 在網頁瀏覽器中開啟 Azure Databricks。

  2. 啟動其中一個工作區的叢集,並等候叢集完全啟動。

  3. 移至 Azure 入口網站 中的工作區實例。

  4. 按下欄位標籤 [受控資源群組] 旁的藍色標識碼。

  5. 在該群組中,尋找叢集的 VM,然後按兩下其中一個。

  6. 在 VM 設定的 [屬性] 內,尋找 [網络] 區域中的欄位。

  7. 確認 [公用 IP 位址] 欄位是空的。

    如果已填入,VM 就會有公用IP位址,這表示更新失敗。

失敗復原

如果工作區更新失敗,工作區可能會標示為 失敗 狀態,這表示工作區無法執行計算作業。 若要將失敗的工作區還原回 作用 中狀態,請檢閱更新作業狀態消息中的指示。 修正任何問題之後,請在失敗的工作區上重做更新。 重複這些步驟,直到更新成功完成為止。

升級至安全叢集連線的暫時復原

如果在部署期間發生問題,您可以將程式反轉為暫時復原,但不支援在工作區上停用 SCC,而不是暫時復原,之後再繼續升級。 如果這是暫時必要的,您可以遵循上述的指示進行升級,但設定 enableNoPublicIpfalse ,而不是 true。