Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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 Tipos de recursos que estendem recursos de outros recursos.
Este artigo mostra como definir o escopo para um tipo de recurso de extensão quando implantado com um arquivo Bicep. Esta descreve a propriedade de escopo que está disponível para recursos de extensão quando aplicada a um recurso.
Observação
A propriedade scope só está disponível para tipos de recursos 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 na esfera de implantação
Para aplicar um tipo de recurso de extensão no escopo de implantação de destino, adicione o recurso ao seu 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 da implantação deve oferecer 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 ela foi 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
}
}
Candidatar-se ao recurso
Para aplicar um recurso de extensão a um recurso, use a scope propriedade. Na propriedade scope, 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 scope é uma propriedade raiz do 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 são aplicáveis aos recursos de extensão que aos 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, consulte:
- Implantações de grupos de recursos
- Implantações de assinatura
- Implantações de grupos de gestão
- Implantações de locatários
As propriedades resourceGroup e subscription só são permitidas em módulos. Essas propriedades não são permitidas em recursos individuais. Use módulos se quiser implantar um recurso de extensão com o escopo definido como 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óximos passos
Para obter uma lista completa dos tipos de recursos de extensão, consulte Tipos de recursos que estendem recursos de outros recursos.