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

Azure ML执行online-deployment报存储账户修改权限不足问题

问题根因

这个报错本质是az ml online-endpoint create和az ml online-deployment两个命令的执行逻辑差异导致的,和你在AML层面配置的权限没有直接关系:

  • az ml online-endpoint create 属于纯ARM控制面操作,仅需要对AML工作区资源的写入权限,全程不会访问工作区绑定的底层存储账户,因此你用同一个服务连接执行该操作不会触发权限报错。
  • az ml online-deployment 执行时,只要部署配置里引用了本地路径的模型、评分代码、自定义环境构建文件,CLI v2会自动先将这些本地资产上传到工作区关联默认存储的azureml-blobstore-<GUID>系统容器,这一步会直接触发存储服务层面的权限校验,也就是你看到报错的阶段。

你已经核对过服务连接权限仍报错,基本属于以下几个高频漏配场景:

  • 权限分配范围不对:你给服务主体加的存储相关角色是分配在资源组或者AML工作区范围,但目标存储账户关闭了RBAC权限继承,上层分配的角色在存储侧不生效。
  • 存储授权模式冲突:该存储账户开启了「禁止共享密钥访问」,但没有开启Blob的Azure AD RBAC授权模式,CLI默认尝试拉取存储密钥访问的逻辑会被直接拦截,哪怕你已经给了对应的Blob RBAC角色也会报无权限。
  • 角色分配未同步:Azure RBAC角色分配最长有10分钟的传播延迟,如果是部署前刚加的权限,可能还没同步到存储侧。
  • 存储防火墙拦截:存储账户配置了IP/VNet访问限制,Pipeline运行的代理IP不在允许范围内,存储服务会统一返回无权限的通用报错,不会明确提示是网络拦截。
解决步骤

按顺序排查处理即可:

  • 修正权限分配范围
    直接进入目标AML工作区绑定的默认存储账户的「访问控制(IAM)」页,给服务连接对应的服务主体在存储账户范围直接分配Storage Blob Data Contributor、Storage Blob Data Reader两个角色,不要依赖资源组、工作区层级的继承权限,分配完成后等待5分钟让权限同步。
  • 调整存储授权配置
    进入存储账户的「配置」页,根据你的安全需求二选一调整:
    • 如果要保留「禁止共享密钥访问」的配置,就将Blob访问授权模式调整为支持Azure AD授权,同时在Pipeline执行部署命令前,先运行az config set defaults.storage_auth_mode=AAD,强制CLI使用服务主体的AAD令牌访问存储,不要尝试拉取存储密钥。
    • 如果你不需要强制禁用密钥访问,可暂时开启存储账户的共享密钥访问,CLI默认逻辑即可正常运行。
  • 排查存储网络规则
    如果存储账户开启了防火墙限制,把Pipeline使用的代理IP加入存储账户的允许访问列表;如果使用微软托管代理,可开启存储账户「允许受信任的Azure服务访问」的开关。
  • 前置权限校验
    可以在部署步骤前加一行测试命令,用当前服务连接身份执行az storage blob list --account-name <你的存储账户名称> --container-name <工作区对应的azureml-blobstore容器名> --auth-mode login,如果命令能正常返回容器内的blob列表,说明存储侧权限配置已经生效,再执行部署命令就不会触发该报错。

补充:如果你的部署配置里所有引用的模型、环境、代码都是已经存在于AML工作区中的已注册资产,没有本地路径引用,可以在az ml online-deployment命令后加上--no-wait --skip-upload参数,跳过本地资产上传步骤,也可以绕过存储权限校验。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 03:15:38