首页 > 解决方案 > 从 Azure DevOps 中的 ARM 模板创建的新资源组的角色分配授权失败

问题描述

使用带有“Azure 资源组部署”任务的 Azure DevOps 发布管道从 ARM 模板创建新的资源组。

ARM 模板包含在此新资源级别范围内的角色分配,例如:

{
    "type": "Microsoft.Authorization/roleAssignments",
    "name": "[guid(resourceGroup().id)]",
    "apiVersion": "2017-05-01",
    "properties": {
        "roleDefinitionId": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/', '8e3af657-a8ff-443c-a75c-2fe8c4bcb635')]",
        "principalId": "[parameters('rgOwnerGroupId')]",
        "scope": "[resourceGroup().Id]"
    }
}

这失败并出现权限错误:

“Microsoft.Authorization/roleAssignments”类型的模板资源“4778ab77-xxxx-xxxx-xxxx-xxxxxxxxxxxx”授权失败。对象 ID 为“6ced5214-xxxx-xxxx-xxxx-xxxxxxxxxxxx”的客户端“6ced5214-xxxx-xxxx-xxxx-xxxxxxxxxxxx”无权在“/subscriptions/7a205db1”范围内执行“Microsoft.Authorization/roleAssignments/write”操作-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/my-resource-group/providers/Microsoft.Authorization/roleAssignments/4778ab77-xxxx-xxxx-xxxx-xxxxxxxxxxxx'。

运行任务的用户是 DevOps 的项目用户,似乎在新创建的资源组上具有内置贡献者角色。因此,它没有在资源组上分配角色的权限是有道理的。作为资源组的创建者,奇怪的是只有Contributor而不是Owner。尽管在我的情况下,作为所有者仅对分配角色有用。

那么如何在 ARM 模板中为由同一模板创建的资源组嵌入资源组作用域角色分配呢?

唯一的解决方案是授予 DevOps 项目用户更多权限吗?

标签: azureazure-devopsazure-active-directoryrbacarm-template

解决方案


你好,我刚遇到同样的问题,你需要

  • 进入资源组(在您的情况下为“my-resource-group”)
  • 为客户端 6ced5214-xxxx-xxxx-xxxx-xxxxxxxxxxxx 分配所有者或用户访问管理员的角色。

请再次查看权限授权发布管道

或者使用 ARM 模板并创建一个 roleAssignments 任务role-assignments-template


推荐阅读