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:

  1. Tingkatkan akses akun sehingga Administrator Global dapat menetapkan peran. Untuk informasi lebih lanjut, lihatTingkatkan akses untuk mengelola semua langganan Azure dan grup manajemen.

  2. 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:

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@2021-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@2021-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: