Bicep dosyasıyla kiracı dağıtımları

Kuruluşunuz büyüdükçe, Microsoft Entra kiracınızda ilkeler veya Azure rol tabanlı erişim denetimi (Azure RBAC) tanımlamanız ve atamanız gerekebilir. Kiracı düzeyi şablonlarıyla ilkeleri bildirimli olarak uygulayabilir ve rolleri genel düzeyde atayabilirsiniz.

Eğitim kaynakları

Adım adım yönergeler aracılığıyla dağıtım kapsamları hakkında bilgi edinmek isterseniz bkz . Bicep kullanarak aboneliklere, yönetim gruplarına ve kiracılara kaynak dağıtma.

Desteklenen kaynaklar

Tüm kaynak türleri kiracı düzeyine dağıtılamaz. Bu bölümde hangi kaynak türlerinin desteklendiği listelenir.

Azure rol tabanlı erişim denetimi (Azure RBAC) için şunları kullanın:

Yönetim gruplarına, aboneliklere veya kaynak gruplarına dağıtan iç içe şablonlar için şunu kullanın:

Yönetim grupları oluşturmak için şunu kullanın:

Abonelik oluşturmak için şunu kullanın:

Maliyetleri yönetmek için şunu kullanın:

Portalı yapılandırmak için şunu kullanın:

Yerleşik ilke tanımları kiracı düzeyinde kaynaklardır, ancak kiracıda özel ilke tanımları dağıtamazsınız. Bir kaynağa yerleşik ilke tanımı atama örneği için bkz . tenantResourceId örneği.

Kapsamı ayarla

Kapsamı kiracı olarak ayarlamak için şunu kullanın:

targetScope = 'tenant'

Gerekli erişim

Şablonu dağıtan sorumlunun kiracı kapsamında kaynak oluşturma izinleri olmalıdır. Sorumlunun dağıtım eylemlerini (Microsoft.Resources/deployments/*) yürütme ve şablonda tanımlanan kaynakları oluşturma izni olmalıdır. Örneğin, bir yönetim grubu oluşturmak için sorumlunun kiracı kapsamında Katkıda Bulunan iznine sahip olması gerekir. Rol atamaları oluşturmak için sorumlunun Sahip izni olmalıdır.

Microsoft Entra Id için Genel Yönetici istratörü otomatik olarak rol atama iznine sahip değildir. Kiracı kapsamında şablon dağıtımlarını etkinleştirmek için Genel Yönetici istratörü aşağıdaki adımları gerçekleştirmelidir:

  1. Genel Yönetici istrator'ın rol atayabilmesi için hesap erişimini yükseltin. Daha fazla bilgi için bkz. Tüm Azure aboneliklerini ve yönetim gruplarını yönetmek amacıyla erişimi yükseltme.

  2. Şablonları dağıtması gereken sorumluya Sahip veya Katkıda Bulunan atayın.

    New-AzRoleAssignment -SignInName "[userId]" -Scope "/" -RoleDefinitionName "Owner"
    
    az role assignment create --assignee "[userId]" --scope "/" --role "Owner"
    

Sorumlu artık şablonu dağıtmak için gerekli izinlere sahiptir.

Dağıtım komutları

Kiracı dağıtımlarına yönelik komutlar, kaynak grubu dağıtımlarına yönelik komutlardan farklıdır.

Azure CLI için az deployment tenant create komutunu kullanın:

az deployment tenant create \
  --name demoTenantDeployment \
  --location WestUS \
  --template-file main.bicep

ARM şablonlarını dağıtmaya yönelik dağıtım komutları ve seçenekleri hakkında daha ayrıntılı bilgi için bkz:

Dağıtım konumu ve adı

Kiracı düzeyinde dağıtımlar için dağıtım için bir konum sağlamanız gerekir. Dağıtımın konumu, dağıttığınız kaynakların konumundan ayrıdır. Dağıtım konumu, dağıtım verilerinin depolandığı yeri belirtir. Abonelik ve yönetim grubu dağıtımları da bir konum gerektirir. Kaynak grubu dağıtımları için, dağıtım verilerini depolamak için kaynak grubunun konumu kullanılır.

Dağıtım için bir ad sağlayabilir veya varsayılan dağıtım adını kullanabilirsiniz. Varsayılan ad, şablon dosyasının adıdır. Örneğin main.bicep adlı bir dosya dağıtılırken main varsayılan dağıtım adı oluşturulur.

Her dağıtım adı için konum sabittir. Farklı bir konumda aynı ada sahip mevcut bir dağıtım olduğunda tek bir konumda dağıtım oluşturamazsınız. Örneğin, centralus'ta deployment1 adlı bir kiracı dağıtımı oluşturursanız, daha sonra deployment1 adlı başka bir dağıtım oluşturamazsınız, ancak westus konumuna sahip olursunuz. hata kodunu InvalidDeploymentLocationalırsanız, bu ad için farklı bir ad veya önceki dağıtımla aynı konumu kullanın.

Dağıtım kapsamları

Bir kiracıya dağıtım yaparken, kaynakları şu kaynaklara dağıtabilirsiniz:

  • kiracı
  • kiracı içindeki yönetim grupları
  • abonelikler
  • kaynak grupları

Uzantı kaynağının kapsamı, dağıtım hedefinden farklı bir hedef olarak ayarlanabilir.

Şablonu dağıtan kullanıcının belirtilen kapsama erişimi olmalıdır.

Bu bölümde farklı kapsamların nasıl belirtileceğini gösterilmektedir. Bu farklı kapsamları tek bir şablonda birleştirebilirsiniz.

Kapsamı kiracıya

Bicep dosyasında tanımlanan kaynaklar kiracıya uygulanır.

targetScope = 'tenant'

// create resource at tenant
resource mgName_resource 'Microsoft.Management/managementGroups@2021-04-01' = {
  ...
}

Kapsam- yönetim grubu

Kiracı içindeki bir yönetim grubunu hedeflemek için bir modül ekleyin. özelliğini ayarlamak scope için managementGroup işlevini kullanın. Yönetim grubu adını belirtin.

targetScope = 'tenant'

param managementGroupName string

// create resources at management group level
module  'module.bicep' = {
  name: 'deployToMG'
  scope: managementGroup(managementGroupName)
}

Kapsam-abonelik

Kiracı içindeki bir aboneliği hedeflemek için bir modül ekleyin. Özelliğini ayarlamak scope için abonelik işlevini kullanın. Abonelik kimliğini belirtin.

targetScope = 'tenant'

param subscriptionID string

// create resources at subscription level
module  'module.bicep' = {
  name: 'deployToSub'
  scope: subscription(subscriptionID)
}

Kapsam- kaynak grubu

Kiracı içindeki bir kaynak grubunu hedeflemek için bir modül ekleyin. özelliğini ayarlamak scope için resourceGroup işlevini kullanın. Abonelik kimliğini ve kaynak grubu adını belirtin.

targetScope = 'tenant'

param resourceGroupName string
param subscriptionID string

// create resources at resource group level
module  'module.bicep' = {
  name: 'deployToRG'
  scope: resourceGroup(subscriptionID, resourceGroupName)
}

Yönetim grubu oluşturma

Aşağıdaki şablon bir yönetim grubu oluşturur.

targetScope = 'tenant'
param mgName string = 'mg-${uniqueString(newGuid())}'

resource mgName_resource 'Microsoft.Management/managementGroups@2021-04-01' = {
  name: mgName
  properties: {}
}

Hesabınızın kiracıya dağıtma izni yoksa, başka bir kapsama dağıtarak yönetim grupları oluşturmaya devam edebilirsiniz. Daha fazla bilgi için bkz . Yönetim grubu.

Rol atama

Aşağıdaki şablon kiracı kapsamında bir rol atar.

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

Sonraki adımlar

Diğer kapsamlar hakkında bilgi edinmek için bkz: