Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Um recurso de extensão é um recurso que modifica outro recurso. Por exemplo, você pode atribuir uma função a um recurso. A atribuição de função é um tipo de recurso de extensão.
Para obter uma lista completa dos tipos de recursos de extensão, consulte os tipos de recursos que estendem os recursos de outros recursos.
Este artigo mostra como definir o escopo de um tipo de recurso de extensão implantado com um arquivo Bicep. Ele descreve a propriedade de escopo que está disponível para recursos de extensão ao ser aplicada a um recurso.
Observação
A propriedade de escopo está disponível apenas para tipos de recurso de extensão. Para especificar um escopo diferente para um tipo de recurso que não seja um tipo de extensão, use um módulo.
Aplicar no escopo da implantação
Para aplicar um tipo de recurso de extensão no escopo de implantação de destino, adicione o recurso ao modelo como faria com qualquer outro tipo de recurso. Os escopos disponíveis são grupo de recursos, assinatura, grupo de gerenciamento e locatário. O escopo de implantação deve dar suporte ao tipo de recurso.
Quando implantado em um grupo de recursos, o modelo a seguir adiciona um bloqueio a esse grupo de recursos.
resource createRgLock 'Microsoft.Authorization/locks@2020-05-01' = {
name: 'rgLock'
properties: {
level: 'CanNotDelete'
notes: 'Resource group should not be deleted.'
}
}
O próximo exemplo atribui uma função à assinatura na qual está implantada.
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
}
}
Aplicar ao recurso
Para aplicar um recurso de extensão a um recurso, use a scope propriedade. Na propriedade de escopo, faça referência ao recurso ao qual você está adicionando a extensão. Você faz referência ao recurso fornecendo o nome simbólico para o recurso. A propriedade de escopo é uma propriedade raiz para o tipo de recurso de extensão.
O exemplo a seguir cria uma conta de armazenamento e aplica uma função a ela.
@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
}
Você pode aplicar um recurso de extensão a um recurso existente. O exemplo a seguir adiciona um bloqueio a uma conta de armazenamento existente.
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.'
}
}
Os mesmos requisitos se aplicam aos recursos de extensão assim como a outros recursos quando se direciona um escopo diferente do escopo de destino da implantação. Para saber mais sobre a implantação em mais de um escopo, confira:
- Implantações do grupo de recursos
- Implantações de subscrição
- Implantações de grupo de gerenciamento
- Implantações de locatário
As propriedades resourceGroup e subscription só são permitidas em módulos. Essas propriedades não são permitidas nos recursos individuais. Use módulos se quiser implantar um recurso de extensão com o escopo definido para um recurso em um grupo de recursos diferente.
O exemplo a seguir mostra como aplicar um bloqueio em uma conta de armazenamento que reside em um grupo de recursos diferente.
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.' } }
Próximas etapas
Para obter uma lista completa dos tipos de recursos de extensão, consulte os tipos de recursos que estendem os recursos de outros recursos.