Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Zasób rozszerzenia to zasób, który modyfikuje inny zasób. Można na przykład przypisać rolę do zasobu. Przypisanie roli jest typem zasobu rozszerzenia.
Aby uzyskać pełną listę typów zasobów rozszerzeń, zobacz Typy zasobów, które rozszerzają możliwości innych zasobów.
W tym artykule pokazano, jak ustawić zakres dla typu zasobu rozszerzenia podczas wdrażania z plikiem Bicep. Opisuje on właściwość zakresu, która jest dostępna dla zasobów rozszerzenia podczas stosowania do zasobu.
Uwaga
Właściwość zakresu jest dostępna tylko dla typów zasobów rozszerzeń. Aby określić inny zakres dla typu zasobu, który nie jest typem rozszerzenia, użyj modułu.
Stosowanie w zakresie wdrożenia
Aby zastosować typ zasobu rozszerzenia w docelowym zakresie wdrażania, dodaj zasób do szablonu tak, jak w przypadku dowolnego innego typu zasobu. Dostępne zakresy to grupa zasobów, subskrypcja, grupa zarządzania i dzierżawa. Zakres wdrożenia musi obsługiwać typ zasobu.
Po wdrożeniu w grupie zasobów poniższy szablon dodaje blokadę do tej grupy zasobów.
resource createRgLock 'Microsoft.Authorization/locks@2020-05-01' = {
name: 'rgLock'
properties: {
level: 'CanNotDelete'
notes: 'Resource group should not be deleted.'
}
}
W następnym przykładzie przypisano rolę do subskrypcji, do niej wdrożonej.
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
}
}
Zastosuj do zasobu
Aby zastosować zasób rozszerzenia do zasobu, użyj właściwości scope. We właściwości zakresu odwołaj się do zasobu, do którego dodajesz rozszerzenie. Odwołujesz się do zasobu, podając symboliczną nazwę zasobu. Właściwość zakresu jest właściwością główną dla typu zasobu rozszerzenia.
Poniższy przykład tworzy konto magazynowe i stosuje do niego rolę.
@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
}
Zasób rozszerzenia można zastosować do istniejącego zasobu. W poniższym przykładzie dodano blokadę do istniejącego konta magazynu.
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.'
}
}
Te same wymagania dotyczą zasobów rozszerzeń co inny zasób w przypadku określania zakresu innego niż docelowy zakres wdrożenia. Aby dowiedzieć się więcej o wdrażaniu w więcej niż jednym zakresie, zobacz:
Właściwości resourceGroup i subscription są dozwolone tylko w modułach. Te właściwości nie są dozwolone dla poszczególnych zasobów. Użyj modułów, jeśli chcesz wdrożyć zasób rozszerzenia z zakresem ustawionym na zasób w innej grupie zasobów.
W poniższym przykładzie pokazano, jak zastosować blokadę konta magazynowego, które znajduje się w innej grupie zasobów.
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.' } }
Następne kroki
Aby uzyskać pełną listę typów zasobów rozszerzeń, zobacz Typy zasobów, które rozszerzają możliwości innych zasobów.