调用Azure管理组Cost Management API报错的原因排查
问题分析:Azure管理组Cost Management API调用报错"无有效订阅"
报错信息与调用API
收到的错误响应:
{ "error": { "code": "BadRequest", "message": "Management group XYZ does not have any valid subscriptions. (Request ID: c6a2b5dc-f198-5365-804e-04240727f3a8)" } }
调用的API地址:
https://management.azure.com/providers/Microsoft.Management/managementGroups/{{managementGroupId}}/providers/Microsoft.CostManagement/query?api-version=2022-10-01
可能的原因
- 管理组无有效活动订阅:
- 管理组XYZ下的订阅已被移出、未成功关联,或处于禁用、过期、已删除状态,这类订阅无法被Cost Management API识别为有效订阅
- 权限覆盖不完整:
- 虽然服务主体在管理组层级被分配了Reader和Cost Management Reader角色,但如果管理组下的部分订阅存在拒绝分配(Deny Assignment),会直接阻止SPN访问该订阅的成本数据,导致API判定无有效订阅
- 环境配置差异:
- 另一个Azure环境的管理组下订阅均处于活动状态,且无额外权限限制,因此同角色配置可正常运行。当前环境的订阅生命周期或权限规则存在特殊配置
- API查询的隐含要求:
- Cost Management查询API要求管理组下至少有一个活动状态的订阅,且SPN对该订阅拥有Cost Management Reader及以上权限,否则会触发此错误
内容的提问来源于stack exchange,提问作者Kacper Gostek
相关产品推荐
相关产品推荐

