Nastavení oboru pro prostředky rozšíření v bicep

Prostředek rozšíření je prostředek, který upravuje jiný prostředek. Například můžete přiřadit roli k prostředku. Přiřazení role je typ prostředku rozšíření.

Úplný seznam typů prostředků rozšíření najdete v tématu typy prostředků, které rozšiřuje možnosti jiných prostředků.

Tento článek popisuje, jak nastavit obor pro typ prostředku rozšíření při nasazení se souborem bicep. Popisuje vlastnost oboru, která je k dispozici pro prostředky rozšíření při použití na prostředek.

Poznámka

Vlastnost oboru je dostupná pouze pro typy prostředků rozšíření. Pokud chcete zadat jiný obor pro typ prostředku, který není typem rozšíření, použijte modul.

Microsoft Learn

Další informace o prostředcích rozšíření a o praktických návodech najdete v tématu nasazení podřízených prostředků a prostředků rozšíření pomocí bicep na Microsoft Learn.

Použít v oboru nasazení

Pokud chcete použít typ prostředku rozšíření v cílovém oboru nasazení, přidejte prostředek do šablony stejně jako jakýkoli jiný typ prostředku. Dostupné obory jsou skupiny prostředků, předplatné, skupina pro správua tenant. Rozsah nasazení musí podporovat typ prostředku.

Při nasazení do skupiny prostředků přidá následující šablona k této skupině prostředků zámek.

resource createRgLock 'Microsoft.Authorization/locks@2016-09-01' = {
  name: 'rgLock'
  properties: {
    level: 'CanNotDelete'
    notes: 'Resource group should not be deleted.'
  }
}

V dalším příkladu se přiřadí role k předplatnému, na které je nasazená.

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
  }
}

Použít u prostředku

Chcete-li použít prostředek rozšíření na prostředek, použijte scope vlastnost. Ve vlastnosti Scope přidejte odkaz na prostředek, ke kterému chcete rozšíření přidat. Na prostředek odkazujete zadáním symbolického názvu prostředku. Vlastnost Scope je kořenová vlastnost pro typ prostředku rozšíření.

Následující příklad vytvoří účet úložiště a použije pro něj roli.

@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
}

Prostředek rozšíření můžete použít pro existující prostředek. V následujícím příkladu se přidá zámek k existujícímu účtu úložiště.

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.'
  }
}

Stejné požadavky platí pro prostředky rozšíření jako jiný prostředek, pokud cílíte na rozsah, který se liší od cílového rozsahu nasazení. Další informace o nasazení do více než jednoho oboru naleznete zde:

Další kroky

Úplný seznam typů prostředků rozšíření najdete v tématu typy prostředků, které rozšiřuje možnosti jiných prostředků.