ARM şablonları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.
İpucu
ARM şablonlarıyla aynı özellikleri sunduğundan ve söz diziminin kullanımı daha kolay olduğundan Bicep'i öneririz. Daha fazla bilgi edinmek için bkz . kiracı dağıtımları.
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.
Şema
Kiracı dağıtımları için kullandığınız şema, kaynak grubu dağıtımlarının şemasından farklıdır.
Şablonlar için şunu kullanın:
{
"$schema": "https://schema.management.azure.com/schemas/2019-08-01/tenantDeploymentTemplate.json#",
...
}
Parametre dosyasının şeması tüm dağıtım kapsamları için aynıdır. Parametre dosyaları için şunu kullanın:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
...
}
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:
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.
Ş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-uri "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/tenant-deployments/new-mg/azuredeploy.json"
ARM şablonlarını dağıtmaya yönelik dağıtım komutları ve seçenekleri hakkında daha ayrıntılı bilgi için bkz:
- ARM şablonları ve Azure portalı ile kaynakları dağıtma
- ARM şablonları ve Azure CLI ile kaynak dağıtma
- ARM şablonları ve Azure PowerShell ile kaynak dağıtma
- ARM şablonları ve Azure Resource Manager REST API'siyle kaynakları dağıtma
- GitHub deposundan şablonları dağıtmak için dağıtım düğmesi kullanma
- Cloud Shell'den ARM şablonları dağıtma
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, azuredeploy.json adlı bir şablon dağıtılırken azuredeploy 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 InvalidDeploymentLocation
alı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ı
Yasaklanan tek kapsam geçişleri Kaynak Grubundan Yönetim Grubuna veya Abonelikten Yönetim Grubuna gerçekleşir.
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
Şablonun kaynaklar bölümünde tanımlanan kaynaklar kiracıya uygulanır.
{
"$schema": "https://schema.management.azure.com/schemas/2019-08-01/tenantDeploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
tenant-resources
],
"outputs": {}
}
Kapsam- yönetim grubu
Kiracı içindeki bir yönetim grubunu hedeflemek için iç içe bir dağıtım ekleyin ve özelliğini belirtin scope
.
{
"$schema": "https://schema.management.azure.com/schemas/2019-08-01/tenantDeploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"mgName": {
"type": "string"
}
},
"variables": {
"mgId": "[concat('Microsoft.Management/managementGroups/', parameters('mgName'))]"
},
"resources": [
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2022-09-01",
"name": "nestedMG",
"scope": "[variables('mgId')]",
"location": "eastus",
"properties": {
"mode": "Incremental",
"template": {
management-group-resources
}
}
}
],
"outputs": {}
}
Kapsam-abonelik
Kiracı içindeki abonelikleri de hedefleyebilirsiniz. Şablonu dağıtan kullanıcının belirtilen kapsama erişimi olmalıdır.
Kiracı içindeki bir aboneliği hedeflemek için iç içe dağıtım ve subscriptionId
özelliğini kullanın.
{
"$schema": "https://schema.management.azure.com/schemas/2019-08-01/tenantDeploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2021-04-01",
"name": "nestedSub",
"location": "westus2",
"subscriptionId": "00000000-0000-0000-0000-000000000000",
"properties": {
"mode": "Incremental",
"template": {
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
subscription-resources
}
]
}
}
}
]
}
Kapsam- kaynak grubu
Kiracı içindeki kaynak gruplarını da hedefleyebilirsiniz. Şablonu dağıtan kullanıcının belirtilen kapsama erişimi olmalıdır.
Kiracı içindeki bir kaynak grubunu hedeflemek için iç içe dağıtım kullanın. subscriptionId
ve resourceGroup
özelliklerini ayarlayın. kaynak grubunun konumunda dağıtıldığından iç içe dağıtım için bir konum ayarlamayın.
{
"$schema": "https://schema.management.azure.com/schemas/2019-08-01/tenantDeploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2021-04-01",
"name": "nestedRGDeploy",
"subscriptionId": "00000000-0000-0000-0000-000000000000",
"resourceGroup": "demoResourceGroup",
"properties": {
"mode": "Incremental",
"template": {
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
resource-group-resources
}
]
}
}
}
]
}
Yönetim grubu oluşturma
Aşağıdaki şablon bir yönetim grubu oluşturur.
{
"$schema": "https://schema.management.azure.com/schemas/2019-08-01/tenantDeploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"mgName": {
"type": "string",
"defaultValue": "[concat('mg-', uniqueString(newGuid()))]"
}
},
"resources": [
{
"type": "Microsoft.Management/managementGroups",
"apiVersion": "2020-02-01",
"name": "[parameters('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.
{
"$schema": "https://schema.management.azure.com/schemas/2019-08-01/tenantDeploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"metadata": {
"_generator": {
"name": "bicep",
"version": "0.5.6.12127",
"templateHash": "17107802581699825924"
}
},
"parameters": {
"principalId": {
"type": "string",
"metadata": {
"description": "principalId if the user that will be given contributor access to the tenant"
}
},
"roleDefinitionId": {
"type": "string",
"defaultValue": "8e3af657-a8ff-443c-a75c-2fe8c4bcb635",
"metadata": {
"description": "roleDefinition for the assignment - default is owner"
}
}
},
"variables": {
"roleAssignmentName": "[guid('/', parameters('principalId'), parameters('roleDefinitionId'))]"
},
"resources": [
{
"type": "Microsoft.Authorization/roleAssignments",
"apiVersion": "2020-03-01-preview",
"name": "[variables('roleAssignmentName')]",
"properties": {
"roleDefinitionId": "[tenantResourceId('Microsoft.Authorization/roleDefinitions', parameters('roleDefinitionId'))]",
"principalId": "[parameters('principalId')]"
}
}
]
}
Sonraki adımlar
- Rol atama hakkında bilgi edinmek için bkz . Azure Resource Manager şablonlarını kullanarak Azure rolleri atama.
- Şablonları abonelik düzeyinde veya yönetim grubu düzeyinde de dağıtabilirsiniz.