Bicep'te uzantı kaynaklarının kapsamını ayarlama
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.
Not
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 bir modül kullanın.
Eğitim kaynakları
Adım adım yönergeler aracılığıyla uzantı kaynakları hakkında bilgi edinmek isterseniz bkz. Bicep kullanarak alt ve uzantı kaynaklarını dağıtma.
Dağıtım kapsamında uygula
Hedef dağıtım kapsamında bir uzantı kaynak türü uygulamak için, diğer kaynak türlerinde yaptığınız gibi kaynağı ş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 uygula
Bir kaynağa uzantı kaynağı uygulamak için özelliğini kullanın scope
. kapsam özelliğinde uzantıyı eklediğiniz kaynağa başvurun. Kaynağın sembolik adını sağlayarak kaynağa başvurabilirsiniz. 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@2023-04-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 depolama hesabına kilit ekler.
resource demoStorageAcct 'Microsoft.Storage/storageAccounts@2023-04-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.'
}
}
Dağıtımın hedef kapsamından farklı bir kapsamı hedeflerken diğer kaynakla aynı gereksinimler uzantı kaynakları için de 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 tek tek kaynaklarda 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-04-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.