本文介绍如何为 Azure Databricks 工作区使用安全群集连接。 安全群集连接也称为无公共 IP (NPIP)。 无服务器计算资源不使用安全群集连接,也没有公共 IP 地址。
安全群集连接概述
启用安全群集连接后,客户虚拟网络没有开放的端口,并且经典计算平面中的计算资源没有公共 IP 地址。
- 在群集创建期间,每个群集都会启动与控制平面安全群集连接中继的连接。 群集使用端口 443 (HTTPS) 和一个与 Web 应用程序和 REST API 所用 IP 地址不同的 IP 地址来建立此连接。
- 当控制平面执行群集管理任务时,这些请求会通过此隧道发送到群集。
注意
经典计算平面 VNet 与 Azure Databricks 控制平面之间的所有 Azure Databricks 网络流量都会经过 Microsoft 网络主干线,而不是公共 Internet。 即使禁用了安全群集连接也是如此。
可以在新工作区上启用安全群集连接,也可以将其添加到已使用 VNet 注入的现有工作区。
在新工作区上启用安全群集连接
使用 Azure 门户或 Azure 资源管理器 (ARM) 模板创建工作区时,会自动启用安全群集连接。
Azure 门户:预配工作区时,在 “网络 ”选项卡上, “部署具有安全群集连接的 Azure Databricks 工作区”(无公共 IP) 默认为 “是”。
有关使用 Azure 门户创建工作区的详细说明,请参阅使用门户创建 Azure Databricks 工作区。
ARM 模板:在 2024-05-01 及之后的版本中,
enableNoPublicIp资源中的Microsoft.Databricks/workspaces参数默认设定为true。 如果模板中未显式包含该enableNoPublicIp参数,则其行为将如同设置为 true 一样。 可以通过在模板中将enableNoPublicIp设置为 false 来显式重写此默认值。有关使用 ARM 模板创建工作区的详细说明,请参阅通过 ARM 模板部署工作区。 有关使用 VNet 注入的 ARM 模板,请参阅 在 Azure 虚拟网络(VNet 注入)中部署 Azure Databricks。
将安全群集连接添加到现有工作区
可以使用 Azure 门户、ARM 模板或 azurerm Terraform 提供程序版本 3.41.0+ 在现有工作区上启用安全群集连接。 若要升级,工作区需要使用 VNet 注入。
重要
如果使用防火墙或其他网络配置来控制经典计算平面的入口或出口,则启用安全群集连接以使更改生效时,可能需要更新防火墙或网络安全组规则。 例如,使用安全群集连接时,会有一个额外的到控制平面的输出连接,并且不再使用来自控制平面的输入连接。
步骤 1:停止所有计算资源
停止所有经典计算资源,例如群集、池或经典 SQL 仓库。 Databricks 建议规划升级的时间以适应停机期间。
步骤 2:更新工作区
可以使用 Azure 门户、ARM 模板或 Terraform 更新工作区。
使用 Azure 门户
- 在 Azure 门户中转到你的 Azure Databricks 工作区。
- 在左侧导航栏中的“设置”下,单击“网络”。
- 在网络访问选项卡中,将使用安全群集连接(无公共 IP)部署 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 门户自定义部署页。
单击“在编辑器中生成自己的模板”。
粘贴复制的模板的 JSON。
单击“ 保存”。
填写这些参数。
若要更新现有工作区,请使用用于创建工作区的相同参数,但应将
enableNoPublicIp设置为true。 设置现有 VNet 的订阅、区域、工作区名称、子网名称和资源 ID。重要
资源组名称、工作区名称和子网名称与现有工作区相同,这样,此命令才能更新现有工作区而不是创建新工作区。
单击“查看 + 创建”。
如果没有验证问题,请单击“创建”。
网络更新可能需要 15 分钟以上才能完成。
使用 Terraform 应用更新
对于使用 Terraform 创建的工作区,无需重新创建工作区即可更新工作区。
重要
必须使用 terraform-provider-azurerm 版本 3.41.0 或更高版本,因此请根据需要升级 Terraform 提供程序版本。 如果更改其中的任何设置,早期版本会尝试重新创建工作区。
更改以下工作区设置:
-
no_public_ip块中的custom_parameters可以从false更改为true。
网络更新可能需要 15 分钟以上才能完成。
步骤 3:验证更新
工作区处于活动状态后,更新作业即完成。 验证是否已应用更新:
在 Web 浏览器中打开 Azure Databricks。
启动工作区的某个群集,并等待群集完全启动。
在 Azure 门户中转到你的工作区实例。
单击字段标签“托管资源组”旁边的蓝色 ID。
在该组中找到群集的 VM,然后单击其中一个 VM。
在 VM 设置的“属性”中,查看“网络”区域中的字段。
确认“公共 IP 地址”字段为空。
如果已填充,则表示 VM 使用公共 IP 地址,这也意味着更新失败。
临时回滚升级到安全群集连接的操作
如果在部署过程中出现问题,可以通过将过程暂时逆转,设置enableNoPublicIp为false。 但是,仅支持在以后继续升级之前禁用安全群集连接,以便作为一种临时的回滚措施。 如果需要临时这样做,可以按照上面的说明进行升级,但需要将 enableNoPublicIp 设置为 false 而不是 true。
工作区子网的流出量
启用安全群集连接时,两个工作区子网都是专用子网,因为群集节点没有公共 IP 地址。
网络出口的实现细节因您是使用默认(托管)VNet还是使用VNet注入用于提供自己的VNet来部署工作区而有所不同。
重要
在使用安全群集连接时,由于出口流量的增加,可能会产生额外的成本。 对于最安全的部署,Microsoft和 Databricks 强烈建议启用安全群集连接。
默认(托管)VNet 的流出量
如果将安全群集连接与 Azure Databricks 创建的默认 VNet 结合使用,Azure Databricks 会自动为从工作区子网到 Azure 主干网和公用网络的出站流量创建一个 NAT 网关。 NAT 网关是在 Azure Databricks 管理的托管资源组中创建的。 不能修改此资源组,也不能修改其中预配的任何资源。 此 NAT 网关会产生额外费用。
使用 VNet 注入的出口
如果对使用 VNet 注入的工作区启用安全群集连接,Databricks 建议工作区有一个稳定的出口公共 IP。 稳定的出口公共 IP 地址非常有用,因为你可以将它们添加到外部允许列表。 例如,若要使用稳定的传出 IP 地址从 Azure Databricks 连接到 Salesforce。
警告
Microsoft宣布,2026 年 3 月 31 日之后,新的虚拟网络将默认为专用配置,无需出站 Internet 访问。 这需要显式出站连接方法才能访问公共终结点和Microsoft服务。 有关更多详细信息,请参阅 此公告 。 此更改不会影响现有工作区。 但是,在此日期之后部署的新 Azure Databricks 工作区需要安全出站方法(例如 NAT 网关),以确保适当的群集功能。
若要为部署提供 Internet 连接,请使用 Azure NAT 网关。 在两个工作区子网上配置网关,确保所有出站流量通过稳定的出口公共 IP 进行路由。 这为群集提供一致的出站 Internet 连接,并允许修改自定义出口需求的配置。 可以使用 Azure 模板 或 Azure 门户配置 NAT 网关。
警告
不要将流出量负载均衡器用于启用了安全群集连接的工作区。 在生产系统中,流出量负载均衡器可能会导致端口耗尽的风险。
防火墙配置最佳做法
始终允许列出 SCC 中继终结点提供的域名(FQDN),而不是单个 IP 地址。 由于基础结构更新,这些域后面的 IP 地址会定期更改。
允许列出特定 IP 地址的客户可能会在发生基础结构更改时遇到服务中断。 如果必须使用 IP 地址,则必须定期检索最新的 IP 地址并更新防火墙配置。