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 funktioner 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 den omfångsegenskap som är tillgänglig för tilläggsresurser när den tillämpas på en resurs.
Anteckning
Omfångsegenskapen är endast 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.
Träningsresurser
Om du hellre vill lära dig mer om tilläggsresurser via stegvis vägledning kan du läsa Distribuera underordnade resurser och tilläggsresurser med hjälp av Bicep.
Använd i distributionsomfånget
Om du vill använda 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, hanteringsgrupp och 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@2020-05-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
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@2022-04-01' = {
name: guid(subscription().id, principalId, role[builtInRoleType])
properties: {
roleDefinitionId: role[builtInRoleType]
principalId: principalId
}
}
Använd för 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 i. 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
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@2023-04-01' = {
name: uniqueStorageName
location: location
sku: {
name: 'Standard_LRS'
}
kind: 'Storage'
properties: {}
}
resource roleAssignStorage 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
name: guid(demoStorageAcct.id, principalId, role[builtInRoleType])
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@2023-04-01' existing = {
name: 'examplestore'
}
resource createStorageLock 'Microsoft.Authorization/locks@2020-05-01' = {
name: 'storeLock'
scope: demoStorageAcct
properties: {
level: 'CanNotDelete'
notes: 'Storage account should not be deleted.'
}
}
Samma krav gäller för tilläggsresurser som andra resurser när du riktar in dig på ett omfång som skiljer sig från distributionens målomfång. Mer information om hur du distribuerar till mer än ett omfång finns i:
- Distributioner av resursgrupper
- Prenumerationsdistributioner
- Distributioner av hanteringsgrupp
- Klientdistributioner
Egenskaperna resourceGroup och prenumeration tillåts endast i moduler. Dessa egenskaper är inte tillåtna för enskilda resurser. Använd moduler om du vill distribuera en tilläggsresurs med omfånget inställt på en resurs i en annan resursgrupp.
I följande exempel visas hur du tillämpar ett lås på ett lagringskonto som finns i en annan resursgrupp.
main.bicep:
param resourceGroup2Name string param storageAccountName string module applyStoreLock './storageLock.bicep' = { name: 'addStorageLock' scope: resourceGroup(resourceGroup2Name) params: { storageAccountName: storageAccountName } }
storageLock.bicep:
param storageAccountName string resource storage 'Microsoft.Storage/storageAccounts@2023-04-01' existing = { name: storageAccountName } resource storeLock 'Microsoft.Authorization/locks@2020-05-01' = { scope: storage name: 'storeLock' properties: { level: 'CanNotDelete' notes: 'Storage account should not be deleted.' } }
Nästa steg
En fullständig lista över tilläggsresurstyper finns i Resurstyper som utökar funktioner för andra resurser.