ARM şablonlarıyla kiracı dağıtımları

Kuruluşunuz geliştikçe, Azure AD kiracınızda ilkeler veya Azure rol tabanlı erişim denetımı (Azure RBAC) tanımlamanız ve atamanız gerekebilir. Kiracı düzeyinde şablonlar ile genel olarak ilkeleri uygulayabilir ve genel düzeyde roller atayabilirsiniz.

Desteklenen kaynaklar

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

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

Yönetim gruplarına, aboneliklerine 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ü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 amacıyla 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 CLı için az Deployment Tenant Createkullanı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ı 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 depolanacağı konumu belirtir. Abonelik ve Yönetim grubu dağıtımları da bir konum gerektirir. Kaynak grubu dağıtımları için, kaynak grubunun konumu dağıtım verilerini depolamak için kullanılır.

Dağıtım için bir ad verebilir 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ğıtmak, azuredeploy varsayılan dağıtım adını oluşturur.

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

Ayrıca, kiracının içindeki kaynak gruplarını hedefleyebilirsiniz. Şablonu dağıtan kullanıcının belirtilen kapsama erişimi olmalıdır.

Kiracının içindeki bir kaynak grubunu hedeflemek için, iç içe geçmiş bir dağıtım kullanın. subscriptionIdVe özelliklerini ayarlayın resourceGroup . Kaynak grubunun konumunda dağıtıldığından, iç içe dağıtım için bir konum ayarlamazsanız.

{
  "$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şturabilirsiniz. Daha fazla bilgi için bkz. Yönetim grubu.

Rol atama

Aşağıdaki şablon, kiracı kapsamına 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.4.1008.15138",
      "templateHash": "11836852523469035276"
    }
  },
  "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"
      }
    }
  },
  "functions": [],
  "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