ARM şablonlarıyla 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.

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üzeyindeki kaynaklardır, ancak kiracıda özel ilke tanımları dağıtamazsınız. Bir kaynağa yerleşik ilke tanımı atamaya yönelik bir örnek için bkz. Tenantresourceıd örneği.

Şema

Kiracı dağıtımları için kullandığınız şema, kaynak grubu dağıtımları için şemadan farklıdır.

Şablonlar için şunu kullanın:

{
    "$schema": "https://schema.management.azure.com/schemas/2019-08-01/tenantDeploymentTemplate.json#",
    ...
}

Bir 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ğıtmanın asıl, kiracı kapsamında kaynak oluşturmak için izinlere sahip olmalıdır. Sorumlunun, dağıtım eylemlerini ( Microsoft.Resources/deployments/* ) yürütme ve şablonda tanımlanan kaynakları oluşturma izni olması gerekir. Örneğin, bir yönetim grubu oluşturmak için sorumlu, kiracı kapsamında katkıda bulunan iznine sahip olmalıdır. Rol atamaları oluşturmak için sorumlunun sahip iznine sahip olması gerekir.

Azure Active Directory genel yöneticisinin rol atama izni otomatik olarak yoktur. Şablon dağıtımlarını kiracı kapsamında etkinleştirmek için, genel yönetici aşağıdaki adımları vermelidir:

  1. Genel yöneticinin 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 için erişimi yükseltme.

  2. Şablonları dağıtmak için gereken sorumlu sahibine veya katkıda bulunanı atayın.

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

Asıl öğe artık şablonu dağıtmak için gerekli izinlere sahiptir.

Dağıtım komutları

Kiracı dağıtımları 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-uri "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/tenant-deployments/new-mg/azuredeploy.json"

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, üzerindeazuredeploy.jsadlı bir şablon dağıtarak azuredeploy varsayılan dağıtım adını 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, deployment1 adına sahip bir kiracı dağıtımı oluşturursanız, daha sonra deployment1 adında bir dağıtım oluşturalım, ancak westus. Hata kodunu alırsanız InvalidDeploymentLocation , bu ad için önceki dağıtımla farklı bir ad veya aynı konumu kullanın.

Dağıtım kapsamları

Bir kiracıya dağıtırken kaynakların dağıtımını yapabilirsiniz:

  • Kiracı
  • kiracının içindeki yönetim grupları
  • Aboneliklerin
  • kaynak grupları

Uzantı kaynağı , dağıtım hedefinden farklı bir hedef kapsamına eklenebilir.

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

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

Kapsam-kiracı

Ş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ıdaki bir yönetim grubunu hedeflemek için, iç içe geçmiş bir dağıtım ekleyin ve scope özelliğini belirtin.

{
  "$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": "2021-04-01",
      "name": "nestedMG",
      "scope": "[variables('mgId')]",
      "location": "eastus",
      "properties": {
        "mode": "Incremental",
        "template": {
          management-group-resources
        }
      }
    }
  ],
  "outputs": {}
}

Abonelik kapsamı

Ayrıca, Kiracıdaki abonelikleri de hedefleyebilirsiniz. Şablonu dağıtan kullanıcının belirtilen kapsama erişimi olmalıdır.

Kiracıdaki bir aboneliği hedeflemek için, iç içe geçmiş bir 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 olması gerekir.

Kiracı içindeki bir kaynak grubunu hedeflemek için iç içe geçmiş bir dağıtım kullanın. ve subscriptionId özelliklerini resourceGroup ayarlayın. İç içe dağıtım için bir konum ayarlamayın çünkü kaynak grubunun konumunu dağıtıldı.

{
  "$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 kiracıya dağıtma iznine sahip değilse 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.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-08-01/tenantDeploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "principalId": {
      "type": "string",
      "metadata": {
        "description": "principalId if the user that will be given contributor access to the resourceGroup"
      }
    },
    "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": [
    {
      "name": "[variables('roleAssignmentName')]",
      "type": "Microsoft.Authorization/roleAssignments",
      "apiVersion": "2020-03-01-preview",
      "properties": {
        "roleDefinitionId": "[tenantResourceId('Microsoft.Authorization/roleDefinitions', parameters('roleDefinitionId'))]",
        "principalId": "[parameters('principalId')]",
        "scope": "/"
      }
    }
  ]
}

Sonraki adımlar