Nasazení skupin pro správu se soubory Bicep

Tento článek popisuje, jak nastavit obor pomocí Bicep při nasazování do skupiny pro správu.

Jak se vaše organizace zkostná, můžete nasadit soubor Bicep a vytvořit prostředky na úrovni skupiny pro správu. Například může být potřeba definovat a přiřazovat zásady nebo řízení přístupu na základě role v Azure (Azure RBAC) pro skupinu pro správu. Pomocí šablon na úrovni skupiny pro správu můžete deklarativně používat zásady a přiřazovat role na úrovni skupiny pro správu.

Microsoft Learn

Další informace o oborech nasazení a pokyny najdete v tématu Nasazení prostředků do předplatných, skupin pro správu a tenantů pomocí Bicep na Microsoft Learn.

Podporované prostředky

Ne všechny typy prostředků je možné nasadit na úroveň skupiny pro správu. V této části je uveden seznam podporovaných typů prostředků.

Pro Azure Blueprints použijte:

Pro Azure Policy použijte:

Pro řízení přístupu použijte:

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

Pro správu prostředků použijte:

Skupiny pro správu jsou prostředky na úrovni tenanta. Skupiny pro správu však můžete vytvořit v nasazení skupiny pro správu nastavením oboru nové skupiny pro správu na tenanta. Viz Skupina pro správu.

Nastavení oboru

Pokud chcete nastavit obor na skupinu pro správu, použijte:

targetScope = 'managementGroup'

Příkazy nasazení

K nasazení do skupiny pro správu použijte příkazy nasazení skupiny pro správu.

V případě Azure CLI použijte příkaz 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 a možnostech nasazení šablon ARM najdete v těchto tématu:

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

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

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 main.bicep vytvoří výchozí název nasazení hlavního souboru.

Pro každý název nasazení je umístění neměnné. Nasazení nemůžete vytvořit v jednom umístění, pokud existuje nasazení se stejným názvem v jiném umístění. 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. Pokud se zobrazí kód chyby , použijte pro tento název jiný název nebo stejné umístění jako InvalidDeploymentLocation předchozí nasazení.

Obory nasazení

Při nasazování do skupiny pro správu můžete nasadit prostředky do:

  • cílová skupina pro správu z operace
  • jiná skupina pro správu v tenantovi
  • předplatná ve skupině pro správu
  • skupiny prostředků ve skupině pro správu
  • tenant pro skupinu 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 nasazovat, musí mít přístup k zadanému oboru.

Obor na skupinu pro správu

Pokud chcete nasadit prostředky do cílové skupiny pro správu, přidejte tyto prostředky s klíčovým resource slovem .

targetScope = 'managementGroup'

// policy definition created in the management group
resource policyDefinition 'Microsoft.Authorization/policyDefinitions@2019-09-01' = {
  ...
}

Pokud chcete cílit na jinou skupinu pro správu, přidejte modul. K nastavení vlastnosti použijte funkci managementGroup. scope Zadejte název skupiny pro správu.

targetScope = 'managementGroup'

param otherManagementGroupName string

// module deployed at management group level but in a different management group
module exampleModule 'module.bicep' = {
  name: 'deployToDifferentMG'
  scope: managementGroup(otherManagementGroupName)
}

Rozsah na předplatné

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

Pokud chcete cílit na předplatné v rámci skupiny pro správu, přidejte modul. K nastavení vlastnosti použijte funkci scope subscription. Zadejte ID předplatného.

targetScope = 'managementGroup'

param subscriptionID string

// module deployed to subscription in the management group
module exampleModule 'module.bicep' = {
  name: 'deployToSub'
  scope: subscription(subscriptionID)
}

Obor na skupinu prostředků

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

Pokud chcete cílit na skupinu prostředků v rámci skupiny pro správu, přidejte modul. K nastavení vlastnosti použijte funkci resourceGroup. scope Zadejte ID předplatného a název skupiny prostředků.

targetScope = 'managementGroup'

param subscriptionID string
param resourceGroupName string

// module deployed to resource group in the management group
module exampleModule 'module.bicep' = {
  name: 'deployToRG'
  scope: resourceGroup(subscriptionID, resourceGroupName)
}

Rozsah na tenanta

Pokud chcete vytvořit prostředky v tenantovi, přidejte modul. K nastavení vlastnosti použijte funkci scope tenanta. Uživatel, který šablonu nasazovat, musí mít požadovaný přístup k nasazení v tenantovi.

targetScope = 'managementGroup'

// module deployed at tenant level
module exampleModule 'module.bicep' = {
  name: 'deployToTenant'
  scope: tenant()
}

Nebo můžete nastavit rozsah na pro / některé typy prostředků, jako jsou skupiny pro správu. Vytvoření nové skupiny pro správu je popsané v další části.

Skupina pro správu

Pokud chcete vytvořit skupinu pro správu v nasazení skupiny pro správu, musíte nastavit obor na tenanta.

Následující příklad vytvoří novou skupinu pro správu v kořenové skupině pro správu.

targetScope = 'managementGroup'

param mgName string = 'mg-${uniqueString(newGuid())}'

resource newMG 'Microsoft.Management/managementGroups@2020-05-01' = {
  scope: tenant()
  name: mgName
  properties: {}
}

output newManagementGroup string = mgName

Další příklad vytvoří novou skupinu pro správu ve skupině pro správu, která je zaměřená na nasazení. Používá funkci skupiny pro správu.

targetScope = 'managementGroup'

param mgName string = 'mg-${uniqueString(newGuid())}'

resource newMG 'Microsoft.Management/managementGroups@2020-05-01' = {
  scope: tenant()
  name: mgName
  properties: {
    details: {
      parent: {
        id: managementGroup().id
      }
    }
  }
}

output newManagementGroup string = mgName

Předplatná

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:

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 .

Azure Policy

Vlastní definice zásad, které jsou nasazené ve skupině pro správu, jsou rozšířeními skupiny pro správu. K získání ID vlastní definice zásady použijte funkci extensionResourceId () . Předdefinované definice zásad jsou prostředky na úrovni tenanta. K získání ID předdefinované definice zásady použijte funkci tenantResourceId () .

Následující příklad ukazuje, jak definovat zásadu na úrovni skupiny pro správu a přiřadit ji.

targetScope = 'managementGroup'

@description('An array of the allowed locations, all other locations will be denied by the created policy.')
param allowedLocations array = [
  'australiaeast'
  'australiasoutheast'
  'australiacentral'
]

resource policyDefinition 'Microsoft.Authorization/policyDefinitions@2020-09-01' = {
  name: 'locationRestriction'
  properties: {
    policyType: 'Custom'
    mode: 'All'
    parameters: {}
    policyRule: {
      if: {
        not: {
          field: 'location'
          in: allowedLocations
        }
      }
      then: {
        effect: 'deny'
      }
    }
  }
}

resource policyAssignment 'Microsoft.Authorization/policyAssignments@2020-09-01' = {
  name: 'locationAssignment'
  properties: {
    policyDefinitionId: policyDefinition.id
  }
}

Další kroky

Další informace o dalších oborech najdete v těchto tématech: