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

ARM模板配置Windows自定义脚本扩展通过托管身份访问存储部署超时

故障根因与修复方案

1. 权限配置错误

你为托管身份分配的存储账户参与者权限属于Azure资源管理层面权限,不具备Blob数据读取权限,需要额外为托管身份分配目标存储账户的 存储Blob数据读取者 角色,才能正常拉取私有容器中的脚本文件。

2. 自定义脚本扩展版本过低

你当前使用的 typeHandlerVersion: 1.4 版本不支持托管身份鉴权特性,该特性最低要求 1.9 及以上版本,建议直接升级到稳定的1.10版本,修改CSE配置段如下:

{
  "apiVersion": "2018-06-01",
  "type": "Microsoft.Compute/virtualMachines/extensions",
  "name": "[concat(variables('VMSHName'),'/', variables('vmExtensionName'))]",
  "location": "[resourceGroup().location]",
  "dependsOn": [
      "[concat('Microsoft.Compute/virtualMachines/',variables('VMSHName'))]"
  ],
  "properties": {
      "publisher": "Microsoft.Compute",
      "type": "CustomScriptExtension",
      "typeHandlerVersion": "1.10", 
      "autoUpgradeMinorVersion": true,
      "settings": {
                   "fileUris": [ "https://xyz.blob.core.windows.net/scripts/Init.ps1" ], 
                   "commandToExecute": "powershell.exe -ExecutionPolicy Unrestricted -File Init.ps1"
        },
       "protectedSettings": {
                     "managedIdentity" : { "clientId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" }
    }
  }
}

3. 其他需要核验的配置项

  • 确认你填写的 clientId 是用户分配托管身份的客户端ID,而非对象ID、资源ID
  • 确认 fileUris 对应的存储账户就是你为托管身份分配了存储Blob数据读取者权限的存储账户,避免跨账户权限不匹配
  • 如果存储账户开启了网络防火墙,需要将虚拟机所在子网加入存储账户防火墙白名单,或开启允许受信任的Azure服务访问开关
  • 如果用户分配托管身份是在同一份ARM模板中创建的,需要为虚拟机资源添加dependsOn依赖,确保托管身份创建完成后再创建虚拟机

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 05:48:04