Felügyeleti csoportok üzembe helyezése ARM-sablonokkal

A szervezet érettségével üzembe helyezhet egy Azure Resource Manager-sablont (ARM-sablont), hogy erőforrásokat hozzon létre a felügyeleti csoport szintjén. Előfordulhat például, hogy szabályzatokat vagy Azure-beli szerepköralapú hozzáférés-vezérlést (Azure RBAC) kell meghatároznia és hozzárendelnie egy felügyeleti csoporthoz. A felügyeleti csoportszintű sablonokkal deklaratív módon alkalmazhat szabályzatokat, és szerepköröket rendelhet hozzá a felügyeleti csoport szintjén.

Tipp

A Bicep használatát javasoljuk, mert ugyanazokat a képességeket kínálja, mint az ARM-sablonok, és a szintaxis használata is egyszerűbb. További információ: Felügyeleti csoportok üzembe helyezései.

Támogatott erőforrások

Nem minden erőforrástípus helyezhető üzembe a felügyeleti csoport szintjén. Ez a szakasz felsorolja, hogy mely erőforrástípusok támogatottak.

Az Azure Blueprints esetében használja a következőt:

A Azure Policy a következőt használja:

Hozzáférés-vezérléshez használja a következőt:

Előfizetésekben vagy erőforráscsoportokban üzembe helyező beágyazott sablonok esetén használja a következőt:

Az erőforrások kezeléséhez használja a következőt:

A felügyeleti csoportok bérlőszintű erőforrások. Felügyeleti csoportokat azonban létrehozhat egy felügyeleti csoport üzemelő példányában, ha az új felügyeleti csoport hatókörét a bérlőre állítja. Lásd: Felügyeleti csoport.

Séma

A felügyeleti csoportok üzembe helyezéséhez használt séma eltér az erőforráscsoport üzemelő példányainak sémáitól.

Sablonokhoz használja a következőt:

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

A paraméterfájl sémája minden üzembehelyezési hatókör esetében megegyezik. Paraméterfájlok esetén használja a következőt:

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

Üzembehelyezési parancsok

A felügyeleti csoportban való üzembe helyezéshez használja a felügyeleti csoport üzembehelyezési parancsát.

Az Azure CLI-hez használja az az deployment mg create parancsot:

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"

Az ARM-sablonok üzembe helyezési parancsaival és beállításaival kapcsolatos további információkért lásd:

Üzembe helyezés helye és neve

A felügyeleti csoportszintű üzemelő példányok esetében meg kell adnia a központi telepítés helyét. Az üzemelő példány helye eltér az üzembe helyezhető erőforrások helyétől. Az üzembehelyezési hely határozza meg, hogy hol tárolja az üzembehelyezési adatokat. Az előfizetések és a bérlők üzembe helyezéséhez szintén szükség van egy helyre. Az erőforráscsoport üzemelő példányai esetében az erőforráscsoport helye az üzembehelyezési adatok tárolására szolgál.

Megadhatja a központi telepítés nevét, vagy használhatja az alapértelmezett központi telepítési nevet. Az alapértelmezett név a sablonfájl neve. Az azuredeploy.json nevű sablon üzembe helyezése például létrehozza az azuredeploy alapértelmezett üzembehelyezési nevét.

Minden üzembe helyezési név esetében a hely nem módosítható. Nem lehet üzembe helyezést létrehozni egy helyen, ha egy meglévő üzemelő példány ugyanazzal a névvel rendelkezik egy másik helyen. Ha például egy központi telepítés1 nevű felügyeleticsoport-telepítést hoz létre a centralusban, később nem hozhat létre egy másik üzembe helyezést a deployment1 névvel, hanem a westus helyével. Ha a hibakódot InvalidDeploymentLocationkapja, használjon másik nevet, vagy ugyanazt a helyet, mint az előző üzemelő példány.

Üzembehelyezési hatókörök

Felügyeleti csoportban való üzembe helyezéskor az erőforrásokat a következőre helyezheti üzembe:

  • a cél felügyeleti csoport a műveletből
  • egy másik felügyeleti csoport a bérlőben
  • előfizetések a felügyeleti csoportban
  • erőforráscsoportok a felügyeleti csoportban
  • az erőforráscsoport bérlője

A bővítményerőforrás hatóköre az üzembehelyezési céltól eltérő célra is kiterjedhet.

A sablont telepítő felhasználónak hozzáféréssel kell rendelkeznie a megadott hatókörhöz.

Ez a szakasz bemutatja, hogyan adhat meg különböző hatóköröket. Ezeket a különböző hatóköröket egyetlen sablonban kombinálhatja.

Hatókör a cél felügyeleti csoporthoz

A sablon erőforrások szakaszában definiált erőforrásokat a rendszer az üzembe helyezési parancsból alkalmazza a felügyeleti csoportra.

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

Hatókör másik felügyeleti csoportra

Egy másik felügyeleti csoport megcélzásához adjon hozzá egy beágyazott üzembe helyezést, és adja meg a tulajdonságot scope . Állítsa a scope tulajdonságot értékre a következő formátumban 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": "[format('Microsoft.Management/managementGroups/{0}', parameters('mgName'))]"
  },
  "resources": [
    {
      "type": "Microsoft.Resources/deployments",
      "apiVersion": "2022-09-01",
      "name": "nestedDeployment",
      "scope": "[variables('mgId')]",
      "location": "eastus",
      "properties": {
        "mode": "Incremental",
        "template": {
          management-group-resources-non-default
        }
      }
    }
  ],
  "outputs": {}
}

Hatókör az előfizetéshez

A felügyeleti csoporton belüli előfizetéseket is megcélozhatja. A sablont telepítő felhasználónak hozzáféréssel kell rendelkeznie a megadott hatókörhöz.

A felügyeleti csoporton belüli előfizetések megcélzásához használjon beágyazott üzembe helyezést és a tulajdonságot subscriptionId .

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

Hatókör az erőforráscsoporthoz

A felügyeleti csoporton belül is megcélozhat erőforráscsoportokat. A sablont telepítő felhasználónak hozzáféréssel kell rendelkeznie a megadott hatókörhöz.

A felügyeleti csoporton belüli erőforráscsoport megcélzásához használjon beágyazott üzembe helyezést. Állítsa be a és resourceGroup a subscriptionId tulajdonságot. Ne állítson be helyet a beágyazott üzembe helyezéshez, mert az az erőforráscsoport helyén van üzembe helyezve.

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

Ha felügyeleticsoport-telepítést szeretne használni egy erőforráscsoport létrehozásához egy előfizetésen belül, és egy tárfiókot szeretne üzembe helyezni az adott erőforráscsoportban, olvassa el az Üzembe helyezés az előfizetésben és az erőforráscsoportban című témakört.

Hatókör a bérlőre

Ha erőforrásokat szeretne létrehozni a bérlőben, állítsa a értéket a scope értékre /. A sablont telepítő felhasználónak rendelkeznie kell a bérlőn való üzembe helyezéshez szükséges hozzáféréssel.

Beágyazott üzembe helyezés használatához állítsa be a és locationa értéketscope.

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

Vagy beállíthatja a hatókört / bizonyos erőforrástípusokra, például a felügyeleti csoportokra. Az új felügyeleti csoport létrehozását a következő szakaszban ismertetjük.

Felügyeleti csoport

Ha felügyeleti csoportot szeretne létrehozni egy felügyeleti csoport üzemelő példányában, a hatókört / a felügyeleti csoporthoz kell beállítania.

Az alábbi példa egy új felügyeleti csoportot hoz létre a gyökérszintű felügyeleti csoportban.

{
  "$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": "2021-04-01",
      "name": "[parameters('mgName')]",
      "scope": "/",
      "location": "eastus",
      "properties": {}
    }
  ],
  "outputs": {
    "output": {
      "type": "string",
      "value": "[parameters('mgName')]"
    }
  }
}

A következő példa létrehoz egy új felügyeleti csoportot a szülőként megadott felügyeleti csoportban. Figyelje meg, hogy a hatókör értéke /.

{
  "$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": "2021-04-01",
      "scope": "/",
      "location": "eastus",
      "properties": {
        "details": {
          "parent": {
            "id": "[tenantResourceId('Microsoft.Management/managementGroups', parameters('parentMG'))]"
          }
        }
      }
    }
  ],
  "outputs": {
    "output": {
      "type": "string",
      "value": "[parameters('mgName')]"
    }
  }
}

Előfizetések

Ha ARM-sablont szeretne használni egy új Azure-előfizetés létrehozásához egy felügyeleti csoportban, tekintse meg a következő témakört:

Ha olyan sablont szeretne üzembe helyezni, amely áthelyez egy meglévő Azure-előfizetést egy új felügyeleti csoportba, olvassa el az Előfizetések áthelyezése ARM-sablonban című témakört.

Azure Policy

A felügyeleti csoportban üzembe helyezett egyéni szabályzatdefiníciók a felügyeleti csoport bővítményei. Az egyéni szabályzatdefiníció azonosítójának lekéréséhez használja a extensionResourceId() függvényt . A beépített szabályzatdefiníciók bérlőszintű erőforrások. Egy beépített szabályzatdefiníció azonosítójának lekéréséhez használja a tenantResourceId() függvényt .

Az alábbi példa bemutatja, hogyan definiálhat egy szabályzatot a felügyeleti csoport szintjén, és hogyan rendelheti hozzá.

{
  "$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": "2020-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": "2020-09-01",
      "dependsOn": [
        "[variables('policyDefinition')]"
      ],
      "properties": {
        "scope": "[variables('mgScope')]",
        "policyDefinitionId": "[extensionResourceId(variables('mgScope'), 'Microsoft.Authorization/policyDefinitions', variables('policyDefinition'))]"
      }
    }
  ]
}

Üzembe helyezés előfizetésben és erőforráscsoportban

Felügyeleti csoportszintű üzembe helyezés esetén a felügyeleti csoporton belül megcélzhat egy előfizetést. Az alábbi példa létrehoz egy erőforráscsoportot egy előfizetésen belül, és üzembe helyez egy tárfiókot az adott erőforráscsoportban.

{
  "$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": "2021-04-01",
      "name": "nestedSub",
      "location": "[parameters('nestedLocation')]",
      "subscriptionId": "[parameters('nestedSubId')]",
      "properties": {
        "mode": "Incremental",
        "template": {
          "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
          "contentVersion": "1.0.0.0",
          "parameters": {
          },
          "variables": {
          },
          "resources": [
            {
              "type": "Microsoft.Resources/resourceGroups",
              "apiVersion": "2021-04-01",
              "name": "[parameters('nestedRG')]",
              "location": "[parameters('nestedLocation')]"
            }
          ]
        }
      }
    },
    {
      "type": "Microsoft.Resources/deployments",
      "apiVersion": "2021-04-01",
      "name": "nestedRG",
      "subscriptionId": "[parameters('nestedSubId')]",
      "resourceGroup": "[parameters('nestedRG')]",
      "dependsOn": [
        "nestedSub"
      ],
      "properties": {
        "mode": "Incremental",
        "template": {
          "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
          "contentVersion": "1.0.0.0",
          "resources": [
            {
              "type": "Microsoft.Storage/storageAccounts",
              "apiVersion": "2021-04-01",
              "name": "[parameters('storageAccountName')]",
              "location": "[parameters('nestedLocation')]",
              "kind": "StorageV2",
              "sku": {
                "name": "Standard_LRS"
              }
            }
          ]
        }
      }
    }
  ]
}

Következő lépések