如何将角色添加到 bicep 格式的资源组?

How can I add roles to a resource group in bicep format?

param rg_la_dev_eastus_name string = 'rg-la-dev-eastus-001'
param rg_la_prod_eastus_name string = 'rg-la-prod-eastus-001'

targetScope = 'subscription'

resource rgLaDev 'Microsoft.Resources/resourceGroups@2020-06-01' = {
  name: rg_la_dev_eastus_name
  location: 'eastus'
}

resource rgLaProd 'Microsoft.Resources/resourceGroups@2020-06-01' = {
  name: rg_la_prod_eastus_name
  location: 'eastus'
}

我可以创建资源组,但我想从这里分配角色。我不想每次都以图形方式进行。

使用此脚本通过 Bicep 分配 RBAC 角色:

resource symbolicname 'Microsoft.Authorization/roleAssignments@2020-04-01-preview' = {
  name: 'string'
  scope: 'string'
  properties: {
    roleDefinitionId: 'string'
    principalId: 'string'
    principalType: 'string'
    canDelegate: bool
    description: 'string'
    condition: 'string'
    conditionVersion: 'string'
  }
}

引用here.

只是添加到@allen-wu 的回复中 - 请记住,您不能在 targetScope = 'subscription' 的模块中使用此资源。您需要在针对您要为其分配权限的资源组的模块中使用它。

因此您需要 3 个文件 - 一个是创建资源组的位置,第二个是放置 roleAssignments 资源的位置。然后,从第一个调用模块:

module rgLaDevPermissions 'devPermissions.bicep' = {
  name: '${deployment().name}-${rgLaDev.name}-permissions'
  scope: rgLaDev
}

module rgLaProdPermissions 'prodPermissions.bicep' = {
  name: '${deployment().name}-${rgLaProd.name}-permissions'
  scope: rgLaProd
}

如果 roleAssignments 的结构相同并且仅在分配给谁方面不同,您当然可以使用模块参数来拥有单个模块文件。

有关详细信息,请参阅此处:https://github.com/Azure/bicep/issues/1388