Azure Bicep -不同订阅中的角色分配

plupiseo  于 2023-10-22  发布在  其他
关注(0)|答案(1)|浏览(135)

尝试将托管标识分配给同一租户中单独订阅中的资源组。我可以通过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)”错误,这通常意味着在这个地方有孤立的角色分配,但我看不到任何。我错过了什么?

ne5o7dgx

ne5o7dgx1#

“不允许更新租户ID、应用程序ID、主体ID和作用域。(Code:RoleAssignmentUpdateNotPermitted)”错误:-
在大多数情况下,此错误的原因可能是名称冲突。将角色分配的名称(只不过是一个GUID)更改为以前未用于部署角色分配的值。
参考博客@杰森Masten & github问题的相关信息。
验证资源名称的唯一性范围。为uniqueString()函数使用适当的种子值,以确保可以跨Azure资源组和订阅重用Bicep文件,如MSDoc中所示。
在检查了上述内容之后,我尝试在我的环境中部署它,并进行了上述更改,并且能够成功部署,如图所示。
Module.bicep

targetScope = 'subscription'
param location string = resourceGroup().location
module rgRoleAssignment 'iden.bicep' = {
  scope: resourceGroup('subscription_ID','resourceGroup')
  name: 'qwerty123'
  params: {
    principalId: useridentiy.properties.principalId
    roleDefinitionIds: ['7f951dda-4ed3-4680-a7ca-43fe172d538d']
  }
}

Identity.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(resourceGroup().id, principalId, roleDefinitionId)
    scope: resourceGroup()
    properties: {
        description: roleAssignmentDescription
        principalId: principalId
        roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', roleDefinitionId)
        principalType: 'ServicePrincipal'
    }
}]
  • 部署成功:*

你也可以参考@Richard的SO来解决类似的问题。

相关问题