Sdílet prostřednictvím


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 vaše organizace zralá, 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žít zásady a přiřadit role na úrovni skupiny pro správu.

Školicí materiály

Pokud byste se raději dozvěděli 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í Bicep.

Podporované prostředky

Ne všechny typy prostředků je možné nasadit na úrovni skupiny pro správu. 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.

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 opříkazch

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 mají ukládat data nasazení. Nasazení předplatného a tenanta také vyžadují umístění. Pro nasazení skupin 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 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 existující 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 jiné nasazení s názvem nasazení1, 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 předchozí nasazení.

Obory 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í 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.

Rozsah 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 slovem resource .

targetScope = 'managementGroup'

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

Pokud chcete cílit na jinou skupinu pro správu, přidejte modul. K nastavení scope vlastnosti použijte funkci managementGroup. 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 předplatného

Můžete také cílit na předplatná v rámci skupiny pro správu. Uživatel, který šablonu nasazuje, 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 předplatnéhoscope. 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)
}

Rozsah na skupinu prostředků

Můžete také cílit na skupiny prostředků v rámci skupiny pro správu. 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 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 / 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@2023-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 cílem nasazení. Používá funkci skupiny pro správu.

targetScope = 'managementGroup'

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

resource newMG 'Microsoft.Management/managementGroups@2023-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:

Nasazení šablony, která přesune existující předplatné Azure do nové skupiny pro správu, najdete v tématu 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. Pokud chcete získat 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ásady, použijte funkci tenantResourceId().

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

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@2023-04-01' = {
  name: 'locationRestriction'
  properties: {
    policyType: 'Custom'
    mode: 'All'
    parameters: {}
    policyRule: {
      if: {
        not: {
          field: 'location'
          in: allowedLocations
        }
      }
      then: {
        effect: 'deny'
      }
    }
  }
}

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

Další kroky

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