Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Un recurso de extensión es un recurso que modifica otro recurso. Por ejemplo, puede asignar un rol a un recurso. La asignación de roles es un tipo de recurso de extensión.
Para obtener una lista completa de los tipos de recursos de extensión, consulte Tipos de recursos que amplían las funcionalidades de otros recursos.
En este artículo se muestra cómo establecer el ámbito de un tipo de recurso de extensión cuando se implementa con un archivo de Bicep. Describe la propiedad de ámbito que está disponible para los recursos de extensión cuando se aplican a un recurso.
Nota:
La propiedad scope solo está disponible para los tipos de recursos de extensión. Para especificar un ámbito diferente para un tipo de recurso que no sea un tipo de extensión, use un módulo.
Aplicación en el ámbito de implementación
Para aplicar un tipo de recurso de extensión en el ámbito de implementación de destino, agregue el recurso a la plantilla como lo haría con cualquier otro tipo de recurso. Los ámbitos disponibles son el grupo de recursos, la suscripción, el grupo de administración y el inquilino. El ámbito de implementación debe admitir el tipo de recurso.
Cuando se implementa en un grupo de recursos, la plantilla siguiente agrega un bloqueo a ese grupo de recursos.
resource createRgLock 'Microsoft.Authorization/locks@2020-05-01' = {
name: 'rgLock'
properties: {
level: 'CanNotDelete'
notes: 'Resource group should not be deleted.'
}
}
En el ejemplo siguiente se asigna un rol a la suscripción en la que se implementa.
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
}
}
Aplicación al recurso
Para aplicar un recurso de extensión a un recurso, use la scope propiedad . En la propiedad scope, haga referencia al recurso al que va a agregar la extensión. Para hacer referencia al recurso, proporcione el nombre simbólico del recurso. La propiedad "scope" es una propiedad raíz del tipo de recurso de extensión.
En el ejemplo siguiente se crea una cuenta de almacenamiento y se aplica un rol a ella.
@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
}
Puede aplicar un recurso de extensión a un recurso existente. En el ejemplo siguiente se agrega un bloqueo a una cuenta de almacenamiento 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.'
}
}
Los mismos requisitos se aplican a los recursos de extensión que otros recursos cuando tienen como destino un ámbito diferente del ámbito de destino de la implementación. Para obtener información sobre la implementación en más de un ámbito, consulte:
- Implementaciones de grupos de recursos
- Implementaciones de suscripciones
- Implementaciones de grupos de administración
- Implementaciones de inquilinos
Las propiedades resourceGroup y subscription solo se permiten en los módulos. Estas propiedades técnicas no se permiten en recursos individuales. Use módulos si desea implementar un recurso de extensión con el ámbito establecido en un recurso de otro grupo de recursos.
En el ejemplo siguiente se muestra cómo aplicar un bloqueo en una cuenta de almacenamiento que reside en un 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.' } }
Pasos siguientes
Para obtener una lista completa de los tipos de recursos de extensión, consulte Tipos de recursos que amplían las funcionalidades de otros recursos.