Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Ресурс расширения — это ресурс, который изменяет другой ресурс. Например, можно назначить роль ресурсу. Назначение роли — это тип ресурса расширения.
Полный список типов ресурсов расширения см. в разделе "Типы ресурсов", расширяющие возможности других ресурсов.
В этой статье показано, как задать область охвата для типа ресурса расширения при развертывании с помощью Bicep-файла. В нем описывается свойство области, доступное для ресурсов расширения при применении к ресурсу.
Примечание.
Свойство области доступно только для типов ресурсов расширения. Чтобы указать другую область для типа ресурса, который не является типом расширения, используйте модуль.
Применение в области развертывания
Чтобы применить тип ресурса расширения в целевой области развертывания, добавьте ресурс в шаблон, как и любой другой тип ресурса. Доступные области — это группа ресурсов, подписка, группа управления и клиент. Область развертывания должна поддерживать тип ресурса.
При развертывании в группе ресурсов следующий шаблон добавляет блокировку в группу ресурсов.
resource createRgLock 'Microsoft.Authorization/locks@2020-05-01' = {
name: 'rgLock'
properties: {
level: 'CanNotDelete'
notes: 'Resource group should not be deleted.'
}
}
В следующем примере роль назначается подписке, в которую она развернута.
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
}
}
Применить к ресурсу
Чтобы применить ресурс расширения к ресурсу, используйте свойство scope. В свойстве области укажите ресурс, в который добавляется расширение. Вы ссылаетесь на ресурс, указав символическое имя ресурса. Свойство области является корневым свойством для типа ресурса расширения.
В следующем примере создается учетная запись хранения и применяется к ней роль.
@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
}
Вы можете применить ресурс расширения к существующему ресурсу. В следующем примере добавляется блокировка в существующую учетную запись хранения.
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.'
}
}
Те же требования применяются к ресурсам расширения, как и к другому ресурсу при выборе области, отличной от целевой области развертывания. Чтобы узнать больше о развертывании в нескольких областях, см. в следующей статье.
- Развертывания групп ресурсов
- Развертывания подписок
- Развертывания групп управления
- Развертывания арендаторов
Свойства resourceGroup и подписки разрешены только в модулях. Эти свойства запрещены для отдельных ресурсов. Используйте модули, если вы хотите развернуть ресурс расширения с областью, заданной для ресурса в другой группе ресурсов.
В следующем примере показано, как применить блокировку к учетной записи хранения, которая находится в другой группе ресурсов.
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.' } }
Дальнейшие действия
Полный список типов ресурсов расширения см. в разделе "Типы ресурсов", расширяющие возможности других ресурсов.