Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Uzantı kaynağı, başka bir kaynağı değiştiren bir kaynaktır. Örneğin, bir kaynağa rol atayabilirsiniz. Rol ataması bir uzantı kaynak türüdür.
Uzantı kaynak türlerinin tam listesi için bkz. Diğer kaynakların özelliklerini genişleten kaynak türleri.
Bu makalede, Bicep dosyasıyla dağıtıldığında uzantı kaynak türünün kapsamının nasıl ayarlanacağı gösterilmektedir. Bir kaynağa uygulanırken uzantı kaynakları için kullanılabilen kapsam özelliğini açıklar.
Uyarı
Kapsam özelliği yalnızca uzantı kaynak türleri için kullanılabilir. Uzantı türü olmayan bir kaynak türü için farklı bir kapsam belirtmek için modül kullanın.
Dağıtım kapsamına uygula
Hedef dağıtım kapsamında bir uzantı kaynak türü uygulamak için, kaynağı diğer kaynak türlerinde olduğu gibi şablonunuza ekleyin. Kullanılabilir kapsamlar kaynak grubu, abonelik, yönetim grubu ve kiracıdır. Dağıtım kapsamı kaynak türünü desteklemelidir.
Bir kaynak grubuna dağıtıldığında, aşağıdaki şablon bu kaynak grubuna bir kilit ekler.
resource createRgLock 'Microsoft.Authorization/locks@2020-05-01' = {
name: 'rgLock'
properties: {
level: 'CanNotDelete'
notes: 'Resource group should not be deleted.'
}
}
Sonraki örnek, dağıtılacağı aboneliğe bir rol atar.
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
}
}
Kaynağa başvur
Bir kaynağa uzantıyı uygulamak için scope özelliğini kullanın. kapsam özelliğinde uzantıyı eklediğiniz kaynağa başvurun. Kaynağın sembolik adını sağlayarak kaynağa başvurursunuz. Kapsam özelliği, uzantı kaynak türü için bir kök özelliktir.
Aşağıdaki örnek bir depolama hesabı oluşturur ve buna bir rol uygular.
@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
}
Var olan bir kaynağa uzantı kaynağı uygulayabilirsiniz. Aşağıdaki örnek, mevcut bir depolama hesabına kilit ekler.
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.'
}
}
Ayrıca, bir eklenti kaynağını başka bir uzantı kaynağına da uygulayarak bu scope özelliği o uzantı kaynağının sembolik adı olarak ayarlayabilirsiniz. Aşağıdaki örnek, mevcut bir rol atamasına kilit uygular.
resource existingRoleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' existing = {
name: '00000000-0000-0000-0000-000000000000'
}
resource roleAssignmentLock 'Microsoft.Authorization/locks@2020-05-01' = {
name: 'roleAssignmentLock'
scope: existingRoleAssignment
properties: {
level: 'CanNotDelete'
notes: 'Role assignment should not be deleted.'
}
}
Herhangi bir kaynak bu scope özelliği kullandığında, Bicep kapsam için tam nitelikli kaynak kimliğini oluşturur. Bu, derlenmiş ARM şablonunun , tam nitelikli bir kaynak kimliğini ilk argüman olarak gerektiren kapsamı doğru extensionResourceIdşekilde çözmesini sağlar. Bu davranış, genişletme kaynakları ve bu scope özelliği kullanan diğer tüm kaynak türleri için geçerlidir. Ayrıca, daha önce desteklenmeyen dağıtım senaryolarını da mümkün kılar; örneğin abonelik veya kaynak grubu gibi daha düşük dağıtım alanlarından kiracı düzeyindeki kaynakların dağıtımı gibi.
Dağıtım için hedeflenen kapsamdan farklı bir kapsam hedef alındığında, uzantı kaynakları ve diğer kaynaklar ile aynı gereksinimler geçerlidir. Birden fazla kapsama dağıtma hakkında bilgi edinmek için bkz:
resourceGroup ve abonelik özelliklerine yalnızca modüllerde izin verilir. Bu özelliklere her bir kaynakta izin verilmez. Kapsamı farklı bir kaynak grubundaki bir kaynağa ayarlanmış bir uzantı kaynağı dağıtmak istiyorsanız modülleri kullanın.
Aşağıdaki örnekte, farklı bir kaynak grubunda bulunan bir depolama hesabına nasıl kilit uygulanacağı gösterilmektedir.
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.' } }
Sonraki adımlar
Uzantı kaynak türlerinin tam listesi için bkz. Diğer kaynakların özelliklerini genişleten kaynak türleri.