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

每个 Azure Databricks 工作区都在托管的资源组中有关联的 Azure 存储帐户,称为工作区存储帐户。 工作区存储帐户包含工作区系统数据(作业输出、系统设置和日志)、DBFS 根,在某些情况下还包含 Unity Catalog 工作区目录。 本文介绍如何使用 ARM (Azure Resource Manager) 模板来限制为只能从已授权的资源和网络访问你的工作区存储帐户。

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

默认情况下,工作区存储帐户的 Azure 存储帐户接受来自所有网络的、经过身份验证的连接。 可以通过为工作区存储帐户启用防火墙支持来限制这种访问。 这可以确保禁止公用网络访问,并且无法从未经授权的网络访问工作区存储帐户。 如果组织中的 Azure 策略要求确保存储帐户的私密性,则可以配置此功能。

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

要求

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

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

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

  • 必须为存储帐户的专用终结点设置独立的子网。 这是对基本 Azure Databricks 功能的两个主要子网的补充。

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

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

还可以使用第 5 步:部署所需的 ARM 模板中的 ARM 模板来创建新工作区。 在这种情况下,请在执行步骤 1 到 4 之前关闭工作区中的所有计算。

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

对于“目标子资源”值,请创建以下两个专用终结点,它们从用于 VNet 注入的 VNet 连接到工作区存储帐户:dfsblob

  1. 在 Azure 门户中,导航到你的工作区。

  2. 在“概要”下,单击“托管资源组”的名称

  3. 在“资源”下,单击名称以 dbstorage 开头的“存储帐户”类型的资源

  4. 在边栏中,单击“网络”

  5. 单击“专用终结点连接”。

  6. 单击“+ 专用终结点”。

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

    重要

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

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

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

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

  9. 将“区域”字段设置为你的工作区所在的区域

  10. 单击 “下一步”

  11. 在“目标子资源”中,单击目标资源类型

    • 对于为每个源网络创建的第一个专用终结点,请将其设置为 dfs
    • 对于为每个源网络创建的第二个专用终结点,请将其设置为 blob
  12. 在“虚拟网络”字段中选择一个 VNet

  13. 在子网字段中,将子网设置为你为存储帐户的专用终结点创建的独立子网。

    此字段中可能会自动填充专用终结点的子网,但你可能必须显式设置。 不能使用用于基本 Azure Databricks 工作区功能的两个工作区子网之一(通常名为 private-subnetpublic-subnet)。

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

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

  16. 单击“下一步”并检查字段

  17. 单击 “创建”

若要为工作区存储帐户禁用防火墙支持,请使用上述相同的过程,但需要将参数“存储帐户防火墙”(模板中的 storageAccountFirewall)设置为 Disabled,并将 Workspace Catalog Enabled 字段设置为 truefalse,具体取决于你的工作区是否使用 Unity Catalog 工作区目录。 请参阅 Azure Databricks 中的目录是什么?

步骤 2(建议):为 Cloud Fetch 客户端 VNet 配置专用终结点

Cloud Fetch 是 ODBC 和 JDBC 中的一种机制,用于通过云存储并行提取数据,以便更快地将数据引入 BI 工具。 如果你正在通过 BI 工具提取大于 1 MB 的查询结果,则有可能使用的是 Cloud Fetch。

注意

如果你要将 Microsoft Fabric Power BI 服务与 Azure Databricks 配合使用,则必须禁用 Cloud Fetch,因为此功能会阻止从 Fabric Power BI 直接访问工作区存储帐户。 或者,可以配置虚拟网络数据网关或本地数据网关,以允许对工作区存储帐户进行私密访问。 这不适用于 Power BI Desktop。 若要禁用 Cloud Fetch,请使用配置 EnableQueryResultDownload=0

如果使用 Cloud Fetch,请创建专用终结点用于从 Cloud Fetch 客户端的任何 VNet 连接到工作区存储帐户。

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

步骤 3:确认终结点的批准状态

创建存储帐户的所有专用终结点后,检查它们是否已获批准。 系统可能会自动批准,或者你可能需要在存储帐户中批准它们。

  1. 在 Azure 门户中导航到工作区。
  2. 在“概要”下,单击“托管资源组”的名称
  3. 在“资源”下,单击名称以 dbstorage 开头的“存储帐户”类型的资源
  4. 在边栏中,单击“网络”
  5. 单击“专用终结点连接”。
  6. 检查“连接状态”以确认终结点显示为“已批准”,或者选择终结点并单击“批准”

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

必须通过将网络连接配置 (NCC) 附加到工作区,来授权无服务器计算连接到工作区存储帐户。 将 NCC 附加到工作区时,会自动将网络规则添加到用作工作区存储帐户的 Azure 存储帐户中。 如需说明,请参阅配置防火墙以进行无服务器计算访问

如果你希望能够使用专用终结点从 Azure Databricks 无服务器计算进行访问,请联系你的 Azure Databricks 帐户团队。

步骤 5:部署所需的 ARM 模板

此步骤使用 ARM 模板来管理 Azure Databricks 工作区。 还可以使用 Terraform 更新或创建工作区。 请参阅 azurerm_databricks_workspace Terraform 提供程序

  1. 在 Azure 门户中,搜索并选择 Deploy a custom template

  2. 单击“在编辑器中生成自己的模板”。

  3. 复制用于工作区存储帐户的防火墙支持的 ARM 模板中所述的 ARM 模板,并将其粘贴到编辑器中。

  4. 单击“ 保存”。

  5. 查看并编辑字段。 请使用创建工作区时所用的相同参数,例如订阅、区域、工作区名称、子网名称、现有 VNet 的资源 ID。

    有关字段的说明,请参阅 ARM 模板字段

  6. 依次单击“查看 + 创建”、“创建”

注意

工作区存储帐户上的公共网络访问设置为“从所选虚拟网络和 IP 地址启用”,而不是“禁用”,以便无需专用终结点也可支持无服务器计算资源。 工作区存储帐户位于受管理资源组中,存储防火墙只能在为工作区的无服务器连接添加网络连接配置 (NCC) 时才能更新。 如果你希望能够使用专用终结点从 Azure Databricks 无服务器计算进行访问,请联系你的 Azure Databricks 帐户团队。