Joh*_*Koz 4 azure-resource-manager azure-rm-template azure-pipelines azure-rbac azure-service-principal
如果我使用 Azure Pipelines 对包含角色分配的 ARM 模板进行“增量”“资源组”范围部署,则似乎无法在不收到角色分配资源错误的情况下重新运行/重新部署管道:
RoleAssignmentUpdateNotPermitted: Tenant ID, application ID, principal ID, and scope are not allowed to be updated.
Run Code Online (Sandbox Code Playgroud)
这看起来是一个明显的问题,必须有一个通用的解决方法?我是否希望将角色分配分解为单独的模板,并且可能在每个部署上删除并重新创建角色分配?
使用角色分配增量重新部署 ARM 模板会引发错误
正如你所说,这是一个显而易见的问题。对于相同的范围或资源,您只能将相同的角色分配给服务主体一次。
因此,您尝试通过此模板创建的现有角色分配具有相同的名称,最终会出现“ RoleAssignmentUpdateNotPermitted”错误。
为了解决这个问题,我们需要确保每次部署到不同的资源组时使用不同的 GUID 进行角色分配,但同时确保部署到同一资源组时使用相同的 GUID。
我们可以使用这个guid功能!它需要一个或多个字符串来计算哈希值,非常类似于 uniquestring 函数;只有这个会生成 GUID 格式的字符串:
{
"type": "Microsoft.Authorization/roleAssignments",
"name": "[guid(resourceGroup().id, 'monitoringUsers')]"
}
Run Code Online (Sandbox Code Playgroud)
您可以参阅文档在 ARM 模板中定义 RBAC 角色分配以了解更多详细信息。
| 归档时间: |
|
| 查看次数: |
3856 次 |
| 最近记录: |