Bıcep 'de uzantı kaynakları için kapsam ayarla
Uzantı kaynağı, başka bir kaynağı değiştiren bir kaynaktır. Örneğin, bir kaynağa bir 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, bir Bıcep dosyası ile dağıtıldığında bir uzantı kaynak türü kapsamının nasıl ayarlanacağı gösterilmektedir. Bir kaynağa uygulanırken uzantı kaynakları için kullanılabilir kapsam özelliğini açıklar.
Not
Scope özelliği yalnızca uzantı kaynak türlerinde kullanılabilir. Uzantı türü olmayan bir kaynak türü için farklı bir kapsam belirtmek üzere bir Modülkullanın.
Microsoft Learn
Uzantı kaynakları hakkında daha fazla bilgi edinmek ve uygulamalı yönergeler için bkz. Microsoft Learn bıcep 'yi kullanarak alt ve uzantı kaynaklarını dağıtma .
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ürlerine göre yaptığınız şekilde şablonunuza ekleyin. Kullanılabilir kapsamlar kaynak grubu, abonelik, Yönetim grubuve kiracıyaait. 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@2016-09-01' = {
name: 'rgLock'
properties: {
level: 'CanNotDelete'
notes: 'Resource group should not be deleted.'
}
}
Sonraki örnek, dağıtıldığı 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
@description('A new GUID used to identify the role assignment')
param roleNameGuid string = newGuid()
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@2020-04-01-preview' = {
name: roleNameGuid
properties: {
roleDefinitionId: role[builtInRoleType]
principalId: principalId
}
}
Kaynağa uygula
Bir kaynağa uzantı kaynağı uygulamak için scope özelliğini kullanın. Scope özelliğinde, uzantısı eklemekte olduğunuz kaynağa başvurun. Kaynak için simgesel ad sağlayarak kaynağa başvurabilirsiniz. Scope ö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
@description('A new GUID used to identify the role assignment')
param roleNameGuid string = newGuid()
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@2019-04-01' = {
name: uniqueStorageName
location: location
sku: {
name: 'Standard_LRS'
}
kind: 'Storage'
properties: {}
}
resource roleAssignStorage 'Microsoft.Authorization/roleAssignments@2020-04-01-preview' = {
name: roleNameGuid
properties: {
roleDefinitionId: role[builtInRoleType]
principalId: principalId
}
scope: demoStorageAcct
}
Varolan bir kaynağa uzantı kaynağı uygulayabilirsiniz. Aşağıdaki örnek, var olan bir depolama hesabına bir kilit ekler.
resource demoStorageAcct 'Microsoft.Storage/storageAccounts@2021-04-01' existing = {
name: 'examplestore'
}
resource createStorageLock 'Microsoft.Authorization/locks@2016-09-01' = {
name: 'storeLock'
scope: demoStorageAcct
properties: {
level: 'CanNotDelete'
notes: 'Storage account should not be deleted.'
}
}
Aynı gereksinimler, dağıtımın hedef kapsamından farklı bir kapsamı hedeflerken diğer kaynak olarak uzantı kaynakları için de geçerlidir. Birden fazla kapsama dağıtım hakkında bilgi edinmek için bkz.:
Sonraki adımlar
Uzantı kaynak türlerinin tam listesi için bkz. diğer kaynakların özelliklerini genişleten kaynak türleri.