Azure扩展支持云服务访问存储Blob时出现认证失败问题
排查云服务访问受限存储Blob的认证错误
以下是针对问题的具体排查步骤:
1. 确认云服务出站IP的完整性
- 经典云服务的出站IP包含云服务VIP和实例级出站IP,需确保所有实际用于访问存储账户的IP都已添加到存储账户的允许IP列表中。
- 可通过Azure门户查看云服务「属性」中的完整出站IP集合,或使用Azure PowerShell命令获取:
Get-AzCloudService -ResourceGroupName <你的资源组> -Name <云服务名称> | Select-Object -ExpandProperty PublicIpAddresses - 注意:云服务缩放、重启后可能会变更出站IP,需定期核对允许列表是否更新。
2. 检查存储账户的网络例外设置
当存储账户限制为选定网络访问时,若使用存储账户密钥访问,需确认是否开启了「允许受信任的Microsoft服务访问此存储账户」选项(位于存储账户「网络」设置的「例外」区域)。即使云服务IP已加入允许列表,未开启此选项时,使用密钥的请求仍会被拦截。
3. 验证Azure AD令牌的有效性
若代码中使用应用注册的Azure AD令牌认证:
- 解码令牌检查核心字段:
aud(受众)需为https://storage.azure.com/或目标存储账户的专属URLexp(过期时间)需确保请求时令牌未失效
- 确认应用注册的角色分配已生效:可通过Azure CLI验证角色分配状态:
az role assignment list --assignee <应用注册客户端ID> --scope "/subscriptions/<订阅ID>/resourceGroups/<资源组>/providers/Microsoft.Storage/storageAccounts/<存储账户>/blobServices/default/containers/<容器名称>"
4. 确认云服务的实际出站IP
查看存储账户的「监控」→「日志」,筛选StorageBlobLogs中的失败请求,检查clientIpAddress字段,确认该IP是否已在允许列表中。若不在,说明云服务的出站流量未使用你添加的IP,需排查网络路由(如UDR、代理等)是否改变了源IP。
5. 考虑切换至VNet集成访问
若经典云服务部署在Azure VNet中,可将存储账户的允许列表改为添加该VNet,而非固定IP。这种方式无需维护IP列表,能避免IP变更导致的访问失败,同时更符合Azure网络安全最佳实践。
内容的提问来源于stack exchange,提问作者Elena Kennedy
相关产品推荐
相关产品推荐

