Nasazení tenantů pomocí šablon ARM

S tím, jak vaše organizace zralá, možná budete muset definovat a přiřazovat zásady nebo řízení přístupu na základě role Azure (Azure RBAC) napříč vaším tenantem Azure AD. Pomocí šablon na úrovni tenanta můžete deklarativně použít zásady a přiřadit role na globální úrovni.

Tip

Doporučujeme bicep , protože nabízí stejné funkce jako šablony ARM a syntaxe je jednodušší. Další informace najdete v tématu Nasazení tenanta.

Podporované prostředky

Ne všechny typy prostředků je možné nasadit na úroveň tenanta. Tato část obsahuje seznam podporovaných typů prostředků.

Pro řízení přístupu na základě role Azure (Azure RBAC) použijte:

Pro vnořené šablony, které se nasazují do skupin pro správu, předplatných nebo skupin prostředků, použijte:

K vytváření skupin pro správu použijte:

K vytváření předplatných použijte:

Ke správě nákladů použijte:

Ke konfiguraci portálu použijte:

Předdefinované definice zásad jsou prostředky na úrovni tenanta, ale v tenantovi nemůžete nasadit vlastní definice zásad. Příklad přiřazení předdefinované definice zásady k prostředku najdete v příkladu tenantResourceId.

Schéma

Schéma, které používáte pro nasazení tenanta, se liší od schématu pro nasazení skupiny prostředků.

Pro šablony použijte:

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

Schéma souboru parametrů je stejné pro všechny obory nasazení. Pro soubory parametrů použijte:

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

Požadovaný přístup

Instanční objekt, který nasazuje šablonu, musí mít oprávnění k vytváření prostředků v oboru tenanta. Objekt zabezpečení musí mít oprávnění ke spouštění akcí nasazení (Microsoft.Resources/deployments/*) a k vytvoření prostředků definovaných v šabloně. Pokud například chcete vytvořit skupinu pro správu, musí mít objekt zabezpečení oprávnění Přispěvatel v oboru tenanta. Pokud chcete vytvořit přiřazení rolí, musí mít objekt zabezpečení oprávnění Vlastník.

Globální správce pro Azure Active Directory nemá automaticky oprávnění k přiřazování rolí. Pokud chcete povolit nasazení šablon v oboru tenanta, musí globální správce provést následující kroky:

  1. Zvyšte úroveň přístupu k účtu, aby mohl globální správce přiřazovat role. Podrobnosti najdete v tématu Zvýšení úrovně přístupu pro správu všech předplatných Azure a skupin pro správu.

  2. Přiřaďte k objektu zabezpečení vlastníka nebo přispěvatele, který potřebuje nasadit šablony.

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

Objekt zabezpečení teď má požadovaná oprávnění k nasazení šablony.

Příkazy nasazení

Příkazy pro nasazení tenanta se liší od příkazů pro nasazení skupin prostředků.

Pro Azure CLI použijte příkaz 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 tady:

Umístění a název nasazení

Pro nasazení na úrovni tenanta musíte zadat umístění pro nasazení. Umístění nasazení je oddělené od umístění nasazených prostředků. Umístění nasazení určuje, kam se mají ukládat data nasazení. Nasazení skupin pro správu a předplatného vyžadují také umístění. V případě nasazení skupiny prostředků se umístění skupiny prostředků používá k ukládání dat nasazení.

Můžete zadat název nasazení nebo použít výchozí název nasazení. Výchozí název je název souboru šablony. Například nasazení šablony s názvem azuredeploy.json vytvoří výchozí název nasazení azuredeploy.

Pro každý název nasazení je umístění neměnné. Nasazení nemůžete vytvořit v jednom umístění, pokud existuje existující nasazení se stejným názvem v jiném umístění. Pokud například vytvoříte nasazení tenanta s názvem deployment1 v centralus, nemůžete později vytvořit další nasazení s názvem nasazení1 , ale umístěním westus. Pokud se zobrazí kód InvalidDeploymentLocationchyby, použijte jiný název nebo stejné umístění jako předchozí nasazení pro tento název.

Rozsahy nasazení

Při nasazování do tenanta můžete prostředky nasadit do:

  • tenant
  • skupiny pro správu v rámci tenanta
  • Odběry
  • skupinám prostředků

Prostředek rozšíření může být vymezen na cíl, který se liší od cíle nasazení.

Uživatel, který šablonu nasazuje, musí mít přístup k zadanému oboru.

V této části se dozvíte, jak zadat různé obory. Tyto různé obory můžete kombinovat v jedné šabloně.

Rozsah na tenanta

Prostředky definované v oddílu prostředků šablony se použijí pro tenanta.

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

Rozsah na skupinu pro správu

Pokud chcete cílit na skupinu pro správu v rámci tenanta, přidejte vnořené nasazení a zadejte scope vlastnost.

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

Rozsah předplatného

Můžete také cílit na předplatná v rámci tenanta. Uživatel, který šablonu nasazuje, musí mít přístup k zadanému oboru.

Pokud chcete cílit na předplatné v rámci tenanta, použijte vnořené nasazení a subscriptionId vlastnost.

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

Rozsah na skupinu prostředků

Můžete také cílit na skupiny prostředků v rámci tenanta. Uživatel, který šablonu nasazuje, musí mít přístup k zadanému oboru.

Pokud chcete cílit na skupinu prostředků v rámci tenanta, použijte vnořené nasazení. Nastavte vlastnosti subscriptionId a resourceGroup vlastnosti. Nenastavujte umístění pro vnořené nasazení, protože je nasazené v umístění skupiny prostředků.

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

Vytvoření skupiny pro správu

Následující šablona vytvoří skupinu pro správu.

{
    "$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 skupiny pro správu vytvořit nasazením do jiného oboru. Další informace najdete v tématu Skupina pro správu.

Přiřazení role

Následující šablona přiřadí roli v oboru tenanta.

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

Další kroky