1

我想了解为什么我的 ACL 权限在 Databricks 中无法正常工作。

场景:我有 2 个用户。一个对 FileSystem 和具有完全权限的人。其他没有任何权限。

我尝试使用 2 种不同的方法在数据块中安装 Gen2 文件系统。

  1. configs = {"fs.azure.account.auth.type": "OAuth",
               "fs.azure.account.oauth.provider.type": "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider",
               "fs.azure.account.oauth2.client.id": clientid,
               "fs.azure.account.oauth2.client.secret": credential,
               "fs.azure.account.oauth2.client.endpoint": refresh_url}
    
    
    dbutils.fs.mount(
      source = "abfss://xyz@abc.dfs.core.windows.net/",
      mount_point = "/mnt/xyz",
      extra_configs = configs)
    

并使用直通 2。

configs = { 
"fs.azure.account.auth.type": "CustomAccessToken",
"fs.azure.account.custom.token.provider.class": spark.conf.get("spark.databricks.passthrough.adls.gen2.tokenProviderClassName")
}

dbutils.fs.mount(
  source = "abfss://xyz@abc.dfs.core.windows.net/",
  mount_point = "/mnt/xyz",
  extra_configs = configs)

都挂载文件系统。但是当我使用:

dbfs.fs.ls("/mnt/xyz")

它显示对 datalake 没有权限的用户的所有内容文件/文件夹。

如果有人能解释我出了什么问题,我会很高兴。

谢谢

4

2 回答 2

1

这是启用 Azure Data Lake Storage 凭据直通时的预期行为。

注意:为 Azure Data Lake Storage 凭据直通启用群集时,在该群集上运行的命令可以在 Azure Data Lake Storage 中读取和写入数据,而无需用户配置服务主体凭据来访问存储。凭据是根据启动操作的用户自动设置的。

参考: 为您的工作区启用 Azure Data Lake Storage 凭据直通,使用 Azure AD 凭据直通简化 Data Lake 访问

于 2020-04-27T07:44:11.520 回答
0

您可能确实忘记在容器的访问控制 (IAM) 中添加权限。

要检查这一点,您可以转到 azure 门户中的容器并单击Switch to Azure AD User Account。如果您没有权限,您将看到一条错误消息。

例如,您可以将角色添加Storage Blob Data Contributor为具有读取和写入权限。

注意:Datalake 需要几分钟时间来刷新凭据,因此您需要在添加角色后稍等片刻。

于 2021-01-13T10:13:01.657 回答