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

PowerShell用Managed Identity访问Azure Storage Blob/Table遇403错误排查

问题核心原因及修复方案

你遇到的403错误主要有以下几个常见原因,按优先级排查:

1. 缺少存储API必填的x-ms-version请求头(最高概率)

Azure存储数据平面REST API要求所有使用Bearer Token鉴权的请求必须显式携带x-ms-version头指定API版本,使用SAS时会默认继承SAS生成时的版本因此不会触发该问题。
修复方法:在请求头中添加版本声明,示例:

$Headers = New-ManagedIdentityAccessToken -Resource 'https://storage.azure.com'
# 新增x-ms-version头,版本号可选择近3年的官方支持版本即可
$Headers['x-ms-version'] = '2021-08-06'

2. 托管身份类型不匹配

如果你使用的是用户分配的托管身份(UAMI),你当前获取Token的代码没有指定对应的UAMI标识,默认会获取自动化账户系统分配托管身份的Token,自然会鉴权失败。
修复方法:在获取Token的请求body中添加UAMI的客户端ID参数:

# 修改New-ManagedIdentityAccessToken函数的body部分,添加client_id参数
$body = @{
    resource = $Resource
    client_id = "你的用户分配托管身份的客户端ID" # 仅UAMI需要添加该参数
}

3. Token受众(aud)不匹配

获取Token时填写的Resource参数直接对应Token的aud字段,需要和请求的资源匹配:

  • 访问所有存储服务的通用正确值为https://storage.azure.com(注意末尾不要加斜杠),该值可同时兼容Blob、Table等所有存储数据平面请求
  • 如果你使用单个存储账户端点作为Resource,需要替换为实际存储账户域名,不要保留示例中的STORAGE占位符,且末尾不要加斜杠

4. 角色分配范围/对象错误

  • 确认你分配存储Blob数据参与者、存储表数据参与者角色时,授权对象是你正在使用的托管身份,不要选错身份
  • 确认角色分配范围至少覆盖目标存储账户(或对应容器/表),如果仅分配到资源组级别需确认没有拒绝分配(Deny Assignment)阻止权限继承

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 21:57:03