Mengatur cakupan untuk sumber daya ekstensi di Bicep
Sumber daya ekstensi adalah sumber daya yang memodifikasi sumber daya lain. Misalnya, Anda dapat menetapkan peran ke sumber daya. Penetapan peran adalah jenis sumber daya ekstensi.
Untuk daftar lengkap jenis sumber daya ekstensi, lihat Jenis sumber daya yang memperluas kapabilitas sumber daya lainnya.
Artikel ini menunjukkan cara mengatur cakupan untuk jenis sumber daya ekstensi saat disebarkan dengan file Bicep. Artikel ini menjelaskan properti lingkup yang tersedia untuk sumber daya ekstensi saat diterapkan ke sumber daya.
Catatan
Properti lingkup hanya tersedia untuk jenis sumber daya ekstensi. Untuk menentukan cakupan lain terhadap jenis sumber daya yang bukan jenis ekstensi, gunakan modul.
Sumber daya pelatihan
Jika Anda lebih suka mempelajari sumber daya ekstensi melalui panduan langkah demi langkah, lihat Menyebarkan sumber daya turunan dan ekstensi dengan menggunakan Bicep.
Terapkan pada lingkup penyebaran
Untuk menerapkan jenis sumber daya ekstensi pada lingkup penyebaran target, tambahkan sumber daya ke templat Anda, seperti yang Anda lakukan dengan jenis sumber daya apa pun. Lingkup yang tersedia adalah grup sumber daya, langganan, grup manajemen, dan penyewa. Lingkup penyebaran harus mendukung jenis sumber daya.
Saat digunakan ke grup sumber daya, templat berikut menambahkan kunci ke grup sumber daya tersebut.
resource createRgLock 'Microsoft.Authorization/locks@2020-05-01' = {
name: 'rgLock'
properties: {
level: 'CanNotDelete'
notes: 'Resource group should not be deleted.'
}
}
Contoh berikutnya memberikan peran ke langganan yang menggunakannya.
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
}
}
Menerapkan ke sumber daya
Untuk menerapkan sumber daya ekstensi ke sumber daya, gunakan properti scope
. Di properti lingkup, referensikan sumber daya yang Ekstensinya Anda tambahkan. Anda mereferensikan sumber daya dengan memberikan nama simbolis untuk sumber daya. Properti lingkup adalah properti akar untuk jenis sumber daya ekstensi.
Contoh berikut membuat akun penyimpanan dan menerapkan peran pada penyimpanan.
@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
}
Anda dapat menerapkan sumber daya ekstensi ke sumber daya yang ada. Contoh berikut menambahkan kunci ke akun penyimpanan yang sudah ada.
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.'
}
}
Persyaratan yang sama berlaku untuk sumber daya ekstensi sebagai sumber daya lain ketika menargetkan ruang lingkup yang berbeda dari lingkup target penyebaran. Untuk mempelajari tentang penerapan ke lebih dari satu lingkup, lihat:
Properti resourceGroup dan langganan hanya diizinkan pada modul. Properti ini tidak diizinkan pada sumber daya individual. Gunakan modul jika Anda ingin menyebarkan sumber daya ekstensi dengan cakupan yang diatur ke sumber daya dalam grup sumber daya yang berbeda.
Contoh berikut menunjukkan cara menerapkan kunci pada akun penyimpanan yang berada di grup sumber daya yang berbeda.
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.' } }
Langkah berikutnya
Untuk daftar lengkap jenis sumber daya ekstensi, lihat Jenis sumber daya yang memperluas kapabilitas sumber daya lainnya.