Nasazení klientů pomocí šablon ARMTenant deployments with ARM templates

V případě, že vaše organizace bude vyspělá, možná budete muset v tenantovi Azure AD definovat a přiřazovat zásady nebo řízení přístupu na základě role Azure (RBAC) .As your organization matures, you may need to define and assign policies or Azure role-based access control (Azure RBAC) across your Azure AD tenant. Pomocí šablon na úrovni tenanta můžete deklarativně uplatňovat zásady a přiřazovat role na globální úrovni.With tenant level templates, you can declaratively apply policies and assign roles at a global level.

Podporované prostředkySupported resources

Ne všechny typy prostředků se dají nasadit na úrovni tenanta.Not all resource types can be deployed to the tenant level. V této části jsou uvedeny typy prostředků, které jsou podporovány.This section lists which resource types are supported.

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 skupin pro správu, předplatných nebo skupin prostředků, použijte:For nested templates that deploy to management groups, subscriptions, or resource groups, use:

Pro vytváření skupin pro správu použijte:For creating management groups, use:

Pro vytváření předplatných použijte:For creating subscriptions, use:

Pro správu nákladů použijte:For managing costs, use:

Pro konfiguraci portálu použijte:For configuring the portal, use:

Předdefinované definice zásad jsou prostředky na úrovni tenanta, ale nemůžete na tenanta nasadit vlastní definice zásad.Built-in policy definitions are tenant-level resources, but you can't deploy custom policy definitions at the tenant. Příklad přiřazení předdefinované definice zásady k prostředku naleznete v tématu tenantResourceId example.For an example of assigning a built-in policy definition to a resource, see tenantResourceId example.

SchémaSchema

Schéma, které používáte pro nasazení klientů, se liší od schématu pro nasazení skupin prostředků.The schema you use for tenant 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/tenantDeploymentTemplate.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#",
    ...
}

Požadovaný přístupRequired access

Objekt zabezpečení, který šablonu nasazuje, musí mít oprávnění k vytváření prostředků v oboru tenanta.The principal deploying the template must have permissions to create resources at the tenant scope. Objekt zabezpečení musí mít oprávnění ke spuštění akcí nasazení ( Microsoft.Resources/deployments/* ) a k vytvoření prostředků definovaných v šabloně.The principal must have permission to execute the deployment actions (Microsoft.Resources/deployments/*) and to create the resources defined in the template. Chcete-li například vytvořit skupinu pro správu, musí mít objekt zabezpečení oprávnění přispěvatele v oboru tenanta.For example, to create a management group, the principal must have Contributor permission at the tenant scope. Aby bylo možné vytvořit přiřazení rolí, musí mít objekt zabezpečení oprávnění vlastníka.To create role assignments, the principal must have Owner permission.

Globální správce pro Azure Active Directory nemá automaticky oprávnění k přiřazování rolí.The Global Administrator for the Azure Active Directory doesn't automatically have permission to assign roles. Chcete-li povolit nasazení šablon v oboru klienta, globální správce musí provést následující kroky:To enable template deployments at the tenant scope, the Global Administrator must do the following steps:

  1. Zvyšte přístup k účtu, aby globální správce mohl přiřadit role.Elevate account access so the Global Administrator can assign roles. Další informace najdete v tématu zvýšení úrovně přístupu ke správě všech předplatných Azure a skupin pro správu.For more information, see Elevate access to manage all Azure subscriptions and management groups.

  2. Přiřaďte vlastníka nebo přispěvateli objektu zabezpečení, který potřebuje k nasazení šablon.Assign Owner or Contributor to the principal that needs to deploy the templates.

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

Objekt zabezpečení má teď požadovaná oprávnění k nasazení šablony.The principal now has the required permissions to deploy the template.

Příkazy nasazeníDeployment commands

Příkazy pro nasazení klientů se liší od příkazů pro nasazení skupin prostředků.The commands for tenant deployments are different than the commands for resource group deployments.

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

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"

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 tenanta musíte zadat umístění pro nasazení.For tenant 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. Nasazení a skupiny pro správu předplatného také vyžadují umístění.Subscription and management group 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í tenanta 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 tenant 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 tenanta můžete prostředky nasadit do:When deploying to a tenant, you can deploy resources to:

  • tenantthe tenant
  • skupiny pro správu v rámci tenantamanagement groups within the tenant
  • odběrusubscriptions
  • skupinám prostředkůresource groups

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.

Rozsah do tenantaScope to tenant

Prostředky definované v části Resources v šabloně se aplikují na tenanta.Resources defined within the resources section of the template are applied to the tenant.

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

Rozsah pro skupinu pro správuScope to management group

Chcete-li cílit na skupinu pro správu v rámci tenanta, přidejte vnořené nasazení a zadejte scope vlastnost.To target a management group within the tenant, add a nested deployment and specify the scope property.

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

Rozsah pro předplatnéScope to subscription

Můžete také cílit na odběry v rámci tenanta.You can also target subscriptions within the tenant. 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 tenanta, použijte vnořené nasazení a subscriptionId vlastnost.To target a subscription within the tenant, use a nested deployment and the subscriptionId property.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-08-01/tenantDeploymentTemplate.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 tenanta můžete také cílit na skupiny prostředků.You can also target resource groups within the tenant. 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.

Pokud chcete cílit na skupinu prostředků v rámci tenanta, použijte vnořené nasazení.To target a resource group within the tenant, 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/tenantDeploymentTemplate.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/2015-01-01/deploymentTemplate.json#",
          "contentVersion": "1.0.0.0",
          "resources": [
            {
              resource-group-resources
            }
          ]
        }
      }
    }
  ]
}

Vytvoření skupiny pro správuCreate management group

Následující šablona vytvoří skupinu pro správu.The following template creates a management group.

{
    "$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": {
        }
      }
    ]
  }

Pokud váš účet nemá oprávnění k nasazení do tenanta, můžete přesto vytvořit skupiny pro správu nasazením do jiného oboru.If your account doesn't have permission to deploy to the tenant, you can still create management groups by deploying to another scope. Další informace najdete v tématu skupina pro správu.For more information, see Management group.

Přiřazení roleAssign role

Následující šablona přiřadí roli v oboru tenanta.The following template assigns a role at the tenant scope.

{
  "$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": "/"
      }
    }
  ]
}

Další krokyNext steps