是否可以使用 Databricks 的专用端点连接到 Azure 存储帐户?

Is it possible to connect to Azure Storage Account with Private Ednpoint from Databricks?

我正在尝试从我的 Databricks Notebook 连接到启用了专用端点的 Azure DataLake 2/存储帐户,但出现错误:

Caused by: StorageException: This Request is not Authorized to Perform this operation.

我尝试在防火墙 IP 列表中添加 Databricks IP 地址(在 Databricks 附带的网络接口/VNET 中找到,但不确定是否是那个)以同时列出来自本地的请求。但是得到同样的错误。有没有办法与这样的配置建立连接?

我创建了与您相同的环境,并尝试在 Databricks notebook 中装载存储帐户,但出现相同的错误“未授权”。

解法:

因为我们已经创建了带有专用终结点的存储帐户,所以默认情况下有防火墙设置。因此,要解决这个问题,我们需要在其中设置数据块正在使用的 vnet 和子网,如下所示。

因此,当我安装存储帐户时,它会成功安装。

但是要再次从文件夹中读取文件,您必须管理容器的 ACL 以及文件。

之后你可以得到以下输出:

通过右键单击需要从 Databricks notebook 读取的文件,也可以对文件执行相同的操作。

你可以在为文件添加访问控制后在Databricks中测试它:

注意: 我已经使用服务主体(即 ADLStest)从 Databricks 使用 ADLS gen2 存储帐户。该服务主体应该具有分配给它的“Storage Blob Data Contributor”角色。并且管理 ACL 应该仅为该服务主体完成。

参考:

Access Azure Data Lake Storage Gen2 using OAuth 2.0 with an Azure service principal

Mount an Azure Data Lake Storage Gen2 Account in Databricks (mssqltips.com)