使用Bicep创建Azure管理组遇权限错误问题求助
问题重现
执行租户级Bicep部署命令:
az deployment tenant create --location westeurope --template-file managementGroups.bicep
遇到权限错误:
The client 'xxx' with object id 'yyy' does not have authorization to perform action 'Microsoft.Resources/deployments/validate/action' over scope '/providers/Microsoft.Resources/deployments/managementGroups' or the scope is invalid.
服务主体已在租户根管理组分配Owner角色,但个人账号同权限可成功执行。
解决方案
将Owner角色分配到租户根范围(/)
租户根管理组的Owner权限不等于租户根范围的权限。租户级部署的作用域是整个租户,需要将服务主体的Owner角色直接分配在/(租户根)范围,而非仅根管理组。验证服务主体的权限范围
用以下命令确认服务主体在租户根范围的角色分配:az role assignment list --assignee <service-principal-object-id> --scope "/"输出中应包含
roleDefinitionName: Owner且scope: "/"的条目。无需创建自定义RBAC角色
租户根范围的Owner角色已包含Microsoft.Resources/deployments/validate/action及所有租户级部署所需权限,无需额外自定义角色。之前尝试的/providers/Microsoft.Resources/deployments/managementGroups范围无效是因为该路径不属于RBAC权限的合法作用域。刷新服务主体权限缓存
Azure RBAC权限可能存在延迟,执行以下命令强制刷新:az account clear az login --service-principal -u <client-id> -p <client-secret> --tenant <tenant-id>重新登录后再执行部署命令。
检查服务主体的API权限
在Azure AD应用注册中,确保服务主体添加了Azure Resource Manager的委派权限User_Impersonation,并授予管理员同意。
内容的提问来源于stack exchange,提问作者filip

