AZURE LANDING ZONE → STACKIT · ARCHITEKTUR
Azure Landing Zones und die STACKIT-Zielarchitektur
Eine Azure Landing Zone ist eine Plattformschicht aus Management Groups, Subscriptions, Hub-Netzwerk, Policy und zentralem Logging. STACKIT hat Ordner, Projekte und eine Network Area, aber keine Policy-Engine und keine verwaltete Firewall im Terraform-Provider. Diese Seite zeigt, was StackToIT für jeden Teil einer Hub-and-Spoke-Zone entwirft und welche Designfragen bei Ihren Architekten bleiben.
Management Groups werden zu Ordnern
Eine für diese Seite geschriebene Demo-Landing-Zone, am 4. November 2026 von StackToIT bewertet: zwei Management Groups, eine Policy-Zuweisung, ein Hub- und ein Spoke-Netzwerk mit Peering, eine Firewall, eine Route Table, ein Log-Analytics-Workspace und eine Rollenzuweisung. Links die Eingabe, rechts die Ressourcenblöcke, die die Engine als STACKIT-Terraform geschrieben hat; die Prüfkommentare über jedem Block sind hier ausgelassen.
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
}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
}Die Hierarchie bleibt
Die untergeordnete Management Group wird über den Verweis auf den übergeordneten Ordner zum Unterordner. Gleichen Sie das mit der Dokumentation des STACKIT Resource Manager ab: Sie besagt (Stand November 2026), dass STACKIT derzeit nur eine Ebene der Ordnerhierarchie unterstützt. Ein Ordner in einem Ordner lässt sich so wie entworfen womöglich nicht anwenden; flachen Sie den Baum ab oder hängen Sie den zweiten Ordner direkt unter die Organisation. Laut Lauf gelten Rollenzuweisungen auf einem STACKIT-Ordner für dessen Projekte. Die für diesen Leitfaden geöffnete STACKIT-Seite zur Zugriffssteuerung beschreibt diese Vererbung nicht; testen Sie sie also, bevor Sie sich darauf verlassen.
Die Kennung bleibt nicht
Die Management-Group-ID wird nicht übernommen, weil STACKIT die Ordner-ID selbst vergibt. Der Anzeigename wird in einen gültigen STACKIT-Namen umgeformt; aus „Landing Zones“ wird landing-zones.
Werte, die Sie liefern
Der übergeordnete Container und eine Eigentümer-E-Mail-Adresse haben keinen Standardwert: Die Ordner liegen unter der Organisation oder einem bestehenden Ordner, den Sie nennen.
Peering wird zur Network Area
Aus demselben Lauf. Zwei VNets und ihre Peerings werden durch eine Network Area der Organisation ersetzt. Netzwerke von Projekten in der Area erreichen sich gegenseitig über private Routen.
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
}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
}
}Einstellungen je Peering entfallen
Die Area kennt keine Einstellungen je Peering, daher werden Namen, Gateway-Transit, weitergeleiteter Verkehr und Subnetzauswahl der Peerings nicht erzeugt. Der Lauf verlangt, das Routing der Area zu prüfen.
Projekte kommen bei der Anlage in die Area
Der Kommentar in der Datei sagt, dass die Projekte der migrierten Netzwerke mit einem networkArea-Label in der Area angelegt werden müssen und dass sich das nach der Anlage nicht ändern lässt. Entscheiden Sie die Area, bevor Sie Projekte anlegen.
Bereiche und Transfernetzwerk
Die Area übernimmt standardmäßig die Adressräume der VNets als Bereiche. Das Transfernetzwerk, ein CIDR, das die Netzwerke nicht nutzen, hat keinen Standardwert.
Was die Engine einem Architekten übergibt
Firewall, Routentabelle und Policy-Zuweisung werden nicht zu Ressourcenblöcken. Links die drei Eingabeblöcke. Rechts die Wellen 1 und 3 aus der Sequenzierungsdatei des Laufs, migration/technical-sequencing.md, mit Klasse und Konfidenz jeder Einheit; Welle 2 ist hier ausgelassen. Die Eingabeblöcke stehen in main.tf nicht direkt hintereinander; jeder steht deshalb wörtlich in einem eigenen Ausschnitt.
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"] }
})
}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"
}
}## 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
Der Lauf sagt, dass Azure Firewall kein allgemein verfügbares STACKIT-Gegenstück hat. STACKIT Unified Firewall ist eine zuschaltbare Funktion, die sich noch ändern kann, und steckt noch nicht im Terraform-Provider; das Design wählt also zwischen ihr, Security Groups oder einer Firewall-Appliance auf STACKIT-Servern.
Route Table: MANUAL_REVIEW
Die Routen, die der Scan aufführt, sind eine Untergrenze, denn BGP-Route-Propagation ist standardmäßig an und kann Routen ergänzen, die die Konfiguration nicht schreibt. Eine aus den gelisteten Routen entworfene Tabelle wäre schmaler als die Quelle; daher wird keine entworfen, und der Network Architect entscheidet.
Policy-Zuweisung: REDESIGN
STACKIT hat kein Policy-Engine-Gegenstück. Die Leitplanken wandern in die Pipeline, die das Terraform anwendet (Policy as Code, zum Beispiel OPA oder Checkov), und in das Rollendesign der Organisation.
So wird die Landing Zone zugeordnet
| Azure-Ressource | STACKIT-Ziel | Migrationsklasse |
|---|---|---|
| Management Groups | STACKIT-Ordner | Rekonfigurieren |
| Policy-Zuweisung | Kein verwaltetes Gegenstück: Policy as Code in der Delivery-Pipeline | Redesign |
| Hub- und Spoke-VNets | Network Area und STACKIT-Netzwerke | Rekonfigurieren |
| VNet-Peerings | Network Area, Region und Routen | Rekonfigurieren |
| Workload-Subnetz | STACKIT-Netzwerk mit demselben IPv4-Präfix | Rekonfigurieren |
| Firewall-Subnetz und öffentliche IP | Keine Ressource: Sie gehören zur Azure Firewall | Rekonfigurieren |
| Azure Firewall | Entscheidung durch einen Architekten | Architekturentscheidung |
| Route Table mit Route über eine virtuelle Appliance | Routing-Tabelle, sobald die Routenmenge bekannt ist | Architekturentscheidung |
| Log-Analytics-Workspace | STACKIT-Logs-Instanz (und Observability für Metriken) | Rekonfigurieren |
Klassen so, wie der Lauf sie entschieden hat: 10 RECONFIGURE, 2 MANUAL_REVIEW und 1 REDESIGN über 13 Einheiten. 6 davon wurden entworfen, 4 brauchen keine Ressource und 3 sind für eine Person zurückgestellt.
Drei Wege, das Ziel zu bauen
Der Lauf schlägt je Einheit ein Ziel vor, keine Organisation. Dies sind die Aufbauten, die Architekten üblicherweise abwägen, und was jeder für die obigen Einheiten bedeutet. Die Aufbauten sind Praxis; die Bewertung jeder Einheit stammt aus dem Lauf.
| Aufbau | Bedeutung | Worauf achten |
|---|---|---|
| Ordner und je ein Projekt pro Workload-Umgebung, verbunden durch eine Network Area | Der Landing Zone am nächsten: Plattform- und Workload-Ordner, privates Routing zwischen Projekten, Rollen auf Ordnern. Diese Form entwirft der Lauf. | Area und Projekt-Label stehen bei der Anlage fest. Die Area wird je Region freigeschaltet, und laut STACKIT-Dokumentation läuft Verkehr zwischen Regionen derzeit über das öffentliche Internet. |
| Ordner und Projekte ohne Network Area | Jedes Projekt behält sein eigenes Netzwerk und wird über Dienst-Endpunkte und Zugriffslisten erreicht. | Hub-and-Spoke-Routing und zentraler Egress haben kein Gegenstück; Workloads, die auf den Hub angewiesen waren, werden neu entworfen. |
| Network Area mit Firewall-Appliance auf Servern | Erzwungenes Routing über eine zentrale Appliance, wie es die Hub-Firewall tat. | Sie betreiben und patchen die Appliance, und der Lauf entwirft sie nicht. Entscheiden Sie zuerst die Routen. |
In dieser Reihenfolge entscheiden
1. Organisation und Ordner
Network Area und Routing-Tabellen sind Organisationsressourcen, und die Ordner liegen unter dem Container, den Sie nennen. Legen Sie das zuerst fest; die weiteren Schritte brauchen seine IDs.
2. Die Network Area und ihre Bereiche
Wählen Sie Adressbereiche und Transfernetzwerk und legen Sie erst dann die Projekte in der Area an, nicht umgekehrt.
3. Projekte und Rollen
Der Ressourcengruppen-Scope jeder Ressource ist eine offene Einstellung. STACKIT kennt keine Ressourcengruppen; Sie bilden daher die Grenzen der alten Gruppen auf Projekte und auf Rollen an Ordnern und Projekten ab.
4. Routen und Egress
Treffen Sie die Routing-Entscheidung, die der Lauf aufwirft, und entscheiden Sie, wie ausgehender Verkehr die Netzwerke verlässt. Der Lauf konnte nicht belegen, wie das Workload-Subnetz in Azure ins Internet kam.
5. Logging
Der Entwurf legt eine Logs-Instanz mit 90 Tagen Aufbewahrung an. Bevor eine Quelle hineinschreibt, legen Sie ein Schreib-Zugriffstoken an und setzen die Zugriffsliste; der Entwurf tut beides nicht.
6. Leitplanken als Code
Portieren Sie die Policy-Zuweisung in die Pipeline, die das Terraform anwendet, bevor Sie die erste Workload ausrollen.
Was die Azure Landing Zone hat und STACKIT nicht
Subscriptions als Vending-Einheit
Der Lauf behandelt jede Subscription und Ressourcengruppe als Frage des Zuschnitts. STACKIT-Projekte übernehmen die Rolle, und ihre Anlage ist ein Prozess, den Sie entwerfen.
Zentrale Policy
Keine verwaltete Engine prüft Ressourcen gegen Regeln. Ihre Delivery-Pipeline tut es.
Verwaltete zentrale Firewall
Nicht als entworfene Ressource verfügbar; das Design entscheidet.
Workspace-basiertes Monitoring
KQL-Abfragen, Workbooks und Alerts werden für die Werkzeuge von STACKIT Logs und Observability neu geschrieben.
Fragen aus Plattformteams
Wird eine Management Group eins zu eins zu einem Ordner?
Der Lauf schreibt für jede Management Group einen Ordner und behält die Eltern-Beziehung. STACKIT dokumentiert Stand November 2026 nur eine Ebene der Ordnerhierarchie; ein tieferer Management-Group-Baum muss also abgeflacht werden. Die Management-Group-ID wird nicht übernommen; der Ordner erhält seinen Namen aus dem Anzeigenamen.
Was ersetzt das VNet-Peering?
Eine STACKIT Network Area der Organisation. Netzwerke von Projekten in der Area routen privat zueinander, und die Plattform passt die Routing-Tabellen der Projekt-Router an. Die Area wird je Region freigeschaltet.
Wohin gehen die Azure-Policy-Regeln?
In Policy as Code in der Pipeline, die das Terraform anwendet, und in das Rollendesign. Der Lauf stuft eine Policy-Zuweisung als REDESIGN ein, weil es keine gleichwertige Engine gibt.
Ist eine Firewall Teil des Entwurfs?
Nein. Azure Firewall ist als MANUAL_REVIEW mit Konfidenz LOW eingestuft, und der Entwurf enthält keine Firewall-Ressource. Ihre Architekten entscheiden zwischen einer zuschaltbaren STACKIT-Firewall-Funktion, Security Groups oder einer Appliance.
Quellen
Ihr nächster Schritt: STACKIT.
Erzählen Sie uns von Ihrer Umgebung. Wir zeigen Ihnen, was StackToIT dafür liefert: Zielarchitektur, Terraform-Artefakte und einen strukturierten Migrationsplan.