Azure Databricks:访问防火墙后面的 Blob 存储

Azure Databricks: Accessing Blob Storage Behind Firewall

我正在从 Azure Databricks 笔记本读取 Azure Blob 存储帐户(第 2 代)上的文件。这两项服务都在同一地区(西欧)。一切正常,除非我在存储帐户前添加了防火墙。我已选择允许 "trusted Microsoft services":

但是,运行 笔记本现在以访问被拒绝错误结束:

com.microsoft.azure.storage.StorageException: This request is not authorized to perform this operation.

我尝试直接从 Spark 访问存储并使用 dbutils 挂载它,但同样如此。

我会假设 Azure Databricks 算作受信任的 Microsoft 服务吗?此外,我找不到有关可以添加到防火墙规则的 Databricks 区域 IP 范围的可靠信息。

是的,Azure Databricks 不算作受信任的 Microsoft 服务,您可以看到受支持的 trusted Microsoft services 存储帐户防火墙。

来自网络,这里有两个建议:

  1. 找到 Azure datacenter IP address (Original deprecated URL) 并确定 Azure Databricks 所在的区域。将存储帐户防火墙中的 IP 列表列入白名单。

  2. Deploy Azure Databricks in your Azure Virtual Network (Preview) then whitelist the VNet address range in the firewall of the storage account. You could refer to configure Azure Storage firewalls and virtual networks. 此外,你有 NSG 来限制来自此 Azure VNet 的入站和出站流量。注意:您需要将 Azure Databricks 部署到您自己的 VNet

希望对您有所帮助。

仅当您在自己的 Azure 虚拟网络 (vnet) 中部署 Azure Databricks 时,所描述的场景才有效。有了它,您就可以使用服务终结点,因此可以将您的 Databricks vnet 添加到 Blob 存储。对于默认部署,这是不支持的,也是不可能的。 有关更多详细信息和如何启用 vnet 注入功能的说明,请参阅以下 Documentation

启用上述异常不起作用,因为 Azure Databricks 不在 Blob 存储的受信任服务列表中。请参阅以下内容Documentation哪些服务在启用例外情况下仍然可以访问存储帐户。