为无服务器计算访问配置防火墙

注意

如果在 2023 年 10 月 31 日之前使用 Azure Databricks 文档中的子网 ID 配置存储防火墙,Databricks 建议按照本文中的步骤或使用专用终结点更新工作区。 如果选择不更新现有工作区,则它们将继续工作,无需更改。

本文介绍如何使用 Azure Databricks 帐户控制台 UI 为无服务器计算配置 Azure 存储防火墙。 也可以使用网络连接配置 API

若要为无服务器计算访问配置专用终结点,请参阅配置无服务器计算的专用连接

注意

目前无服务器功能没有网络费用。 在后续版本中,可能会收取此费用。 如果网络定价有更改,Azure Databricks 将提前通知。

为无服务器计算启用防火墙概述

无服务器网络连接由网络连接配置 (NCC) 负责管理。 帐户管理员在帐户控制台中创建 NCC,支持将一个 NCC 附加到一个或多个工作区

NCC 包含一个用作默认规则的 Azure 资源类型的网络标识列表。 当 NCC 附加到工作区时,该工作区中的无服务器计算使用其中一个网络来连接 Azure 资源。 你可以在你的 Azure 资源防火墙上将这些网络加入允许列表。

仅有你管理的数据源的无服务器 SQL 仓库才支持 NCC 防火墙启用。 无服务器计算平面中的其他计算资源不支持它。

可以选择性地配置仅从已授权的网络(包括无服务器 SQL 仓库)对工作区存储帐户进行网络访问。 请参阅为工作区存储帐户启用防火墙支持。 将 NCC 附加到工作区时,会自动将网络规则添加到用作工作区存储帐户的 Azure 存储帐户中。

有关 NCC 的详细信息,请参阅什么是网络连接配置 (NCC)?

跨区域存储访问的成本影响

对于来自 Azure Databricks 无服务器 SQL 仓库的跨区域流量(例如,工作区位于美国东部区域,ADLS 存储位于西欧),Azure Databricks 通过 Azure NAT 网关服务路由流量。

重要

目前没有使用此功能的费用。 在以后的版本中,可能会向你收取使用费。 为避免这些费用,Databricks 建议在存储所在的同一区域中创建工作区。

要求

  • 你的工作区必须采用高级计划

  • 你必须是 Azure Databricks 帐户管理员。

  • 每个 NCC 最多可附加至 50 个工作区。

  • 每个 Azure Databricks 帐户每个区域最多可以有 10 个 NCC。

    • 必须具有对 Azure 存储帐户网络规则的 WRITE 访问权限。

步骤 1:创建网络连接配置并复制子网 ID

Databricks 建议在同一业务部门的工作区以及共享相同区域连接属性的工作区之间共享 NCC。 例如,如果某些工作区使用存储防火墙,而其他工作区使用专用链接的替代方法,请对这些用例使用单独的 NCC。

  1. 作为帐户管理员,请转到帐户控制台。
  2. 在边栏中,单击云资源
  3. 单击“网络连接配置”
  4. 单击“添加网络连接配置”
  5. 键入 NCC 的名称。
  6. 选择区域。 这必须与工作区区域匹配。
  7. 单击“添加” 。
  8. 在 NCC 列表中,单击新的 NCC。
  9. 网络标识下的默认规则中,单击查看全部
  10. 在对话中,单击复制子网按钮并保存子网列表。
  11. 单击“关闭” 。

步骤 3:将 NCC 附加到工作区

你可将 NCC 附加到 NCC 所在的同一区域中最多 50 个工作区。

如要使用 API 将 NCC 附加到工作区,请参阅帐户工作区 API

  1. 在帐户控制台边栏中,单击工作区
  2. 单击工作区名称。
  3. 单击“更新工作区”
  4. 网络连接配置字段中,选择你的 NCC。 如果该 NCC 不可见,请确认已为工作区和 NCC 选择了相同的区域。
  5. 单击“更新” 。
  6. 等待 10 分钟,让更改生效。
  7. 重启该工作区中任何正在运行的无服务器 SQL 仓库。

如果使用此功能连接到工作区存储帐户,则配置已经完成。 网络规则会自动添加到工作区存储帐户。 对于其他存储帐户,请继续执行下一步。

步骤 3:锁定存储帐户

如果尚未将 Azure 存储帐户的访问权限限制为仅允许列出的网络,请立即执行此操作。 无需为工作区存储帐户执行此步骤。

创建存储防火墙还会影响从经典计算平面到资源的连接。 还必须添加网络规则,以便从经典计算资源连接到存储帐户。

  1. 转到 Azure 门户。
  2. 导航到数据源的存储帐户。
  3. 在左侧导航栏中,单击“网络”。
  4. 在“公用网络访问”字段中,检查该值。 默认情况下,该值从所有网络启用。 将此更改为从所选虚拟网络和 IP 地址启用。

步骤 4:添加 Azure 存储帐户网络规则

无需为工作区存储帐户执行此步骤。

  1. 为每个子网添加一个 Azure 存储帐户网络规则。 可以使用 Azure CLI、PowerShell、Terraform 或其他自动化工具执行此操作。 请注意,此步骤无法在 Azure 门户用户界面中完成。

    以下示例使用 Azure CLI:

    az storage account network-rule add --subscription "<sub>" \
        --resource-group "<res>" --account-name "<account>" --subnet "<subnet>"
    
    • 请将 <sub> 替换为存储帐户的 Azure 订阅名称。
    • <res> 替换为存储帐户的资源组。
    • <account> 替换为存储帐户的名称
    • <subnet> 替换为无服务器 SQL 仓库子网的 ARM 资源 ID (resourceId)。

    运行所有命令后,可以使用 Azure 门户查看你的存储帐户并确认“虚拟网络”表中是否有一个代表新子网的条目。 但是,无法在 Azure 门户中更改网络规则。

    提示

    忽略终结点状态列中的“权限不足”或网络列表下面的警告。 这只是表示你无权读取 Azure Databricks 子网,但不会阻碍 Azure Databricks 无服务器子网联系 Azure 存储的能力。

    “虚拟网络”列表中的新条目示例

  2. 为每个子网重复此命令一次。 可以选择自动执行网络规则创建过程。 请参阅自动创建网络规则

  3. 要确认你的存储帐户使用 Azure 门户中的这些设置,请导航到存储帐户中的网络

    确认已将公共网络访问设为已在选定的虚拟网络和 IP 地址中启用,同时虚拟网络部分列出了允许的网络。

请参阅 自动创建网络规则

可以使用 Azure CLI 或 Powershell 来自动为存储帐户创建网络规则。

此 Azure CLI 示例使用列表中的两个子网,你可以使用循环对每个子网运行命令。 在此示例中,mystorage-rg 是资源组,myaccount 是存储帐户。

#!/bin/bash
SUBNETS=(/subscriptions/8453a5d5-9e9e-40c7-87a4-0ab4cc197f48/resourceGroups/prod-azure-eastusc3-nephos2/providers/Microsoft.Network/virtualNetworks/kaas-vnet/subnets/worker-subnet /subscriptions/8453a5d5-9e9e-40c7-87a4-0ab4cc197f48/resourceGroups/prod-azure-eastusc3-nephos3/providers/Microsoft.Network/virtualNetworks/kaas-vnet/subnets/worker-subnet)
for SUBNET in ${SUBNETS[@]}
do
  az storage account network-rule add --subscription 9999999-1ff3-43f4-b91e-d0ceb97111111 --resource-group mystorage-rg --account-name myaccount --subnet ${SUBNET}
done

若要使用 Powershell,请使用以下命令:

Add-AzStorageAccountNetworkRule -ResourceGroupName <resource group name> -Name <storage account name> -VirtualNetworkResourceId <subnets>

将:

  • <resource group name> 替换为存储帐户的资源组。
  • <storage account name> 替换为存储帐户的名称。
  • <subnets> 替换为逗号分隔的子网资源 ID 列表。