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.

Bahşiş

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:

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

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

Ş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