Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Eine Erweiterungsressource ist eine Ressource, die eine andere Ressource ändert. Sie können beispielsweise einer Ressource eine Rolle zuweisen. Die Rollenzuweisung ist ein Erweiterungsressourcentyp.
Eine vollständige Liste der Erweiterungsressourcentypen finden Sie unter Ressourcentypen, die Funktionen anderer Ressourcen erweitern.
In diesem Artikel wird gezeigt, wie Sie den Bereich für einen Erweiterungsressourcentyp festlegen, wenn dieser mit einer Bicep-Datei bereitgestellt wird. Er beschreibt die Bereichseigenschaft, die für Erweiterungsressourcen beim Anwenden auf eine Ressource verfügbar ist.
Hinweis
Die Bereichseigenschaft ist nur für Erweiterungsressourcentypen verfügbar. Verwenden Sie ein Modul, um einen anderen Bereich für einen Ressourcentyp anzugeben, der kein Erweiterungstyp ist.
Anwenden im Bereitstellungsbereich
Um einen Erweiterungsressourcentyp auf den Zielbereitstellungsbereich anzuwenden, fügen Sie die Ressource ihrer Vorlage wie bei jedem anderen Ressourcentyp hinzu. Die verfügbaren Bereiche sind Ressourcengruppe, Abonnement, Verwaltungsgruppe und Mandant. Der Bereitstellungsbereich muss den Ressourcentyp unterstützen.
Bei der Bereitstellung in einer Ressourcengruppe fügt die folgende Vorlage dieser Ressourcengruppe eine Sperre hinzu.
resource createRgLock 'Microsoft.Authorization/locks@2020-05-01' = {
name: 'rgLock'
properties: {
level: 'CanNotDelete'
notes: 'Resource group should not be deleted.'
}
}
Im nächsten Beispiel wird dem Abonnement, für das es bereitgestellt wird, eine Rolle zugewiesen.
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
}
}
Auf eine Ressource anwenden
Verwenden Sie die scope Eigenschaft, um eine Erweiterungsressource auf eine Ressource anzuwenden. Verweisen Sie in der Bereichseigenschaft auf die Ressource, der Sie die Erweiterung hinzufügen. Sie verweisen auf die Ressource, indem Sie den symbolischen Namen für die Ressource angeben. Die Bereichseigenschaft ist eine Stammeigenschaft für den Erweiterungsressourcentyp.
Im folgenden Beispiel wird ein Speicherkonto erstellt und eine Rolle darauf angewendet.
@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@2025-06-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
}
Sie können eine Erweiterungsressource auf eine vorhandene Ressource anwenden. Im folgenden Beispiel wird einem vorhandenen Speicherkonto eine Sperre hinzugefügt.
resource demoStorageAcct 'Microsoft.Storage/storageAccounts@2025-06-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.'
}
}
Die gleichen Anforderungen gelten für Erweiterungsressourcen wie andere Ressourcen, wenn sie auf einen Bereich abzielen, der sich von dem Zielbereich der Bereitstellung unterscheidet. Weitere Informationen zur Bereitstellung in mehr als einem Bereich finden Sie unter:
- Ressourcengruppen-Bereitstellungen
- Abonnementbereitstellungen
- Bereitstellungen von Managementgruppen
- Mandantenbereitstellungen
Die Eigenschaften "resourceGroup" und "subscription" sind nur für Module zulässig. Diese Eigenschaften sind für einzelne Ressourcen nicht zulässig. Verwenden Sie Module, wenn Sie eine Erweiterungsressource bereitstellen möchten, deren Bereich auf eine Ressource in einer anderen Ressourcengruppe festgelegt ist.
Das folgende Beispiel zeigt, wie Sie eine Sperre auf ein Speicherkonto anwenden, das sich in einer anderen Ressourcengruppe befindet.
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-05-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ächste Schritte
Eine vollständige Liste der Erweiterungsressourcentypen finden Sie unter Ressourcentypen, die Funktionen anderer Ressourcen erweitern.