Bővítményerőforrások hatókörének beállítása a Bicepben

A bővítményerőforrás egy másik erőforrást módosító erőforrás. Hozzárendelhet például egy szerepkört egy erőforráshoz. A szerepkör-hozzárendelés egy bővítmény erőforrástípusa.

A bővítmény típusú erőforrástípusok teljes listáját lásd: Más erőforrások képességeit kiterjesztő erőforrástípusok.

Ez a cikk bemutatja, hogyan állíthatja be a bővítmény erőforrástípusának hatókörét egy Bicep-fájllal való üzembe helyezéskor. Ez a cikk azt a hatókörtulajdonságot ismerteti, amely a bővítményerőforrásokhoz érhető el egy erőforrásra való alkalmazáskor.

Megjegyzés

A scope tulajdonság csak bővítmény típusú erőforrástípusokhoz érhető el. Ha más hatókört szeretne megadni egy olyan erőforrástípushoz, amely nem bővítménytípus, használjon modult.

Képzési források

Ha lépésről lépésre szeretne többet megtudni a bővítményerőforrásokról, olvassa el a Gyermek- és bővítményerőforrások üzembe helyezése a Bicep használatával című témakört.

Alkalmazás üzembe helyezési hatókörben

Ha bővítmény típusú erőforrást szeretne alkalmazni a cél üzembehelyezési hatókörben, adja hozzá az erőforrást a sablonhoz, ahogyan bármely más erőforrástípus esetében tenné. Az elérhető hatókörök az erőforráscsoport, az előfizetés, a felügyeleti csoport és a bérlő. Az üzembehelyezési hatókörnek támogatnia kell az erőforrástípust.

Az erőforráscsoportban való üzembe helyezéskor a következő sablon zárolást ad hozzá az erőforráscsoporthoz.

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

A következő példa hozzárendel egy szerepkört ahhoz az előfizetéshez, amelyhez üzembe van helyezve.

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@2020-04-01-preview' = {
  name: guid(subscription().id, principalId, role[builtInRoleType])
  properties: {
    roleDefinitionId: role[builtInRoleType]
    principalId: principalId
  }
}

Alkalmazás erőforrásra

Ha bővítményerőforrást szeretne alkalmazni egy erőforrásra, használja a tulajdonságot scope . A scope tulajdonságban hivatkozzon arra az erőforrásra, amelyhez hozzáadja a bővítményt. Az erőforrásra úgy hivatkozhat, hogy megadja az erőforrás szimbolikus nevét. A scope tulajdonság a bővítmény erőforrástípusának gyökértulajdonsága.

Az alábbi példa létrehoz egy tárfiókot, és egy szerepkört alkalmaz rá.

@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@2019-04-01' = {
  name: uniqueStorageName
  location: location
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'Storage'
  properties: {}
}

resource roleAssignStorage 'Microsoft.Authorization/roleAssignments@2020-04-01-preview' = {
  name: guid(demoStorageAcct.id, principalId, role[builtInRoleType])
  properties: {
    roleDefinitionId: role[builtInRoleType]
    principalId: principalId
  }
  scope: demoStorageAcct
}

Bővítményerőforrást alkalmazhat egy meglévő erőforrásra. Az alábbi példa egy zárolást ad hozzá egy meglévő tárfiókhoz.

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

Ugyanezek a követelmények vonatkoznak a bővítményerőforrásokra, mint a többi erőforrásra, ha az üzemelő példány célhatókörétől eltérő hatókört céloz meg. Ha többet szeretne megtudni az üzembe helyezésről több hatókörben, tekintse meg a következő témakört:

A resourceGroup és az előfizetés tulajdonságai csak a modulokon engedélyezettek. Ezek a tulajdonságok nem engedélyezettek az egyes erőforrásokon. Használjon modulokat, ha olyan bővítményerőforrást szeretne üzembe helyezni, amelynek hatóköre egy másik erőforráscsoportban lévő erőforrásra van beállítva.

Az alábbi példa bemutatja, hogyan alkalmazhat zárolást egy másik erőforráscsoportban található tárfiókra.

  • 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@2021-09-01' existing = {
      name: storageAccountName
    }
    
    resource storeLock 'Microsoft.Authorization/locks@2017-04-01' = {
      scope: storage
      name: 'storeLock'
      properties: {
        level: 'CanNotDelete'
        notes: 'Storage account should not be deleted.'
      }
    }
    

Következő lépések

A bővítmény típusú erőforrástípusok teljes listáját lásd: Más erőforrások képességeit kiterjesztő erőforrástípusok.