我正在从Azure Databricks笔记本读取Azure Blob存储帐户(第2代)上的文件。两种服务都在同一地区(西欧)。一切正常,除非在存储帐户前添加防火墙。我选择允许“受信任的Microsoft服务”:
但是,现在运行笔记本最终会出现拒绝访问错误:
com.microsoft.azure.storage.StorageException: This request is not authorized to perform this operation.
我尝试直接从Spark并通过用dbutils
挂载来访问存储,但是还是一样。
我会假定Azure Databricks可算是受信任的Microsoft服务?此外,我找不到可以添加到防火墙规则中的Databricks区域IP范围的可靠信息。
答案 0 :(得分:3)
是的,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 。
希望这会有所帮助。
答案 1 :(得分:0)
仅当您在自己的Azure虚拟网络(vnet)中部署Azure Databricks时,上述方案才有效。这样,您就可以使用服务端点,因此可以将Databricks vnet添加到Blob存储中。对于默认部署,不支持也不可行。 有关更多详细信息和如何启用vnet-injection功能的说明,请参见以下Documentation。
启用提到的异常不起作用,因为Azure Databricks不在Blob存储的受信任服务列表中。请参阅以下Documentation,在启用了例外的情况下,哪些服务仍可以访问存储帐户。