尝试将托管标识分配给同一租户中单独订阅中的资源组。我可以通过Azure门户实现这一点。我的主要.二头肌,这样的东西:
targetScope = 'subscription'
module rgRoleAssignment 'modules/MyModule.bicep' = {
scope: resourceGroup('anotherSubscriptionId', 'myResourceGroupName')
name: 'qwerty123'
params: {
principalId: MyManagedIdentity.outputs.principalId
roleDefinitionIds: ['7f951dda-4ed3-4680-a7ca-43fe172d538d'] //ACRPull
}
}
MyModule.bicep:
targetScope = 'resourceGroup'
param roleDefinitionIds array
param roleAssignmentDescription string = ''
param principalId string
resource roleAssignment 'Microsoft.Authorization/roleAssignments@2020-04-01-preview' = [for roleDefinitionId in roleDefinitionIds: {
name: guid(roleDefinitionId, resourceGroup().id)
scope: resourceGroup()
properties: {
description: roleAssignmentDescription
principalId: principalId
roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', roleDefinitionId)
principalType: 'ServicePrincipal'
}
}]
这将返回可怕的“不允许更新租户ID、应用程序ID、主体ID和作用域。(Code:RoleAssignmentUpdateNotPermitted)”错误,这通常意味着在这个地方有孤立的角色分配,但我看不到任何。我错过了什么?
1条答案
按热度按时间ne5o7dgx1#
“不允许更新租户ID、应用程序ID、主体ID和作用域。(Code:RoleAssignmentUpdateNotPermitted)”错误:-
在大多数情况下,此错误的原因可能是名称冲突。将角色分配的名称(只不过是一个
GUID
)更改为以前未用于部署角色分配的值。参考博客@杰森Masten & github问题的相关信息。
验证资源名称的唯一性范围。为uniqueString()函数使用适当的种子值,以确保可以跨Azure资源组和订阅重用Bicep文件,如MSDoc中所示。
在检查了上述内容之后,我尝试在我的环境中部署它,并进行了上述更改,并且能够成功部署,如图所示。
Module.bicep
:Identity.bicep
:你也可以参考@Richard的SO来解决类似的问题。