Ange omfång för tilläggsresurser i Bicep

En tilläggsresurs är en resurs som ändrar en annan resurs. Du kan till exempel tilldela en roll till en resurs. Rolltilldelningen är en tilläggsresurstyp.

En fullständig lista över tilläggsresurstyper finns i Resurstyper som utökar funktionerna för andra resurser.

Den här artikeln visar hur du anger omfånget för en tilläggsresurstyp när den distribueras med en Bicep-fil. Den beskriver omfångsegenskapen som är tillgänglig för tilläggsresurser när den tillämpas på en resurs.

Anteckning

Omfångsegenskapen är bara tillgänglig för tilläggsresurstyper. Om du vill ange ett annat omfång för en resurstyp som inte är en tilläggstyp använder du en modul.

Microsoft Learn

Mer information om tilläggsresurser och praktisk vägledning finns i Distribuera underordnade resurser och tilläggsresurser med hjälp av BicepMicrosoft Learn.

Tillämpa i distributionsomfång

Om du vill tillämpa en tilläggsresurstyp i måldistributionsomfånget lägger du till resursen i mallen på samma sätt som med andra resurstyper. De tillgängliga omfången är resursgrupp, prenumeration, hanteringsgruppoch klientorganisation. Distributionsomfånget måste ha stöd för resurstypen.

När den distribueras till en resursgrupp lägger följande mall till ett lås till den resursgruppen.

resource createRgLock 'Microsoft.Authorization/locks@2016-09-01' = {
  name: 'rgLock'
  properties: {
    level: 'CanNotDelete'
    notes: 'Resource group should not be deleted.'
  }
}

I nästa exempel tilldelas en roll till den prenumeration som den distribueras till.

targetScope = 'subscription'

@description('The principal to assign the role to')
param principalId string

@allowed([
  'Owner'
  'Contributor'
  'Reader'
])
@description('Built-in role to assign')
param builtInRoleType string

@description('A new GUID used to identify the role assignment')
param roleNameGuid string = newGuid()

var role = {
  Owner: '/subscriptions/${subscription().subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635'
  Contributor: '/subscriptions/${subscription().subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c'
  Reader: '/subscriptions/${subscription().subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7'
}

resource roleAssignSub 'Microsoft.Authorization/roleAssignments@2020-04-01-preview' = {
  name: roleNameGuid
  properties: {
    roleDefinitionId: role[builtInRoleType]
    principalId: principalId
  }
}

Tillämpa på resurs

Om du vill tillämpa en tilläggsresurs på en resurs använder du scope egenskapen . I omfångsegenskapen refererar du till den resurs som du lägger till tillägget till. Du refererar till resursen genom att ange det symboliska namnet för resursen. Omfångsegenskapen är en rotegenskap för tilläggsresurstypen.

I följande exempel skapas ett lagringskonto och en roll tillämpas på det.

@description('The principal to assign the role to')
param principalId string

@allowed([
  'Owner'
  'Contributor'
  'Reader'
])
@description('Built-in role to assign')
param builtInRoleType string

@description('A new GUID used to identify the role assignment')
param roleNameGuid string = newGuid()
param location string = resourceGroup().location

var role = {
  Owner: '/subscriptions/${subscription().subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635'
  Contributor: '/subscriptions/${subscription().subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c'
  Reader: '/subscriptions/${subscription().subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7'
}
var uniqueStorageName = 'storage${uniqueString(resourceGroup().id)}'

resource demoStorageAcct 'Microsoft.Storage/storageAccounts@2019-04-01' = {
  name: uniqueStorageName
  location: location
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'Storage'
  properties: {}
}

resource roleAssignStorage 'Microsoft.Authorization/roleAssignments@2020-04-01-preview' = {
  name: roleNameGuid
  properties: {
    roleDefinitionId: role[builtInRoleType]
    principalId: principalId
  }
  scope: demoStorageAcct
}

Du kan tillämpa en tilläggsresurs på en befintlig resurs. I följande exempel läggs ett lås till i ett befintligt lagringskonto.

resource demoStorageAcct 'Microsoft.Storage/storageAccounts@2021-04-01' existing = {
  name: 'examplestore'
}

resource createStorageLock 'Microsoft.Authorization/locks@2016-09-01' = {
  name: 'storeLock'
  scope: demoStorageAcct
  properties: {
    level: 'CanNotDelete'
    notes: 'Storage account should not be deleted.'
  }
}

Samma krav gäller för tillägg av resurser som andra resurser när du riktar in dig på ett annat omfång än målomfånget för distributionen. Mer information om hur du distribuerar till mer än ett omfång finns i:

Nästa steg

En fullständig lista över tilläggsresurstyper finns i Resurstyper som utökar funktionerna för andra resurser.