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

标签 azure azure-devops azure-active-directory rbac azure-rm-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]"
    }
}

由于权限错误而失败:

Authorization failed for template resource '4778ab77-xxxx-xxxx-xxxx-xxxxxxxxxxxx' of type 'Microsoft.Authorization/roleAssignments'. The client '6ced5214-xxxx-xxxx-xxxx-xxxxxxxxxxxx' with object id '6ced5214-xxxx-xxxx-xxxx-xxxxxxxxxxxx' does not have permission to perform action 'Microsoft.Authorization/roleAssignments/write' at scope '/subscriptions/7a205db1-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/my-resource-group/providers/Microsoft.Authorization/roleAssignments/4778ab77-xxxx-xxxx-xxxx-xxxxxxxxxxxx'.

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

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

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

最佳答案

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

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

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

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

关于azure - 在 Azure DevOps 中从 ARM 模板创建的新资源组的角色分配授权失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54748303/

相关文章:

Azure 备份代理问题

msbuild - VisualStudio.com(Visual Studio Team Services)构建因 nuget 包依赖项而失败

angularjs - 如何使用 Azure AD 授权 Node.js API?

azure - 使用 Microsoft Azure 和 2FA 从命令行切换租户

azure-devops - 如何在 Azure DevOps YAML 中定义队列时间变量

azure - 如何在 Azure Vault 中存储 RSA key

node.js - microsoft-identity-express - 为什么我无法成功登录?

.net - 如何在WindowsAzure云中部署工作流?

c# - Azure WebJob 应用程序洞察

javascript - Azure DevOps WebExtension 使用 WebWorker