azure - 从 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 项目用户更多权限吗?
解决方案
你好,我刚遇到同样的问题,你需要
- 进入资源组(在您的情况下为“my-resource-group”)
- 为客户端 6ced5214-xxxx-xxxx-xxxx-xxxxxxxxxxxx 分配所有者或用户访问管理员的角色。
请再次查看权限授权发布管道
或者使用 ARM 模板并创建一个 roleAssignments 任务role-assignments-template
推荐阅读
- ios - CAGradientLayer 上均匀分布的颜色
- typescript - 如何在打字稿中将 Blob 类型转换为字节数组?
- html - 从跨域加载 vtt 的问题
- c# - Xamarin.Android 膨胀自定义视图
- javascript - 为什么索引会在 javascript 数组中自动创建?
- java - 如何将“2019-04-11T05:00:54.000+01:00”转换为 dd/MM/yyyy hh:mm 格式
- java - 为什么 App Engine 部署需要 15 分钟?(以及发布/订阅的问题)
- sql - 选择 * from odk_prod._refinance_tags where (end_date like '%2017-06%' or end_date='0000-00-00') and app_no in ('APP-000-095','APP-000-115')
- colors - 透明背景的颤振卡
- sql - SSIS 包在作为作业运行时无法执行