我试图了解为什么我的ACL权限在Databricks中无法正常工作。
方案:我有2个用户。一个具有对FileSystem的完全权限的文件。其他没有任何权限。
我尝试使用2种不同的方法将Gen2文件系统挂载到数据块中。
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没有权限的用户的所有内容文件/文件夹。
如果有人能解释我的问题会很高兴。
谢谢
答案 0 :(得分:0)
启用Azure Data Lake Storage凭据传递时,这是预期的行为。
注意:为群集启用Azure Data Lake Storage凭据传递后,在该群集上运行的命令可以在Azure Data Lake Storage中读写数据,而无需用户配置服务主体凭据才能访问存储空间。凭据是根据用户启动操作自动设置的。
参考: Enable Azure Data Lake Storage credential passthrough for your workspace和Simplify Data Lake Access with Azure AD Credential Passthrough。