You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Azure ML运行作业脚本时无法访问ADLS Gen2数据的认证问题

解决Azure ML管道访问ADLS Gen2权限被拒问题

针对你遇到的管道作业无法访问ADLS Gen2但笔记本环境正常的问题,可按以下步骤排查解决:

1. 修正权限角色类型

已分配的Blob Storage Contributor是存储账户的管理角色,不具备数据访问权限。需为AML计算集群的托管身份和工作区身份分配Storage Blob Data Contributor角色:

  • 进入ADLS Gen2存储账户的「访问控制(IAM)」页面
  • 添加角色分配,选择Storage Blob Data Contributor,将AML计算集群的系统托管身份、工作区身份添加为目标主体

2. 调整数据输入路径配置

确保data_input_path使用Azure ML数据存储的URI格式,而非直接的ADLS路径:

  • 先在AML工作区中注册指向ADLS Gen2的数据存储
  • 将输入路径改为:
data_input_path = "azureml://datastores/[你的ADLS数据存储名]/paths/[数据文件路径]"

这种方式会让AML自动使用预配置的身份进行认证,避免直接路径的权限问题。

3. 验证计算集群的托管身份

  • 进入AML计算集群my-model-compute的「标识」页面,确认已启用系统分配的托管身份
  • 确保该托管身份已被添加到ADLS Gen2的Storage Blob Data Contributor角色中

4. 规范脚本内的认证逻辑

确保data_prep.py中使用DefaultAzureCredential获取凭据,而非硬编码或其他过时方式:

from azure.identity import DefaultAzureCredential
from azure.storage.filedatalake import DataLakeServiceClient

# 使用默认凭据访问ADLS Gen2
credential = DefaultAzureCredential()
service_client = DataLakeServiceClient(
    account_url="https://<你的存储账户名>.dfs.core.windows.net",
    credential=credential
)
# 后续读取数据逻辑...

在AML作业环境中,DefaultAzureCredential会自动调用计算集群的托管身份,无需额外配置。

5. 排查网络限制

如果ADLS Gen2配置了防火墙或专用端点:

  • 确保AML工作区和计算集群所在的虚拟网络已被加入ADLS的允许访问列表
  • 检查是否开启了「允许受信任的Microsoft服务访问此存储账户」选项

内容的提问来源于stack exchange,提问作者Keyser

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 14:13:10