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

Azure Windows虚拟机规模集CustomScriptExtension访问Blob报403 Forbidden

解决Windows虚拟机规模集CustomScriptExtension托管身份访问Blob 403问题

你当前的配置遗漏了几个关键环节,导致托管身份无法正常访问存储Blob,以下是具体修复步骤:

1. 修正托管身份的RBAC权限

不要给规模集托管身份分配Contributor角色,这不仅权限过大,还可能因权限范围不匹配导致访问失败。正确操作是:

  • 找到规模集的系统/用户分配托管身份,在目标存储账户上分配Storage Blob Data Reader角色,权限范围限定到存放脚本的Blob容器或具体Blob即可,不需要扩到整个资源组或订阅。

2. 完善CustomScriptExtension的托管身份配置

你的protectedSettings里的managedIdentity字段为空,必须明确指定身份类型和标识信息:

  • 如果用系统分配托管身份,配置如下:
    "managedIdentity": {
        "identityType": "SystemAssigned"
    }
    
  • 如果用用户分配托管身份,需要指定ClientID(或ObjectID/ResourceID):
    "managedIdentity": {
        "identityType": "UserAssigned",
        "clientId": "<你的用户分配身份ClientID>"
    }
    
    注意:之前你添加的{objectID:}格式错误,键名需严格用objectId(首字母小写),且必须配合identityType使用。

3. 检查存储账户的网络访问规则

如果存储账户开启了VNet防火墙限制:

  • 把虚拟机规模集所在的子网添加到存储账户的允许访问列表;
  • 或者在存储账户网络设置中勾选“允许受信任的Azure服务访问此存储账户”,确保CustomScriptExtension能通过托管身份正常访问。

4. 等待RBAC权限生效

RBAC权限分配后通常需要5-15分钟才能完全同步,部署模板前请确保权限已经生效,避免因同步延迟导致的403错误。

修正后的完整Extension配置示例(系统分配身份)

{   
    "name": "InstallSomeCoolStuffs",
    "properties":{
        "publisher": "Microsoft.Compute",
        "type": "CustomScriptExtension",
        "typeHandlerVersion": "1.19",
        "autoUpgradeMinorVersion": true,
        "settings": {},
        "protectedSettings": {
            "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File myscript.ps1",
            "managedIdentity": {
                "identityType": "SystemAssigned"
            },
            "fileUris": ["https://someblob.blob.core.windows.net/src/myscript.ps1"]
        }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 10:06:46