从 databricks 连接到 azure data lake gen 2 时出现访问问题

access issue while connecting to azure data lake gen 2 from databricks

我在尝试使用服务主体和 OAuth 2.0 从数据块连接到 gen2 数据湖时遇到以下访问问题

执行的步骤:Reference article

  1. 创建了新的服务主体
  2. 从具有参与者角色访问权限的 Azure 存储帐户 IAM 提供对此服务主体的必要访问权限。
  3. 已在数据块和存储帐户上启用防火墙和专用端点连接。

状态码=403
StatusDescription=此请求无权使用此权限执行此操作。
ErrorCode=AuthorizationPermissionMismatch
ErrorMessage=此请求无权使用此权限执行此操作。

然而,当我尝试通过访问密钥连接时,它运行良好,没有任何问题。现在我开始怀疑我步骤中的 #3 是否是此访问问题的原因。如果是这样,我是否需要提供任何额外的访问权限才能使其成功?有什么想法吗?

When performing the steps in the Assign the application to a role, make sure to assign the Storage Blob Data Contributor role to the service principal.

Repro: 我已向服务主体提供所有者权限并尝试 运行 “dbutils.fs.ls("mnt/azure/")”,返回与上述相同的错误消息。

解决方案:现在将 Storage Blob Data Contributor 角色分配给服务主体。

最终,在将 Storage Blob Data Contributor 角色分配给服务主体后,能够获得没有任何错误消息的输出。

详情请参考“Tutorial: Azure Data Lake Storage Gen2, Azure Databricks & Spark”。