从Azure DevOps中的ARM模板创建的新资源组的角色分配授权失败

时间:2019-02-18 13:22:14

标签: azure azure-devops azure-active-directory rbac arm-template

将Azure DevOps发布管道与“ Azure资源组部署”任务结合使用,以从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-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/my-resource-group/providers/Microsoft.Authorization/roleAssignments/4778ab77-范围内执行操作'Microsoft.Authorization / roleAssignments / write' xxxx-xxxx-xxxx-xxxxxxxxxxxx'。

运行任务的用户是DevOps的项目用户,该用户在新创建的资源组上似乎具有内置的“贡献者”角色。因此,它没有权限在资源组上分配角色是很有意义的。作为资源组的创建者,很奇怪,它只是贡献者,而不是所有者。虽然在我的情况下,成为所有者仅对分配角色有用。

那么如何为同一模板创建的资源组将资源组范围的角色分配嵌入到ARM模板中?

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

1 个答案:

答案 0 :(得分:0)

您好,我遇到了同样的问题,您需要

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

请参阅permission-authorising-release-pipeline-agains

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

相关问题