AZURE LANDING ZONE → STACKIT · ARCHITECTUUR

Azure landing zones en de STACKIT-doelarchitectuur

Een Azure landing zone is een platformlaag van management groups, subscriptions, een hubnetwerk, policy en centrale logging. STACKIT kent folders, projecten en een Network Area, maar geen policy-engine en geen beheerde firewall in de Terraform-provider. Deze pagina laat zien wat StackToIT per onderdeel van een hub-and-spoke-zone opstelt en welke ontwerpvragen bij uw architecten blijven.

Management groups worden folders

Een voor deze pagina opgestelde demo-landing-zone, op 4 november 2026 beoordeeld door StackToIT: twee management groups, een policytoewijzing, een hub- en een spoke-netwerk met peering, een firewall, een routetabel, een Log Analytics-workspace en een roltoewijzing. Links: de invoer. Rechts: de resourceblokken van de STACKIT-Terraform die de engine schreef; de beoordelingsopmerkingen boven elk blok zijn hier weggelaten.

Voorbeeldinvoermain.tf
resource "azurerm_management_group" "platform" {
  display_name = "Platform"
  name         = "mg-platform"
}

resource "azurerm_management_group" "landing_zones" {
  display_name               = "Landing Zones"
  name                       = "mg-landing-zones"
  parent_management_group_id = azurerm_management_group.platform.id
}
STACKIT-Terraform van StackToITterraform/organisation.tf
resource "stackit_resourcemanager_folder" "platform" {
  name                = "Platform"
  parent_container_id = var.folder_parent_container_id
  owner_email         = var.folder_owner_email
}

resource "stackit_resourcemanager_folder" "landing_zones" {
  name                = "landing-zones"
  parent_container_id = stackit_resourcemanager_folder.platform.container_id
  owner_email         = var.folder_owner_email
}
  • De hiërarchie blijft behouden

    De onderliggende management group wordt een onderliggende folder, via de verwijzing naar de bovenliggende folder. Controleer dat aan de hand van de documentatie van STACKIT Resource Manager, die (per november 2026) meldt dat STACKIT momenteel één niveau folderhiërarchie ondersteunt: een folder in een folder is mogelijk niet toepasbaar zoals opgesteld, dus vlak de boomstructuur af of plaats de tweede folder direct onder de organisatie. De run vermeldt dat roltoewijzingen op een STACKIT-folder gelden voor de projecten daarin; de pagina over toegangsbeheer van STACKIT die voor deze gids is geraadpleegd, beschrijft die overerving niet, dus test dit voordat u erop vertrouwt.

  • De identifier blijft niet behouden

    De ID van de management group wordt niet overgenomen, omdat STACKIT zelf de folder-ID toekent. De weergavenaam wordt omgezet in een geldige STACKIT-naam, dus Landing Zones wordt landing-zones.

  • Waarden die u aanlevert

    De bovenliggende container en een e-mailadres van de eigenaar hebben geen standaardwaarde: de folders komen onder de organisatie of onder een bestaande folder die u noemt.

Peering wordt een Network Area

Uit dezelfde run. Twee VNets en hun peerings worden vervangen door één Network Area voor de organisatie. Netwerken van projecten in het gebied routeren onderling privé.

Voorbeeldinvoermain.tf
resource "azurerm_virtual_network_peering" "hub_to_spoke" {
  name                      = "hub-to-spoke-orders"
  resource_group_name       = azurerm_resource_group.hub.name
  virtual_network_name      = azurerm_virtual_network.hub.name
  remote_virtual_network_id = azurerm_virtual_network.spoke.id
}

resource "azurerm_virtual_network_peering" "spoke_to_hub" {
  name                      = "spoke-orders-to-hub"
  resource_group_name       = azurerm_resource_group.spoke.name
  virtual_network_name      = azurerm_virtual_network.spoke.name
  remote_virtual_network_id = azurerm_virtual_network.hub.id
}
STACKIT-Terraform van StackToITterraform/network.tf
resource "stackit_network_area" "migrated" {
  organization_id = var.organization_id
  name            = "migrated-network-area"
}

resource "stackit_network_area_region" "migrated" {
  organization_id = var.organization_id
  network_area_id = stackit_network_area.migrated.network_area_id
  ipv4 = {
    network_ranges   = [for p in var.network_area_ranges : { prefix = p }]
    transfer_network = var.network_area_transfer_network
  }
}
  • Instellingen per peering vervallen

    Het gebied kent geen instellingen per peering, dus de namen, gateway transit, doorgestuurd verkeer en subnetselectie van de peerings worden niet gegenereerd. De run vraagt u de routering van het gebied te controleren.

  • Projecten sluiten bij het aanmaken aan

    De opmerking in het bestand meldt dat de projecten van de gemigreerde netwerken in het gebied moeten worden aangemaakt met een networkArea-label, en dat dit niet meer kan worden gewijzigd zodra het project bestaat. Bepaal het gebied voordat u projecten aanmaakt.

  • Bereiken en transfernetwerk

    Het gebied neemt standaard de adresruimten van de VNets over als bereiken. Het transfernetwerk, een CIDR-bereik dat de netwerken niet gebruiken, heeft geen standaardwaarde.

Wat de engine aan een architect overdraagt

De firewall, de routetabel en de policytoewijzing worden geen resourceblokken. Links: de drie invoerblokken. Rechts: golf 1 en 3 uit het sequencingbestand van de run, migration/technical-sequencing.md, met de klasse en het zekerheidsniveau van elke eenheid; golf 2 is hier weggelaten. De invoerblokken staan niet naast elkaar in main.tf, dus elk heeft een eigen paneel, letterlijk weergegeven.

Invoer: azurerm_subscription_policy_assignment.allowed_locationsmain.tf
resource "azurerm_subscription_policy_assignment" "allowed_locations" {
  name                 = "allowed-locations"
  subscription_id      = "/subscriptions/00000000-0000-0000-0000-000000000000"
  policy_definition_id = "/providers/Microsoft.Authorization/policyDefinitions/e56962a6-4747-49cd-b67b-bf8b01975c4c"

  parameters = jsonencode({
    listOfAllowedLocations = { value = ["germanywestcentral", "northeurope"] }
  })
}
Invoer: azurerm_firewall.hub, azurerm_route_table.spokemain.tf
resource "azurerm_firewall" "hub" {
  name                = "fw-hub"
  location            = azurerm_resource_group.hub.location
  resource_group_name = azurerm_resource_group.hub.name
  sku_name            = "AZFW_VNet"
  sku_tier            = "Standard"

  ip_configuration {
    name                 = "primary"
    subnet_id            = azurerm_subnet.firewall.id
    public_ip_address_id = azurerm_public_ip.firewall.id
  }
}

resource "azurerm_route_table" "spoke" {
  name                = "rt-spoke-orders"
  location            = azurerm_resource_group.spoke.location
  resource_group_name = azurerm_resource_group.spoke.name

  route {
    name                   = "default-via-firewall"
    address_prefix         = "0.0.0.0/0"
    next_hop_type          = "VirtualAppliance"
    next_hop_in_ip_address = "10.0.0.4"
  }
}
StackToIT-migratieplanmigration/technical-sequencing.md
## Wave 1 — 7 unit(s)

| Unit | Class | Target |
|---|---|---|
| `azurerm_log_analytics_workspace.platform` | RECONFIGURE / MEDIUM | STACKIT Logs / Observability |
| `azurerm_management_group.platform` | RECONFIGURE / MEDIUM | STACKIT folder |
| `azurerm_public_ip.firewall` | RECONFIGURE / MEDIUM | implicit (belongs to the gateway, firewall or load balancer) |
| `azurerm_route_table.spoke` | MANUAL_REVIEW / LOW | — |
| `azurerm_subscription_policy_assignment.allowed_locations` | REDESIGN / MEDIUM | none managed — policy as code in the delivery pipeline (e.g. OPA/Conftest, Checkov) |
| `azurerm_virtual_network.hub` | RECONFIGURE / MEDIUM | STACKIT project networking / Network Area (SNA) |
| `azurerm_virtual_network.spoke` | RECONFIGURE / MEDIUM | STACKIT project networking / Network Area (SNA) |

## Wave 3 — 1 unit(s)

| Unit | Class | Target |
|---|---|---|
| `azurerm_firewall.hub` | MANUAL_REVIEW / LOW | — |
  • Azure Firewall: MANUAL_REVIEW

    De run meldt dat Azure Firewall geen STACKIT-equivalent in general availability heeft. STACKIT Unified Firewall is een opt-in-functie die nog kan veranderen en nog niet in de Terraform-provider zit, dus het ontwerp kiest tussen die functie, security groups of een firewall-appliance op STACKIT-servers.

  • Routetabel: MANUAL_REVIEW

    De routes die de scan toont, vormen een ondergrens, omdat BGP-routepropagatie standaard aanstaat en routes kan toevoegen die de configuratie niet beschrijft. Een tabel die uit de vermelde routes wordt opgesteld, zou smaller zijn dan de bron, dus er wordt geen tabel opgesteld en de Network Architect beslist.

  • Policytoewijzing: REDESIGN

    STACKIT kent geen equivalent van een policy-engine. De guardrails gaan naar de pipeline die de Terraform toepast (policy as code, bijvoorbeeld OPA of Checkov) en naar het rollenontwerp van de organisatie.

Hoe de landing zone wordt gekoppeld

Azure-resourceSTACKIT-doelMigratieklasse
Management groupsSTACKIT-foldersHerconfiguratie
PolicytoewijzingGeen beheerde tegenhanger: policy as code in de deliverypipelineRedesign
Hub- en spoke-VNetsNetwork Area en STACKIT-netwerkenHerconfiguratie
VNet-peeringsNetwork Area, regio en routesHerconfiguratie
Workload-subnetSTACKIT-netwerk met hetzelfde IPv4-prefixHerconfiguratie
Firewall-subnet en openbaar IP-adresGeen resource: ze horen bij de Azure-firewallHerconfiguratie
Azure FirewallDoor een architect te bepalenBeslissing van de architect
Routetabel met een route naar een virtuele applianceRoutingtabel, te bepalen zodra de set routes bekend isBeslissing van de architect
Log Analytics-workspaceSTACKIT Logs-instance (en Observability voor metrics)Herconfiguratie

Klassen zoals de run ze bepaalde: 10 RECONFIGURE, 2 MANUAL_REVIEW en 1 REDESIGN over 13 eenheden. Daarvan zijn er 6 opgesteld, hebben er 4 geen resource nodig en worden er 3 voor een medewerker aangehouden.

Drie manieren om het doel te bouwen

De run stelt per eenheid één doel voor, geen organisatie. Dit zijn de indelingen die architecten gewoonlijk afwegen, en wat elke indeling betekent voor de bovenstaande eenheden. De indelingen komen uit de praktijk; de beoordeling van elke eenheid komt uit de run.

IndelingWat het betekentLet op
Folders en één project per workloadomgeving, verbonden via een Network AreaHet dichtst bij een landing zone: platform- en workloadfolders, privéroutering tussen projecten, rollen op folders. De run stelt deze vorm op.Het gebied en het projectlabel liggen vast bij het aanmaken. Het gebied wordt per regio ingeschakeld, en de STACKIT-documentatie meldt dat verkeer tussen regio's momenteel via het openbare internet gaat.
Folders en projecten zonder Network AreaElk project behoudt een eigen netwerk en wordt bereikt via service endpoints en toegangslijsten.Hub-and-spoke-routering en centrale egress hebben geen equivalent, dus workloads die op de hub steunden, worden opnieuw ontworpen.
Network Area met een firewall-appliance op serversGeforceerde routering via een centrale appliance, zoals de hubfirewall deed.U beheert en patcht de appliance zelf, en de run stelt die niet op. Bepaal eerst de routes.

Beslis in deze volgorde

  1. 1. Organisatie en folders

    De network area en de routingtabellen zijn organisatieresources, en de folders staan onder de container die u noemt. Leg dit eerst vast; de andere stappen hebben de ID's ervan nodig.

  2. 2. De network area en de bereiken

    Kies de bereiken en het transfernetwerk en maak daarna de projecten aan binnen het gebied. Maak ze niet eerder aan.

  3. 3. Projecten en rollen

    De scope van de resourcegroep van elke resource is een openstaande instelling. STACKIT kent geen resourcegroepen, dus u koppelt de grenzen van de oude groepen aan projecten en aan rollen op folders en projecten.

  4. 4. Routes en egress

    Neem de routeringsbeslissing die de run opwierp en bepaal hoe uitgaand verkeer de netwerken verlaat. De run kon niet aantonen hoe het workload-subnet in Azure het internet bereikte.

  5. 5. Logging

    Het concept maakt een Logs-instance met 90 dagen retentie. Maak, voordat een bron ernaar schrijft, een schrijftoegangstoken aan en stel de toegangslijst in; het concept doet geen van beide.

  6. 6. Guardrails als code

    Zet de policytoewijzing over naar de pipeline die de Terraform toepast, voordat de eerste workload wordt toegepast.

Wat de Azure landing zone biedt en STACKIT niet

  • Subscriptions als uitgifte-eenheid

    De run behandelt elke subscription en resourcegroep als een indelingsvraag. STACKIT-projecten vervullen die rol, en het aanmaken ervan is een proces dat u zelf ontwerpt.

  • Centrale policy

    Geen beheerde engine toetst resources aan regels. Uw deliverypipeline doet dat wel.

  • Beheerde centrale firewall

    Niet beschikbaar als opgestelde resource; het ontwerp beslist.

  • Monitoring op basis van workspaces

    KQL-query's, workbooks en alerts worden herschreven voor de tools van de STACKIT-diensten Logs en Observability.

Vragen die platformteams stellen

Wordt een management group één op één gekoppeld aan een folder?

De run schrijft een folder voor elke management group en behoudt de relatie met de bovenliggende. STACKIT documenteert per november 2026 één niveau folderhiërarchie, dus een diepere boom van management groups moet worden afgevlakt. De ID van de management group wordt niet overgenomen en de folder wordt genoemd naar de weergavenaam.

Wat vervangt VNet-peering?

Een STACKIT Network Area voor de organisatie. Netwerken van projecten in het gebied routeren privé naar elkaar, en het platform past de routingtabellen van de projectrouters aan. Het gebied wordt per regio ingeschakeld.

Waar gaan de regels van Azure Policy naartoe?

Naar policy as code in de pipeline die de Terraform toepast, en naar het rollenontwerp. De run classificeert een policytoewijzing als REDESIGN omdat er geen equivalente engine is.

Maakt een firewall deel uit van het concept?

Nee. Azure Firewall is geclassificeerd als MANUAL_REVIEW met zekerheidsniveau LOW, en het concept bevat geen firewallresource. De architecten kiezen tussen een opt-in-firewallfunctie van STACKIT, security groups of een appliance.

Bronnen

Uw volgende stap: STACKIT.

Vertel ons over uw omgeving, dan laten wij zien wat StackToIT daarvoor oplevert: doelarchitectuur, Terraform-artefacten en een gestructureerd migratieplan.

Laat uw gegevens achter, onze specialisten nemen contact met u op.

Liever zelf een e-mail sturen? connect@stacktoit.com

Wij gebruiken uw gegevens alleen om dit verzoek te beantwoorden en een mogelijke pilot te bespreken. Privacyverklaring