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

Posted

技术标签:

【中文标题】Azure Databricks:访问防火墙后面的 Blob 存储【英文标题】:Azure Databricks: Accessing Blob Storage Behind Firewall 【发布时间】:2019-05-29 19:46:26 【问题描述】:

我正在从 Azure Databricks Notebook 读取 Azure Blob 存储帐户(第 2 代)上的文件。两种服务都在同一地区(西欧)。一切正常,除非我在存储帐户前面添加防火墙。我已选择允许“受信任的 Microsoft 服务”:

但是,现在运行 notebook 会出现拒绝访问错误:

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

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

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

【问题讨论】:

【参考方案1】:

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

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

    找到 Azure datacenter IP address 并确定 Azure Databricks 所在区域的范围。将存储帐户防火墙中的 IP 列表列入白名单。

    Deploy Azure Databricks in your Azure Virtual Network (Preview) 然后将存储帐户防火墙中的 VNet 地址范围列入白名单。您可以参考configure Azure Storage firewalls and virtual networks. 此外,您有 NSG 来限制来自此 Azure VNet 的入站和出站流量。注意:您需要将 Azure Databricks 部署到您自己的 VNet

希望这会有所帮助。

【讨论】:

好的,我会接受这个答案。不过,将 IP 地址列入白名单似乎需要大量维护,因此将检查如何使用 VNet。谢谢。 如果要使用 VNet,则需要将 Azure Databricks 部署到自己的 VNet。【参考方案2】:

仅当您在自己的 Azure 虚拟网络 (vnet) 中部署 Azure Databricks 时,所述方案才有效。有了这个,您就可以使用服务端点,因此可以将您的 Databricks vnet 添加到 Blob 存储。对于默认部署,这是不受支持且不可能的。 有关更多详细信息以及如何启用 vnet-injection 功能的说明,请参阅以下Documentation。

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

【讨论】:

以上是关于Azure Databricks:访问防火墙后面的 Blob 存储的主要内容,如果未能解决你的问题,请参考以下文章

Azure Data PlatformETL工具(21)——Azure Databricks使用——访问Azure Blob

尝试访问 Azure Databricks 中的 Azure DBFS 文件系统时出现挂载错误

从 Azure Databricks Notebook 访问 SQL Server

Azure Databricks 通过服务主体访问 Azure Data Lake Storage Gen2

Azure Databricks:在没有 Internet 访问的情况下在虚拟网络下导入 PyPI 库

azure databricks中使用Unity Catalog 02--功能体验