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

每个 Azure Databricks 工作区都有一个与之关联的 Azure 存储帐户,该帐户位于称为 工作区存储帐户 的托管资源组中。 工作区存储帐户包含工作区系统数据(作业输出、系统设置和日志)、DBFS 根目录,在某些情况下包含 Unity 目录工作区目录。 本页介绍如何仅限制对来自已授权资源和网络的工作区存储帐户的访问。 可以使用 Azure CLI 或 PowerShell。

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

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

启用对工作区存储帐户的防火墙支持后,所有来自 Azure Databricks 外部服务的访问都必须使用经过批准的专用链接的专用终结点。 Azure Databricks 创建 访问连接器 ,以使用 Azure 托管标识连接到存储。 从 Azure Databricks 无服务器计算模式进行访问必须使用服务终结点或专用终结点。

要求

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

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

  • 工作区必须位于 Premium 计划

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

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

  • 如果您在使用 Microsoft Fabric Power BI 服务时结合使用 Cloud Fetch,那么必须始终通过网关进行私有访问以连接到工作区存储帐户,或者禁用 Cloud Fetch。 请参阅步骤 2(建议):为 Cloud Fetch 客户端 VNet 配置专用终结点

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

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

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

注释

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

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

  1. 转到你的工作区。

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

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

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

  5. 单击 + 创建

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

    重要

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

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

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

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

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

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

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

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

  12. 资源类型中,选择 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 中的一种机制,用于通过云storage并行提取数据,以更快地将数据引入 BI 工具。 如果要从 BI 工具提取大于 100 MB 的查询结果,则可能使用 Cloud Fetch。

注释

如果将 Microsoft Fabric Power BI 服务与 Azure Databricks 配合使用并在工作区存储帐户上启用防火墙支持,则必须配置虚拟网络数据网关或本地数据网关,以允许对存储帐户进行专用访问。 这可确保 Fabric Power BI 服务能够继续访问工作区存储帐户,并且 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. 检查“连接状态”以确认他们是否显示为“已批准”,或者选择他们并单击“批准”。

步骤 4:授权无服务器计算连接

必须授权无服务器计算连接到工作区存储帐户。 该方法取决于工作区存储帐户的创建时间:

  • 将工作区附加到 NCC 时,默认工作区存储帐户防火墙会自动配置服务终结点以支持无服务器方式访问。
  • 如果要从 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>\"}"
    
  • 若要使用 access 连接器禁用防火墙支持,请运行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"