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

Kuruluş olgunlaştıkça, Azure AD kiracınız genelinde ilkeler veya Azure rol tabanlı erişim denetimi (Azure RBAC) tanımlamanız ve atamanız gerekir. Kiracı düzeyi şablonlarıyla, ilkeleri bildirimli olarak uygulayabilir ve genel düzeyde roller atabilirsiniz.

Microsoft Learn

Dağıtım kapsamları hakkında daha fazla bilgi edinmek ve uygulamalı rehberlik için bkz. Microsoft Learn üzerinde Bicep kullanarak kaynakları aboneliklere, yönetim gruplarına ve kiracılara dağıtma.

Desteklenen kaynaklar

Tüm kaynak türleri kiracı düzeyinde dağıtılabilir değildir. Bu bölümde, hangi kaynak türlerinin desteklen olduğu listedir.

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 şunları kullanın:

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

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

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

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

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

Kapsamı ayarlama

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

targetScope = 'tenant'

Gerekli erişim

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

Yöneticinin genel Azure Active Directory otomatik olarak rol atama izni yok. Şablon dağıtımlarını kiracı kapsamında etkinleştirmek için Genel Yöneticinin aşağıdaki adımları atılması gerekir:

  1. Genel Yöneticinin rol atayamalarını 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 sahip.

Dağıtım komutları

Kiracı dağıtımları için komutlar, kaynak grubu dağıtımları için komutlardan farklıdır.

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

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

ARM şablonlarını dağıtmaya ilişkin 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ğlamalısınız. Dağıtımın konumu, dağıtan kaynakların konumdan ayrıdır. Dağıtım konumu, dağıtım verisi depolamanın nerede olduğunu 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 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 dosyanın dağıtımı, main adlı varsayılan bir dağıtım adı oluşturur.

Her dağıtım adı için konum sabittir. Farklı bir konumda aynı adla mevcut bir dağıtım olduğunda bir konumda dağıtım oluşturamalısınız. Örneğin, centralus içinde deployment1 adıyla bir kiracı dağıtımı oluşturmanız, daha sonra deployment1 adıyla ancak westus konumunu kullanarak başka bir dağıtım oluşturamalısınız. Hata kodunu alırsanız, bu ad için farklı bir ad veya InvalidDeploymentLocation önceki dağıtımla aynı konumu kullanın.

Dağıtım kapsamları

Bir kiracıya dağıtım yapmak için kaynakları şu kaynaklara dağıtın:

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

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

Şablonu dağıtan kullanıcının belirtilen kapsama erişimi olması gerekir.

Bu bölümde, farklı kapsamların nasıl belirt İşlenli olduğu gösterir. Bu farklı kapsamları tek bir şablonda birleştirebilirsiniz.

Kiracı kapsamı

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

targetScope = 'tenant'

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

Kapsamdan yönetim grubuna

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

targetScope = 'tenant'

param managementGroupName string

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

Kapsamdan aboneliğe

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

targetScope = 'tenant'

param subscriptionID string

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

Kapsamdan kaynak grubuna

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

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@2020-02-01' = {
  name: mgName
  properties: {}
}

Hesabınız kiracıya dağıtma iznine sahip yoksa, başka bir kapsama dağıtarak yönetim grupları oluşturabilirsiniz. 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 if 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@2020-03-01-preview' = {
  name: roleAssignmentName
  properties: {
    roleDefinitionId: tenantResourceId('Microsoft.Authorization/roleDefinitions', roleDefinitionId)
    principalId: principalId
  }
}

Sonraki adımlar

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