Nasazení skupin pro správu se soubory Bicep

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

Jak vaše organizace zraje, můžete nasadit soubor Bicep a vytvořit prostředky na úrovni skupiny pro správu. Může být například potřeba definovat a přiřadit 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.

Školicí materiály

Pokud se chcete raději dozvědět o oborech nasazení prostřednictvím podrobných pokynů, přečtěte si téma Nasazení prostředků do předplatných, skupin pro správu a tenantů pomocí nástroje Bicep.

Podporované prostředky

Na úroveň skupiny pro správu není možné nasadit všechny typy prostředků. Tato část obsahuje 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 nasazují do předplatných nebo skupin prostředků, použijte:

Ke správě 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.

Nastavit obor

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 pro nasazení skupiny pro správu.

Pro 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 nasazení a možnostech nasazení šablon ARM najdete tady:

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é nasazujete. Umístění nasazení určuje, kam se mají ukládat data nasazení. Nasazení předplatného a tenanta také vyžadují umístění. U nasazení skupin prostředků se umístění skupiny prostředků používá k uložení 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 main.bicep vytvoří výchozí název nasazení main.

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 v centralus vytvoříte nasazení skupiny pro správu s názvem deployment1, nemůžete později vytvořit další nasazení s názvem deployment1, ale umístěním westus. Pokud se zobrazí kód InvalidDeploymentLocationchyby , použijte pro tento název jiný název nebo stejné umístění jako v předchozím nasazení.

Rozsahy nasazení

Při nasazování do skupiny pro správu můžete prostředky nasadit 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í je možné omezit na cíl, který se liší od cíle nasazení.

Uživatel nasazující šablonu 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 je pomocí klíčového resource slova .

targetScope = 'managementGroup'

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

Pokud chcete cílit na jinou skupinu pro správu, přidejte modul. Pomocí funkce managementGroup nastavte scope vlastnost . 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 nasazující šablonu 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 odběruscope. 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 nasazující šablonu 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í scope vlastnosti použijte funkci resourceGroup. 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. Pomocí funkce tenanta nastavte jeho scope vlastnost. Uživatel, který šablonu nasazuje, 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 popsáno 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@2021-04-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 určená pro nasazení. Používá funkci skupiny pro správu.

targetScope = 'managementGroup'

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

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

output newManagementGroup string = mgName

Předplatná

Pokud chcete 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řesune 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 nasazené do skupiny pro správu jsou rozšíření skupiny pro správu. K získání ID definice vlastní zásady použijte funkci extensionResourceId(). Předdefinované definice zásad jsou prostředky na úrovni tenanta. Pokud chcete získat ID předdefinované definice zásad, 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@2021-06-01' = {
  name: 'locationRestriction'
  properties: {
    policyType: 'Custom'
    mode: 'All'
    parameters: {}
    policyRule: {
      if: {
        not: {
          field: 'location'
          in: allowedLocations
        }
      }
      then: {
        effect: 'deny'
      }
    }
  }
}

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

Další kroky

Další informace o dalších oborech najdete tady: