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.