我正在尝试使用Python SDK迭代Azure datalake Gen1中的所有文件夹。我正在使用一个服务主体,并为其分配了所有者角色。但是,当我尝试访问某些文件夹时,我得到一个权限拒绝错误。我不确定我是否需要任何其他角色以及,因为业主有最高的特权,我猜。
下面是我正在使用的代码
%pip install azure-mgmt-resource
%pip install azure-mgmt-datalake-store
%pip install azure-datalake-store
import re
import datetime;
from azure.datalake.store import lib, core
from azure.common.credentials import ServicePrincipalCredentials
from pyspark.sql.types import StringType
from pyspark.sql.functions import udf,split, explode,col,when,concat,array_contains,lit
import datetime;
def authenticate(clientId, secretId, tenantId):
RESOURCE = 'https://datalake.azure.net/'
tenant = tenantId
client_id = clientId
client_secret = secretId
adlCreds = lib.auth(tenant_id=tenant,
client_secret=client_secret,
client_id=client_id,
resource=RESOURCE)
adl = core.AzureDLFileSystem(adlCreds, store_name="xxx")
return adl
clientId = dbutils.secrets.get(scope = "datalakesecurity", key = "datalakeclientid")
secretId = dbutils.secrets.get(scope = "datalakesecurity", key = "datalakecredential")
tenantId = 'xxxxx'
adl = authenticate(clientId, secretId, tenantId)
path_to_look= '/'
level1 = adl.ls(path_to_look)
print(level1)
1条答案
按热度按时间xxls0lw81#
Azure Datalake Gen1权限在迭代文件夹时被拒绝。
在Azure Data Lake Gen1中,“所有者”角色拥有对整个Data Lake帐户的完全访问权限,包括所有文件夹和文件。即使您持有所有者角色,仍有一些文件夹级别的权限可能会阻止您访问特定文件夹。您也可以给予您的服务委托人一个贡献者职位。
根据这个MS文档,除了所有者角色之外,你需要明确给予文件夹级别的读、写、执行权限。
即使您的服务原则上有所有者角色,但您没有上述权限,您将面临权限拒绝错误。