1

如果我使用 Azure Pipelines 对包含角色分配的 ARM 模板进行“增量”“资源组”范围的部署,我似乎无法在没有收到角色分配资源错误的情况下重新运行/重新部署管道:

RoleAssignmentUpdateNotPermitted: Tenant ID, application ID, principal ID, and scope are not allowed to be updated.

这看起来像一个明显的问题,必须有一个共同的解决方法?我希望将角色分配分解为单独的模板,并可能在每个部署中删除并重新创建角色分配?

4

1 回答 1

3

使用角色分配增量重新部署 ARM 模板会引发错误

正如你所说,这是一个显而易见的问题。对于相同的范围或资源,您只能将相同的角色分配给服务主体一次。

因此,存在您尝试通过此模板创建的具有相同名称的现有角色分配,它最终给出“ RoleAssignmentUpdateNotPermitted”错误。

要解决此问题,我们需要确保对不同资源组的每个部署使用不同的 GUID 进行角色分配,但同时确保在部署到同一资源组时使用相同的 GUID。

我们可以使用该guid功能!它需要一个或多个用于计算哈希的字符串,非常类似于 uniquestring 函数;只有这个会生成 GUID 格式的字符串:

{
  "type": "Microsoft.Authorization/roleAssignments",
  "name": "[guid(resourceGroup().id, 'monitoringUsers')]"
}

您可以参考文档在 ARM 模板中定义 RBAC 角色分配以了解更多详细信息。

于 2021-02-15T11:32:24.053 回答