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

使用GitHub Action和Azure CLI创建Azure资源组/ML工作区时权限被拒

问题分析

从错误日志来看,核心问题是服务主体缺少Microsoft.Resources/deployments/write权限,具体受限范围包括:

  • 订阅级的部署资源(/subscriptions/xxx/providers/Microsoft.Resources/deployments/)
  • 默认资源组(如DefaultResourceGroup-francecentral)下的部署资源

虽然你给服务主体配置了Contributor权限,但可能存在以下问题:

  1. Contributor权限仅授予在自定义资源组范围,而非订阅级,导致创建ML工作区时自动生成的跨资源组/订阅级部署操作被拒绝
  2. 创建ML工作区时,Azure会自动尝试在默认资源组(DefaultResourceGroup-<region>)中部署关联资源(如Log Analytics工作区),但服务主体对该默认资源组无足够权限

另外,你的YAML中存在一处命令错误:判断工作区是否存在的命令应为az ml workspace exists,而非az workspace exists(后者不是Azure ML扩展的有效命令),这可能导致误判工作区不存在,重复触发创建操作。

解决方案

1. 调整服务主体权限范围

将服务主体的Contributor权限提升至订阅级别:

  • 登录Azure门户,进入目标订阅页面
  • 左侧菜单选择「访问控制(IAM)」→ 添加角色分配
  • 角色选「参与者(Contributor)」,成员选择你的服务主体,权限范围设为「订阅」

2. 显式指定ML工作区关联资源

若不想提升订阅级权限,可提前手动创建ML工作区所需的关联资源(存储账户、密钥保管库、Application Insights、Log Analytics工作区),并在创建工作区时显式指定,避免Azure自动使用默认资源组:

az ml workspace create --name <workspace-name> \
  --resource-group <your-resource-group> \
  --storage-account /subscriptions/<sub-id>/resourceGroups/<rg-name>/providers/Microsoft.Storage/storageAccounts/<storage-name> \
  --key-vault /subscriptions/<sub-id>/resourceGroups/<rg-name>/providers/Microsoft.KeyVault/vaults/<kv-name> \
  --application-insights /subscriptions/<sub-id>/resourceGroups/<rg-name>/providers/Microsoft.Insights/components/<ai-name> \
  --log-analytics-workspace /subscriptions/<sub-id>/resourceGroups/<rg-name>/providers/Microsoft.OperationalInsights/workspaces/<law-name>

3. 授予特定部署权限

如果仅需最小权限,可单独给服务主体添加Microsoft.Resources/deployments/write权限,覆盖以下范围:

  • 订阅级别(针对全局部署操作)
  • 默认资源组(DefaultResourceGroup-<region>)

4. 修正YAML中的命令错误

将判断工作区存在的命令修正为:

if $(az ml workspace exists --name ${{ github.event.inputs.workspace }} --resource-group ${{ github.event.inputs.resource_group }}); then

同时确保创建工作区时显式指定资源组:

az ml workspace create --name ${{ github.event.inputs.workspace }} --resource-group ${{ github.event.inputs.resource_group }}
验证步骤
  1. 更新权限后,重新触发GitHub Action工作流
  2. 观察日志是否仍有权限错误
  3. 若问题持续,可在工作流中添加步骤打印当前上下文信息,确认权限范围匹配:
az account show
az group show --name ${{ github.event.inputs.resource_group }}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 02:24:54