为工作区存储帐户启用防火墙的支持

每个 Azure Databricks 工作区都有一个与之关联的 Azure 存储帐户,该存储帐户位于一个称为 工作区存储帐户 的托管资源组中。 此帐户包含工作区系统数据(作业输出、系统设置和日志)、Databricks 文件系统根目录,在某些情况下包含 Unity 目录工作区目录。 只能使用 Azure CLI 或 PowerShell 将工作区存储帐户的访问权限限制为授权资源和网络。

工作区存储账户的防火墙支持是什么?

默认情况下,工作区存储帐户接受来自所有网络的经过身份验证的连接。 启用防火墙支持时,Azure Databricks会阻止公共网络访问,并仅限制对授权资源的访问。 如果组织具有Azure策略要求存储帐户是专用的,则可能需要对此进行配置。

启用防火墙支持后,Azure Databricks 以外的服务若需访问工作区存储帐户,必须使用带有私有链接的专用终结点。 Azure Databricks无服务器计算必须使用服务终结点或专用终结点来访问工作区存储帐户。

Azure Databricks 使用 Azure 管理的身份创建一个访问连接器,以访问工作区存储帐户。

要求

  • 工作区必须为来自经典计算平面的连接启用 VNet 注入

  • 工作区必须为来自经典计算平面的连接启用安全群集连接(无公共 IP/NPIP)

  • 工作区必须位于 Premium 计划

  • 必须为存储帐户的私有终结点创建单独的子网。 这是在用于基本 Azure Databricks 功能的主要两个子网之外。

    子网必须与工作区位于同一 VNet 中,或者位于工作区可以访问的单独 VNet 中。 以 CIDR 表示法使用最小大小 /28

  • 如果将 Cloud Fetch 与 Microsoft Fabric Power BI service 配合使用,则必须始终使用网关进行工作区存储帐户的专用访问或禁用 Cloud Fetch。 请参阅 步骤 2(建议):为 Cloud Fetch 客户端 VNet 配置专用终结点

  • 对于Azure CLI或 PowerShell 部署方法,必须在启用默认工作区存储防火墙之前创建Azure Databricks访问连接器并保存其资源 ID。 这需要使用系统分配的托管标识或用户分配的托管标识。 请参阅 Databricks 的Access 连接器。 不能在托管资源组中使用Azure Databricks访问连接器。

将Azure Databricks外部的服务连接到存储帐户

步骤 1:为存储帐户创建专用终结点

为你的工作区存储帐户从用于 VNet 注入的 VNet 创建两个专用终结点,以连接至 Target 子资源 值:dfsblob

注释

如果在托管资源组上收到拒绝分配的错误,则工作区可能早于当前托管资源组权限模型。 在继续操作之前,请联系Azure Databricks帐户团队更新托管资源组配置。

如果收到有关运行计算资源的警告,请在执行步骤 1 到 4 之前停止工作区中的所有计算。

  1. 转到你的工作区。

  2. Essentials下,单击托管资源组的名称。

  3. Resources 下,记下您的工作区存储帐户的名称。 名称通常以 dbstorage. 开头。

  4. 在门户顶部的搜索框中,输入并选择 “专用终结点”。

  5. 单击 + 创建

  6. 在“资源组名称”字段中设置资源组

    重要

    资源组不得与工作区存储帐户所在的托管资源组相同。

  7. “名称” 字段中,输入此专用终结点的唯一名称:

    • 对于为每个源网络创建的第一个专用终结点,请创建一个 DFS 终结点。 Azure Databricks建议添加后缀 -dfs-pe
    • 对于为每个源网络创建的第二个专用终结点,请创建一个 Blob 终结点。 Azure Databricks建议添加后缀 -blob-pe

    “网络接口名称”字段会自动填充。

  8. “区域”字段设置为你的工作区所在的地区。

  9. 单击“ 下一步:资源”。

  10. 连接方法 中,选择 连接到我目录中的 Azure 资源。

  11. “订阅”中,选择包含工作区的订阅。

  12. Resource 类型中,选择Microsoft.Storage/storageAccounts

  13. 资源中,选择您的工作区存储帐户。

  14. “目标”子资源中,选择目标资源类型。

    • 对于为每个源网络创建的第一个专用终结点,请将其设置为 dfs
    • 对于为每个源网络创建的第二个专用终结点,请将其设置为 blob
  15. 单击 Next: Virtual Network

  16. Virtual network 字段中,选择 VNet。

  17. 在子网字段中,将子网设置为storage帐户专用终结点的单独子网。

    此字段可能会使用专用终结点的子网自动填充,但可能需要显式设置它。 不要将工作区的两个子网用于基本 Azure Databricks 工作区功能,这些子网通常称为 private-subnetpublic-subnet

  18. 根据需要更改 专用 IP 配置应用程序安全组 默认值。

  19. 单击“ 下一步:DNS”。 “DNS”选项卡中会自动填充你先前选择的正确订阅和资源组。 请根据需要更改这些设置。

    注释

    如果目标子资源类型 (dfs 或 blob) 没有其专用 DNS 区域附加到工作区 VNet,Azure 会创建一个新的专用 DNS 区域。 如果工作区 VNet 上已存在该子资源类型的专用 DNS 区域,Azure会自动选择它。 VNet 每个子资源类型只能有一个专用 DNS 区域。

  20. 单击“ 下一步:标记 ”并根据需要添加标记。

  21. 单击下一步:检查 + 创建,并检查各字段。

  22. 单击 “创建”

Cloud Fetch 是 ODBC 和 JDBC 中的一种机制,它通过云存储并行提取数据,以更快地将数据传送到 BI 工具。 如果从 BI 工具提取大于 100 MB 的查询结果,则可能使用 Cloud Fetch。

注释

如果将Azure Fabric Power BI service与Azure Databricks一起使用,并在工作区存储帐户上启用防火墙支持,则必须配置虚拟网络数据网关或本地数据网关,以允许对存储帐户进行专用访问。 这可确保Fabric Power BI service可以继续访问工作区存储帐户,并且 Cloud Fetch 继续正常运行。

此要求不适用于 Power BI Desktop。

如果使用 Cloud Fetch,请在 Cloud Fetch 客户端的 VNet 中为工作区存储帐户创建专用终结点。

对于 Cloud Fetch 客户端的每个源网络,请创建以下两个专用终结点,它们使用两个不同的“目标子资源”值:dfsblob。 有关详细步骤 ,请参阅步骤 1:为存储帐户创建专用终结点 。 在这些步骤中,当创建专用终结点时,对于Virtual network字段,请确保为每个 Cloud Fetch 客户端分别指定其各自的源 VNet。

步骤 3:确认终结点批准

创建存储帐户的所有专用终结点后,请验证它们是否已获得批准。 它们可能会自动批准,或者可能需要在存储帐户上批准它们。

  1. 请进入Azure门户的工作区。
  2. Essentials下,单击托管资源组的名称。
  3. resources 下,单击类型为 Storage 帐户,该资源的名称以 开头。
  4. 在边栏中,单击“网络”
  5. 单击“专用终结点连接”。
  6. 检查“连接状态”以确认他们是否显示为“已批准”,或者选择他们并单击“批准”。

来自无服务器计算的连接

注释

Azure Databricks 将所有已启用防火墙的现有工作区存储帐户加入到允许 AzureDatabricksServerless 服务标记的网络安全边界。 预计到 2026 年底,此载入将完成。

启用防火墙支持时,Azure Databricks 会自动将工作区存储帐户纳入一个允许 AzureDatabricksServerless 服务标记的网络安全边界。 这允许 Azure Databricks 的无服务器计算通过服务终结点连接。 若要改为通过专用终结点进行连接,请联系Azure Databricks帐户团队。

如果要管理自己的网络安全外围,可以分离Azure Databricks预配的网络安全外围并附加自己的外围。 切换会导致服务短暂暂停。 提前准备更换网络安全外围,并规划维护时段。

使用Azure CLI启用存储防火墙支持

  • 若要使用具有系统分配标识的访问连接器启用防火墙支持,请在Azure CLI运行:

    az databricks workspace update \
       --resource-group "<resource-group-name>" \
       --name "<workspace-name>" \
       --subscription "<subscription-id>" \
       --default-storage-firewall "Enabled" \
       --access-connector "{\"id\":\"/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Databricks/accessConnectors/<access-connector-name>\", \"identity-type\":\"SystemAssigned\"}"
    
  • 若要使用具有用户分配标识的访问连接器启用防火墙支持,请在Azure CLI运行:

    az databricks workspace update \
    --resource-group "<resource-group-name>" \
    --name "<workspace-name>" \
    --subscription "<subscription-id>" \
    --default-storage-firewall "Enabled" \
    --access-connector "{\"id\":\"/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Databricks/accessConnectors/<access-connector-name>\", \"identity-type\":\"UserAssigned\", \"user-assigned-identity-id\":\"/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managed-identity-name>\"}"
    
  • 若要使用访问连接器禁用防火墙支持,请在Azure CLI运行:

    az databricks workspace update \
     --name "<workspace-name>" \
     --subscription "<subscription-id>" \
     --resource-group "<resource-group-name>" \
     --default-storage-firewall "Disabled"
    

使用 PowerShell 启用存储防火墙支持

  • 若要使用具有系统分配标识的访问连接器启用防火墙支持,请在 PowerShell 中运行:

    Update-AzDatabricksWorkspace `
        -Name "<workspace-name>" `
        -ResourceGroupName "<resource-group-name>" `
        -SubscriptionId "<subscription-ID>" `
        -Sku "Premium" `
        -AccessConnectorId "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Databricks/accessConnectors/<access-connector-name>" `
        -AccessConnectorIdentityType "SystemAssigned" `
        -DefaultStorageFirewall "Enabled"
    
  • 若要使用具有用户分配标识的 access 连接器启用防火墙支持,请在 PowerShell 中运行:

    Update-AzDatabricksWorkspace `
        -Name "<workspace-name>" `
        -ResourceGroupName "<resource-group-name>" `
        -SubscriptionId "<subscription-ID>" `
        -Sku "Premium" `
        -AccessConnectorId "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Databricks/accessConnectors/<access-connector-name>" `
        -AccessConnectorIdentityType "UserAssigned" `
        -AccessConnectorUserAssignedIdentityId "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managed-identity-name>" `
        -DefaultStorageFirewall "Enabled"
    
  • 若要使用 access 连接器禁用防火墙支持,请在 PowerShell 中运行:

    Update-AzDatabricksWorkspace `
       -Name "<workspace-name>" `
       -ResourceGroupName "<resource-group-name>" `
       -SubscriptionId "<subscription-ID>" `
       -DefaultStorageFirewall "Disabled"