Penyebaran penyewa dengan file Bicep
Saat organisasi Anda dewasa, Anda mungkin perlu menentukan dan menetapkan kebijakan atau kontrol akses berbasis peran Azure (Azure RBAC) di seluruh penyewa Microsoft Entra Anda. Dengan templat tingkat penyewa, Anda dapat menerapkan kebijakan secara deklaratif dan menetapkan peran di tingkat global.
Sumber daya pelatihan
Jika Anda lebih suka mempelajari tentang cakupan penyebaran melalui panduan langkah demi langkah, lihat Menyebarkan sumber daya ke langganan, grup manajemen, dan penyewa dengan menggunakan Bicep.
Sumber daya yang didukung
Tidak semua jenis sumber daya dapat disebarkan ke tingkat penyewa. Bagian ini mencantumkan jenis sumber daya mana yang didukung.
Untuk kontrol akses berbasis peran Azure (Azure RBAC), gunakan:
Untuk templat berlapis yang disebarkan ke grup manajemen, langganan, atau grup sumber daya, gunakan:
Untuk membuat grup manajemen, gunakan:
Untuk membuat langganan, gunakan:
Untuk mengelola biaya, gunakan:
Untuk mengonfigurasi portal, gunakan:
Definisi kebijakan bawaan adalah sumber daya tingkat penyewa, tetapi Anda tidak dapat meneyebarkan definisi kebijakan kustom di penyewa. Untuk contoh penetapan definisi kebijakan bawaan ke sumber daya, lihat contoh tenantResourceId.
Menetapkan cakupan
Untuk mengatur cakupan ke penyewa, gunakan:
targetScope = 'tenant'
Akses yang diperlukan
Utama yang menyebarkan templat harus memiliki izin untuk membuat sumber daya di lingkup penyewa. Utama harus memiliki izin untuk menjalankan tindakan penyebaran (Microsoft.Resources/deployments/*
) dan untuk membuat sumber daya yang ditentukan dalam template. Misalnya, untuk membuat grup manajemen, utama harus memiliki izin Kontributor di lingkup penyewa. Untuk membuat tugas peran, utama harus memiliki izin Pemilik.
Administrator Global untuk ID Microsoft Entra tidak secara otomatis memiliki izin untuk menetapkan peran. Untuk mengaktifkan penyebaran templat di cakupan penyewa, Administrator Global harus melakukan langkah-langkah berikut:
Tingkatkan akses akun sehingga Administrator Global dapat menetapkan peran. Untuk informasi lebih lanjut, lihat Tingkatkan akses untuk mengelola semua langganan Azure dan grup manajemen.
Tetapkan Pemilik atau Kontributor ke utama yang perlu menyebarkan templat.
New-AzRoleAssignment -SignInName "[userId]" -Scope "/" -RoleDefinitionName "Owner"
az role assignment create --assignee "[userId]" --scope "/" --role "Owner"
Utama sekarang memiliki izin yang diperlukan untuk menyebarkan templat.
Perintah penyebaran
Perintah untuk penyebaran penyewa berbeda dari perintah untuk penyebaran grup sumber daya.
Untuk Azure CLI, gunakan az deployment group create:
az deployment tenant create \
--name demoTenantDeployment \
--location WestUS \
--template-file main.bicep
Untuk informasi selengkapnya terkait perintah penyebaran dan opsi untuk menyebarkan templat ARM, lihat:
- Menyebarkan sumber daya dengan templat ARM dan Azure CLI
- Menyebarkan sumber daya dengan templat ARM dan Azure PowerShell
- Menyebarkan templat ARM dari Cloud Shell
Lokasi dan nama penyebaran
Untuk penyebaran tingkat penyewa, Anda harus menyediakan lokasi untuk penyebaran. Lokasi penyebaran terpisah dari lokasi sumber daya yang Anda sebarkan. Lokasi penyebaran menentukan tempat menyimpan data penyebaran. Penyebaran Langganan dan grup manajemen juga memerlukan lokasi. Untuk penyebaran grup sumber daya, lokasi grup sumber daya digunakan untuk menyimpan data penyebaran.
Anda dapat memberikan nama untuk penyebaran atau menggunakan nama penyebaran default. Nama default adalah nama file templat. Misalnya, menyebarkan file bernama main.bicep akan membuat nama penyebaran default main.
Untuk setiap nama penyebaran, lokasi tidak dapat diubah. Anda tidak dapat membuat penyebaran di satu lokasi saat ada penyebaran yang ada dengan nama yang sama di lokasi lain. Misalnya, jika Anda membuat penyebaran penyewa dengan nama deployment1 di centralus, Anda nantinya tidak dapat membuat penyebaran lain dengan nama deployment1 tetapi lokasinya di westus. Jika Anda mendapatkan kode kesalahan InvalidDeploymentLocation
, gunakan nama yang berbeda atau lokasi yang sama dengan penyebaran sebelumnya untuk nama tersebut.
Cakupan penyebaran
Saat menyebarkan ke penyewa, Anda dapat menyebarkan sumber daya untuk:
- penyewa
- grup manajemen dalam penyewa
- langganan
- grup sumber daya
Sumber daya ekstensi dapat dicakup ke target yang berbeda dari target penyebaran.
Pengguna yang menyebarkan templat harus memiliki akses ke cakupan yang ditentukan.
Bagian ini memperlihatkan cara menentukan cakupan yang berbeda. Anda dapat menggabungkan cakupan yang berbeda ini dalam templat tunggal.
Cakupan ke penyewa
Sumber daya ditentukan dalam file Bicep yang diterapkan ke penyewa.
targetScope = 'tenant'
// create resource at tenant
resource mgName_resource 'Microsoft.Management/managementGroups@2023-04-01' = {
...
}
Cakupan ke grup manajemen
Untuk menargetkan grup manajemen dalam penyewa, tambahkan modul. Gunakan fungsi managementGroup untuk menetapkan scope
propertinya. Berikan nama grup manajemen.
targetScope = 'tenant'
param managementGroupName string
// create resources at management group level
module 'module.bicep' = {
name: 'deployToMG'
scope: managementGroup(managementGroupName)
}
Cakupan ke langganan
Untuk menargetkan langganan dalam penyewa, tambahkan modul. Gunakan fungsi langganan untuk mengatur scope
propertinya. Berikan ID langganan.
targetScope = 'tenant'
param subscriptionID string
// create resources at subscription level
module 'module.bicep' = {
name: 'deployToSub'
scope: subscription(subscriptionID)
}
Cakupan ke grup sumber daya
Untuk menargetkan grup sumber daya dalam penyewa, tambahkan modul. Gunakan fungsi resourceGroup untuk menetapkan scope
propertinya. Berikan ID langganan dan nama grup sumber daya.
targetScope = 'tenant'
param resourceGroupName string
param subscriptionID string
// create resources at resource group level
module 'module.bicep' = {
name: 'deployToRG'
scope: resourceGroup(subscriptionID, resourceGroupName)
}
Membuat grup manajemen
Templat berikut ini akan membuat grup manajemen.
targetScope = 'tenant'
param mgName string = 'mg-${uniqueString(newGuid())}'
resource mgName_resource 'Microsoft.Management/managementGroups@2023-04-01' = {
name: mgName
properties: {}
}
Jika akun Anda tidak memiliki izin untuk melakukan penyebaran ke penyewa, Anda masih dapat membuat grup manajemen dengan menggunakan cakupan lain. Untuk informasi selengkapnya, lihat Grup manajemen.
Menetapkan peran
Templat berikut menetapkan peran di cakupan penyewa.
targetScope = 'tenant'
@description('principalId of the user that will be given contributor access to the resourceGroup')
param principalId string
@description('roleDefinition for the assignment - default is owner')
param roleDefinitionId string = '8e3af657-a8ff-443c-a75c-2fe8c4bcb635'
var roleAssignmentName = guid(principalId, roleDefinitionId)
resource roleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
name: roleAssignmentName
properties: {
roleDefinitionId: tenantResourceId('Microsoft.Authorization/roleDefinitions', roleDefinitionId)
principalId: principalId
}
}
Langkah berikutnya
Untuk mempelajari tentang cakupan lain, lihat: