Nasazení skupin pro správu pomocí šablon ARMManagement group deployments with ARM templates

V případě zralosti vaší organizace můžete nasadit šablonu Azure Resource Manager (šablonu ARM) a vytvořit prostředky na úrovni skupiny pro správu.As your organization matures, you can deploy an Azure Resource Manager template (ARM template) to create resources at the management group level. Například může být potřeba definovat a přiřadit zásady nebo řízení přístupu na základě role Azure (Azure RBAC) pro skupinu pro správu.For example, you may need to define and assign policies or Azure role-based access control (Azure RBAC) for a management group. Šablony na úrovni skupiny pro správu umožňují deklarativní použití zásad a přiřazování rolí na úrovni skupiny pro správu.With management group level templates, you can declaratively apply policies and assign roles at the management group level.

Podporované prostředkySupported resources

Ne všechny typy prostředků lze nasadit do úrovně skupiny pro správu.Not all resource types can be deployed to the management group level. V této části jsou uvedeny typy prostředků, které jsou podporovány.This section lists which resource types are supported.

Pro plány Azure použijte:For Azure Blueprints, use:

Pro Azure Policy použijte:For Azure Policy, use:

Pro řízení přístupu na základě role Azure (Azure RBAC) použijte:For Azure role-based access control (Azure RBAC), use:

U vnořených šablon, které se nasazují do předplatných nebo skupin prostředků, použijte:For nested templates that deploy to subscriptions or resource groups, use:

Pro správu prostředků použijte:For managing your resources, use:

Skupiny pro správu jsou prostředky na úrovni tenanta.Management groups are tenant-level resources. Skupiny pro správu v nasazení skupiny pro správu však můžete vytvořit nastavením rozsahu nové skupiny pro správu na tenanta.However, you can create management groups in a management group deployment by setting the scope of the new management group to the tenant. Viz skupina pro správu.See Management group.

SchémaSchema

Schéma, které používáte pro nasazení skupiny pro správu, se liší od schématu pro nasazení skupin prostředků.The schema you use for management group deployments is different than the schema for resource group deployments.

Pro šablony použijte:For templates, use:

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

Schéma pro soubor parametrů je pro všechny obory nasazení stejné.The schema for a parameter file is the same for all deployment scopes. Pro soubory parametrů použijte:For parameter files, use:

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

Příkazy nasazeníDeployment commands

K nasazení do skupiny pro správu použijte příkazy pro nasazení skupiny pro správu.To deploy to a management group, use the management group deployment commands.

Pro rozhraní příkazového řádku Azure CLI použijte AZ Deployment g Create:For Azure CLI, use az deployment mg create:

az deployment mg create \
  --name demoMGDeployment \
  --location WestUS \
  --management-group-id myMG \
  --template-uri "https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/management-level-deployment/azuredeploy.json"

Podrobnější informace o příkazech nasazení a možnostech nasazení šablon ARM najdete v těchto tématech:For more detailed information about deployment commands and options for deploying ARM templates, see:

Umístění a název nasazeníDeployment location and name

Pro nasazení na úrovni skupiny pro správu musíte zadat umístění pro nasazení.For management group level deployments, you must provide a location for the deployment. Umístění nasazení je oddělené od umístění prostředků, které nasazujete.The location of the deployment is separate from the location of the resources you deploy. Umístění nasazení určuje, kam se mají ukládat data nasazení.The deployment location specifies where to store deployment data. Předplatné a nasazení klientů také vyžadují umístění.Subscription and tenant deployments also require a location. Pro nasazení skupin prostředků se umístění skupiny prostředků používá k ukládání dat nasazení.For resource group deployments, the location of the resource group is used to store the deployment data.

Můžete zadat název nasazení nebo použít výchozí název nasazení.You can provide a name for the deployment, or use the default deployment name. Výchozí název je název souboru šablony.The default name is the name of the template file. Například nasazení šablony s názvem azuredeploy.jsv vytvoří výchozí název nasazení azuredeploy.For example, deploying a template named azuredeploy.json creates a default deployment name of azuredeploy.

Pro každý název nasazení je umístění neměnné.For each deployment name, the location is immutable. Nasazení nelze vytvořit v jednom umístění, pokud existuje existující nasazení se stejným názvem v jiném umístění.You can't create a deployment in one location when there's an existing deployment with the same name in a different location. Pokud například vytvoříte nasazení skupiny pro správu s názvem deployment1 v centralus, nemůžete později vytvořit další nasazení s názvem deployment1 , ale umístěním westus.For example, if you create a management group deployment with the name deployment1 in centralus, you can't later create another deployment with the name deployment1 but a location of westus. Pokud se zobrazí kód chyby InvalidDeploymentLocation , použijte jiný název nebo stejné umístění jako předchozí nasazení pro tento název.If you get the error code InvalidDeploymentLocation, either use a different name or the same location as the previous deployment for that name.

Obory nasazeníDeployment scopes

Při nasazování do skupiny pro správu můžete prostředky nasadit do:When deploying to a management group, you can deploy resources to:

  • Cílová skupina pro správu z operacethe target management group from the operation
  • jiná skupina pro správu v tenantovianother management group in the tenant
  • předplatná ve skupině pro správusubscriptions in the management group
  • skupiny prostředků ve skupině pro správuresource groups in the management group
  • tenant pro skupinu prostředkůthe tenant for the resource group

Prostředek rozšíření může být vymezen na cíl, který se liší od cíle nasazení.An extension resource can be scoped to a target that is different than the deployment target.

Uživatel, který šablonu nasazuje, musí mít přístup k zadanému oboru.The user deploying the template must have access to the specified scope.

V této části se dozvíte, jak zadat různé obory.This section shows how to specify different scopes. Tyto různé obory můžete kombinovat v jediné šabloně.You can combine these different scopes in a single template.

Obor pro cílovou skupinu pro správuScope to target management group

Prostředky definované v části Resources v šabloně jsou aplikovány na skupinu pro správu z příkazu nasazení.Resources defined within the resources section of the template are applied to the management group from the deployment command.

{
    "$schema": "https://schema.management.azure.com/schemas/2019-08-01/managementGroupDeploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "resources": [
        management-group-resources-default
    ],
    "outputs": {}
}

Rozsah do jiné skupiny pro správuScope to another management group

Chcete-li cílit na jinou skupinu pro správu, přidejte vnořené nasazení a zadejte scope vlastnost.To target another management group, add a nested deployment and specify the scope property. Nastavte scope vlastnost na hodnotu ve formátu Microsoft.Management/managementGroups/<mg-name> .Set the scope property to a value in the format Microsoft.Management/managementGroups/<mg-name>.

{
    "$schema": "https://schema.management.azure.com/schemas/2019-08-01/managementGroupDeploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "mgName": {
            "type": "string"
        }
    },
    "variables": {
        "mgId": "[concat('Microsoft.Management/managementGroups/', parameters('mgName'))]"
    },
    "resources": [
        {
            "type": "Microsoft.Resources/deployments",
            "apiVersion": "2019-10-01",
            "name": "nestedDeployment",
            "scope": "[variables('mgId')]",
            "location": "eastus",
            "properties": {
                "mode": "Incremental",
                "template": {
                    management-group-resources-non-default
                }
            }
        }
    ],
    "outputs": {}
}

Rozsah pro předplatnéScope to subscription

V rámci skupiny pro správu můžete také cílit na předplatná.You can also target subscriptions within a management group. Uživatel, který šablonu nasazuje, musí mít přístup k zadanému oboru.The user deploying the template must have access to the specified scope.

Chcete-li cílit na předplatné v rámci skupiny pro správu, použijte vnořené nasazení a subscriptionId vlastnost.To target a subscription within the management group, use a nested deployment and the subscriptionId property.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-08-01/managementGroupDeploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [
    {
      "type": "Microsoft.Resources/deployments",
      "apiVersion": "2020-06-01",
      "name": "nestedSub",
      "location": "westus2",
      "subscriptionId": "00000000-0000-0000-0000-000000000000",
      "properties": {
        "mode": "Incremental",
        "template": {
          "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
          "contentVersion": "1.0.0.0",
          "resources": [
            {
              subscription-resources
            }
          ]
        }
      }
    }
  ]
}

Rozsah do skupiny prostředkůScope to resource group

V rámci skupiny pro správu můžete také cílit na skupiny prostředků.You can also target resource groups within the management group. Uživatel, který šablonu nasazuje, musí mít přístup k zadanému oboru.The user deploying the template must have access to the specified scope.

Chcete-li cílit na skupinu prostředků v rámci skupiny pro správu, použijte vnořené nasazení.To target a resource group within the management group, use a nested deployment. Nastavte subscriptionId vlastnosti a resourceGroup .Set the subscriptionId and resourceGroup properties. Nenastavte umístění pro vnořené nasazení, protože je nasazené v umístění skupiny prostředků.Don't set a location for the nested deployment because it's deployed in the location of the resource group.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-08-01/managementGroupDeploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [
    {
      "type": "Microsoft.Resources/deployments",
      "apiVersion": "2020-06-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
            }
          ]
        }
      }
    }
  ]
}

Pokud chcete použít nasazení skupiny pro správu pro vytvoření skupiny prostředků v rámci předplatného a nasazení účtu úložiště do této skupiny prostředků, přečtěte si téma nasazení do předplatného a skupiny prostředků.To use a management group deployment for creating a resource group within a subscription and deploying a storage account to that resource group, see Deploy to subscription and resource group.

Rozsah do tenantaScope to tenant

Chcete-li vytvořit prostředky v tenantovi, nastavte scope na / .To create resources at the tenant, set the scope to /. Uživatel, který šablonu nasazuje, musí mít požadovaný přístup k nasazení v tenantovi.The user deploying the template must have the required access to deploy at the tenant.

Chcete-li použít vnořené nasazení, nastavte scope a location .To use a nested deployment, set scope and location.

{
    "$schema": "https://schema.management.azure.com/schemas/2019-08-01/managementGroupDeploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "resources": [
        {
            "type": "Microsoft.Resources/deployments",
            "apiVersion": "2020-06-01",
            "name": "nestedDeployment",
            "location": "centralus",
            "scope": "/",
            "properties": {
                "mode": "Incremental",
                "template": {
                    tenant-resources
                }
            }
        }
    ],
    "outputs": {}
}

Nebo můžete nastavit obor na / pro některé typy prostředků, jako jsou skupiny pro správu.Or, you can set the scope to / for some resource types, like management groups. Vytvoření nové skupiny pro správu je popsáno v následující části.Creating a new management group is described in the next section.

Skupina pro správuManagement group

Chcete-li vytvořit skupinu pro správu v nasazení skupiny pro správu, je nutné nastavit obor / pro skupinu pro správu.To create a management group in a management group deployment, you must set the scope to / for the management group.

Následující příklad vytvoří novou skupinu pro správu v kořenové skupině pro správu.The following example creates a new management group in the root management group.

{
    "$schema": "https://schema.management.azure.com/schemas/2019-08-01/managementGroupDeploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "mgName": {
            "type": "string",
            "defaultValue": "[concat('mg-', uniqueString(newGuid()))]"
        }
    },
    "resources": [
        {
            "type": "Microsoft.Management/managementGroups",
            "apiVersion": "2020-05-01",
            "name": "[parameters('mgName')]",
            "scope": "/",
            "location": "eastus",
            "properties": {}
        }
    ],
    "outputs": {
        "output": {
            "type": "string",
            "value": "[parameters('mgName')]"
        }
    }
}

Následující příklad vytvoří novou skupinu pro správu ve skupině pro správu, která je zadána jako nadřazená.The next example creates a new management group in the management group specified as the parent. Všimněte si, že obor je nastaven na hodnotu / .Notice that the scope is set to /.

{
    "$schema": "https://schema.management.azure.com/schemas/2019-08-01/managementGroupDeploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "mgName": {
            "type": "string",
            "defaultValue": "[concat('mg-', uniqueString(newGuid()))]"
        },
        "parentMG": {
            "type": "string"
        }
    },
    "resources": [
        {
            "name": "[parameters('mgName')]",
            "type": "Microsoft.Management/managementGroups",
            "apiVersion": "2020-05-01",
            "scope": "/",
            "location": "eastus",
            "properties": {
                "details": {
                    "parent": {
                        "id": "[tenantResourceId('Microsoft.Management/managementGroups', parameters('parentMG'))]"
                    }
                }
            }
        }
    ],
    "outputs": {
        "output": {
            "type": "string",
            "value": "[parameters('mgName')]"
        }
    }
}

PředplatnáSubscriptions

Chcete-li použít šablonu ARM k vytvoření nového předplatného Azure ve skupině pro správu, přečtěte si téma:To use an ARM template to create a new Azure subscription in a management group, see:

Pokud chcete nasadit šablonu, která přesouvá stávající předplatné Azure do nové skupiny pro správu, přečtěte si téma Přesun předplatných v ŠABLONĚ ARM .To deploy a template that moves an existing Azure subscription to a new management group, see Move subscriptions in ARM template

Azure PolicyAzure Policy

Vlastní definice zásad, které jsou nasazené ve skupině pro správu, jsou rozšířeními skupiny pro správu.Custom policy definitions that are deployed to the management group are extensions of the management group. K získání ID vlastní definice zásady použijte funkci extensionResourceId () .To get the ID of a custom policy definition, use the extensionResourceId() function. Předdefinované definice zásad jsou prostředky na úrovni tenanta.Built-in policy definitions are tenant level resources. K získání ID předdefinované definice zásady použijte funkci tenantResourceId () .To get the ID of a built-in policy definition, use the tenantResourceId() function.

Následující příklad ukazuje, jak definovat zásadu na úrovni skupiny pro správu a přiřadit ji.The following example shows how to define a policy at the management group level, and assign it.

{
    "$schema": "https://schema.management.azure.com/schemas/2019-08-01/managementGroupDeploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "targetMG": {
            "type": "string",
            "metadata": {
                "description": "Target Management Group"
            }
        },
        "allowedLocations": {
            "type": "array",
            "defaultValue": [
                "australiaeast",
                "australiasoutheast",
                "australiacentral"
            ],
            "metadata": {
                "description": "An array of the allowed locations, all other locations will be denied by the created policy."
            }
        }
    },
    "variables": {
        "mgScope": "[tenantResourceId('Microsoft.Management/managementGroups', parameters('targetMG'))]",
        "policyDefinition": "LocationRestriction"
    },
    "resources": [
        {
            "type": "Microsoft.Authorization/policyDefinitions",
            "name": "[variables('policyDefinition')]",
            "apiVersion": "2019-09-01",
            "properties": {
                "policyType": "Custom",
                "mode": "All",
                "parameters": {
                },
                "policyRule": {
                    "if": {
                        "not": {
                            "field": "location",
                            "in": "[parameters('allowedLocations')]"
                        }
                    },
                    "then": {
                        "effect": "deny"
                    }
                }
            }
        },
        {
            "type": "Microsoft.Authorization/policyAssignments",
            "name": "location-lock",
            "apiVersion": "2019-09-01",
            "dependsOn": [
                "[variables('policyDefinition')]"
            ],
            "properties": {
                "scope": "[variables('mgScope')]",
                "policyDefinitionId": "[extensionResourceId(variables('mgScope'), 'Microsoft.Authorization/policyDefinitions', variables('policyDefinition'))]"
            }
        }
    ]
}

Nasazení do předplatného a skupiny prostředkůDeploy to subscription and resource group

Z nasazení na úrovni skupiny pro správu můžete cílit na předplatné v rámci skupiny pro správu.From a management group level deployment, you can target a subscription within the management group. Následující příklad vytvoří skupinu prostředků v rámci předplatného a nasadí účet úložiště do této skupiny prostředků.The following example creates a resource group within a subscription and deploys a storage account to that resource group.

{
    "$schema": "https://schema.management.azure.com/schemas/2019-08-01/managementGroupDeploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "nestedsubId": {
            "type": "string"
        },
        "nestedRG": {
            "type": "string"
        },
        "storageAccountName": {
            "type": "string"
        },
        "nestedLocation": {
            "type": "string"
        }
    },
    "resources": [
        {
            "type": "Microsoft.Resources/deployments",
            "apiVersion": "2020-10-01",
            "name": "nestedSub",
            "location": "[parameters('nestedLocation')]",
            "subscriptionId": "[parameters('nestedSubId')]",
            "properties": {
                "mode": "Incremental",
                "template": {
                    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
                    "contentVersion": "1.0.0.0",
                    "parameters": {
                    },
                    "variables": {
                    },
                    "resources": [
                        {
                            "type": "Microsoft.Resources/resourceGroups",
                            "apiVersion": "2020-10-01",
                            "name": "[parameters('nestedRG')]",
                            "location": "[parameters('nestedLocation')]"
                        }
                    ]
                }
            }
        },
        {
            "type": "Microsoft.Resources/deployments",
            "apiVersion": "2020-10-01",
            "name": "nestedRG",
            "subscriptionId": "[parameters('nestedSubId')]",
            "resourceGroup": "[parameters('nestedRG')]",
            "dependsOn": [
                "nestedSub"
            ],
            "properties": {
                "mode": "Incremental",
                "template": {
                    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
                    "contentVersion": "1.0.0.0",
                    "resources": [
                        {
                            "type": "Microsoft.Storage/storageAccounts",
                            "apiVersion": "2019-04-01",
                            "name": "[parameters('storageAccountName')]",
                            "location": "[parameters('nestedLocation')]",
                            "kind": "StorageV2",
                            "sku": {
                                "name": "Standard_LRS"
                            }
                        }
                    ]
                }
            }
        }
    ]
}

Další krokyNext steps