Azure-Zielzonen-Terraform-Modul

Azure bietet native Dienste zum Erstellen Ihrer Azure-Zielzonen. Andere Tools können dabei ebenfalls hilfreich sein. Ein Tool, das Kunden und Partner häufig zum Bereitstellen von Zielzonen verwenden, ist Terraform von HashiCorp.

Die Bereitstellung von Ressourcen für Anwendungszielzonen wird in diesem Modul nicht behandelt. Entscheidungen hinsichtlich der Bereitstellungsmethode und der Tools müssen vom für die Anwendung zuständigen Team getroffen werden.

Das Terraform-Modul für Azure-Zielzonen bietet eine schnelle Implementierung der Plattformressourcen, die Sie benötigen, um Azure-Zielzonen mithilfe von Terraform im großen Stil zu verwalten. Das Modul vereinfacht die Bereitstellung der Verwaltungsgruppenhierarchie, Richtlinien und Ressourcen in den Konnektivitäts- und Verwaltungsabonnements.

Voraussetzungen

Wenn Sie noch nicht mit Terraform vertraut sind und Informationen zur Installation und Verwendung von Terraform wünschen, können Sie im Tutorial Installieren von Terraform auf HashiCorp Learn mehr darüber erfahren.

Informationen zum Einrichten des Terraform-Anbieters und zum Authentifizieren mit Azure finden Sie im Leitfaden zu AzureRM-Anbietern auf der Terraform-Website. Informationen zum Einrichten des Anbieters für die abonnementübergreifende Bereitstellung finden Sie auf der Wiki-Seite Anbieterkonfiguration.

Bedeutung der Verwendung von Standardmodulen

Die Wiederverwendung von Komponenten ist ein grundlegendes Prinzip von Infrastructure-as-Code. Die Module dienen zum Definieren von Standards und Konsistenz der gesamten Ressourcenbereitstellung inner- und außerhalb von Umgebungen.

Das Terraform-Modul für Azure-Zielzonen wird in der offiziellen Terraform-Registrierung veröffentlicht und wurde von HashiCorp überprüft.

Die Bereitstellung des Moduls aus der Terraform-Registrierung bietet Folgendes:

  • Beschleunigte Bereitstellung von Azure-Zielzonen in Ihrer Umgebung.
  • Getesteter Upgradepfad zur neuesten Version des Moduls sowie eine strenge Versionskontrolle.

Vorteile der Verwendung des Moduls

Die Vorteile der Verwendung des Terraform-Moduls für Azure-Zielzonen umfassen unter anderem Folgendes:

  • Eine Hierarchie mit verwalteten und erweiterbaren Kernressourcen für die Organisation von Abonnements durch Verwaltungsgruppen.
  • Skalierbare Sicherheitsgovernance und Compliance durch IAM-Kontrollen (Azure Identity and Access Management, Identitäts- und Zugriffsverwaltung in Azure) mit einer umfangreichen Bibliothek benutzerdefinierter Definitionen, die zuweisungsbereit sind.
  • Abonnementübergreifende Erzwingung von Richtlinien durch Verwaltungsgruppenvererbung.
  • Verwaltete Ressourcen für Verwaltungs- und Konnektivitätszielzonen. Diese Ressourcen stellen Folgendes bereit:
    • Zugesicherte Richtlinienkonformität durch enge Integration der vom Modul verwalteten Ressourcen und der entsprechenden Richtlinienzuweisungen.
    • Integration zwischen Ressourcen, um den Verwaltungsaufwand zu reduzieren und eine verbesserte Benutzererfahrung zu bieten, z. B. die automatische Erstellung virtueller Netzwerkverbindungen für Azure Private DNS.

Tipp

Die Vorlagenbibliothek wird programmgesteuert über das GitHub-Repository Azure/Enterprise-Scale aktualisiert. Um mit den neuesten Archetypkonfigurationen, Richtlinien und Rollen auf dem Laufenden zu bleiben, stellen Sie sicher, dass Sie die neueste Version des Moduls verwenden.

Bereitstellung von Ressourcen

Sie können das Modul so konfigurieren, dass Ressourcensätze bereitgestellt werden, die auf die folgenden wichtigen Entwurfsbereiche in Azure-Zielzonen abgestimmt sind. Passen Sie diese Ressourcen an die Anforderungen Ihrer Organisation an.

Ressourcenkategorie Wichtiger Entwurfsbereich
Kernressourcen Ressourcenorganisation
Sicherheit
Governance
Verwaltungsressourcen Verwaltung und Überwachung
Konnektivitätsressourcen Netzwerktopologie und Konnektivität
Identitätsressourcen Identitäts- und Zugriffsverwaltung

Indem diese Funktionen in einem Terraform-Modul zusammengefasst werden, werden das Erstellen und Erzwingen von Konsistenz für die gesamte Azure-Plattform beim Arbeiten in großem Umfang vereinfacht.

Diese Ressourcen sind auf die konzeptionelle Architektur von Azure-Zielzonen abgestimmt:

Diagramm: Konzeptionelle Architektur einer Azure-Zielzone

Sie können diese Ressourcen nach Funktionalität abonnementübergreifend mithilfe der Anbieterkonfiguration im Modulblock bereitstellen.

In den folgenden Abschnitten werden die Ressourcentypen und Konfigurationsoptionen erläutert.

Kernressourcen

Die Kernfunktion dieses Moduls stellt die Grundlagen der konzeptionellen Architektur der Azure-Zielzonen bereit, wobei der Schwerpunkt auf der zentralen Ressourcenorganisation liegt.

Diagramm: Konzeptionelle Architektur einer Azure-Zielzone mit Schwerpunkt auf der Hierarchie der Kernressourcen

Wenn Sie die Bereitstellung von Kernressourcen aktivieren (standardmäßig aktiviert), werden die folgenden Ressourcentypen durch das Modul bereitgestellt und verwaltet:

Resource Azure-Ressourcentyp Terraform-Ressourcentyp
Verwaltungsgruppen Microsoft.Management/managementGroups azurerm_management_group
Verwaltungsgruppenabonnements Microsoft.Management/managementGroups/subscriptions azurerm_management_group
Richtlinienzuweisungen Microsoft.Authorization/policyAssignments azurerm_management_group_policy_assignment
Richtliniendefinitionen Microsoft.Authorization/policyDefinitions azurerm_policy_definition
Richtliniensatzdefinitionen Microsoft.Authorization/policySetDefinitions azurerm_policy_set_definition
Rollenzuweisungen Microsoft.Authorization/roleAssignments azurerm_role_assignment
Rollendefinitionen Microsoft.Authorization/roleDefinitions azurerm_role_definition

Die genaue Anzahl der Ressourcen, die vom Modul erstellt werden, hängt von der Modulkonfiguration ab. Bei einer Standardkonfiguration erstellt das Modul voraussichtlich etwa 180 Ressourcen.

Tipp

Keine dieser Ressourcen wird im Abonnementumfang bereitgestellt, aber Terraform erfordert weiterhin, dass ein Abonnement eine authentifizierte Sitzung mit Azure herstellt. Weitere Informationen zur Authentifizierung mit Azure finden Sie in der Dokumentation Azure-Anbieter: Authentifizieren bei Azure.

Verwaltungsressourcen

Das Modul ermöglicht die Bereitstellung von Verwaltungs- und Überwachungsressourcen aus der konzeptionellen Architektur für Azure-Zielzonen im angegebenen Abonnement, wie auf der Wiki-Seite Anbieterkonfiguration beschrieben. Außerdem stellt das Modul sicher, dass das angegebene Abonnement in der richtigen Verwaltungsgruppe platziert wird.

Diagramm: Konzeptionelle Architektur einer Azure-Zielzone mit Schwerpunkt auf den Verwaltungsressourcen

Wenn Sie die Bereitstellung von Verwaltungsressourcen aktivieren, stellt das Modul je nach Konfiguration die folgenden Ressourcentypen bereit und verwaltet sie:

Resource Azure-Ressourcentyp Terraform-Ressourcentyp
Ressourcengruppen Microsoft.Resources/resourceGroups azurerm_resource_group
Log Analytics-Arbeitsbereich Microsoft.OperationalInsights/workspaces azurerm_log_analytics_workspace
Log Analytics-Lösungen Microsoft.OperationsManagement/solutions azurerm_log_analytics_solution
Automation-Konto Microsoft.Automation/automationAccounts azurerm_automation_account
Mit Log Analytics verknüpfter Dienst Microsoft.OperationalInsights/workspaces /linkedServices azurerm_log_analytics_linked_service

Zusätzlich zur Bereitstellung der oben genannten Ressourcen bietet das Modul eine native Integration in die entsprechenden Richtlinienzuweisungen, um vollständige Richtlinienkonformität zu gewährleisten.

Weitere Informationen zur Verwendung dieser Funktion finden Sie auf der Wiki-Seite Bereitstellen von Verwaltungsressourcen.

Konnektivitätsressourcen

Das Modul ermöglicht die Bereitstellung von Netzwerktopologie- und Konnektivitätsressourcen aus der konzeptionellen Architektur der Azure-Zielzonen im aktuellen Abonnementkontext. Außerdem stellt es sicher, dass das angegebene Abonnement in der richtigen Verwaltungsgruppe platziert wird.

Dies ermöglicht die Bereitstellung mehrerer Hubnetzwerke basierend auf einer beliebigen Kombination aus herkömmlicher Azure-Netzwerktopologie (Hub-and-Spoke) und Virtual WAN-Netzwerktopologie (von Microsoft verwaltet).

Das Modul kann auch DDoS-Netzwerkschutz erstellen und mit virtuellen Netzwerken verknüpfen sowie zentralisierte öffentliche und private DNS-Zonen verwalten.

Hinweis

Wir empfehlen derzeit keinen DDoS-IP-Schutz in Azure-Zielzonen und empfehlen die Verwendung dieser Option nur unter bestimmten Umständen. Lesen Sie die Produktdokumentation Informationen zum Vergleich der Azure DDoS Protection-SKUs.

Herkömmliche Azure-Netzwerktopologie (Hub-and-Spoke)

Das Modul kann optional auch Hubnetzwerke basierend auf der herkömmlichen Azure-Netzwerktopologie (Hub-and-Spoke) bereitstellen.

Diagramm: Konzeptionelle Architektur einer Azure-Zielzone mit Schwerpunkt auf den Konnektivitätsressourcen bei Verwendung einer herkömmlichen Azure-Netzwerktopologie (Hub-and-Spoke)

Hinweis

Das Modul konfiguriert derzeit nur den Netzwerkhub und die abhängigen Ressourcen für das Konnektivitätsabonnement. Obwohl es eine Option zum Aktivieren von ausgehendem Peering virtueller Netzwerke von Hub zu Spoke gibt, müssen Benutzer dennoch das Peering von Spoke zu Hub weiterhin initiieren. Dies liegt an Einschränkungen bei der Art und Weise, in der der AzureRM-Anbieter ein bestimmtes Abonnement für die Bereitstellung als Ziel verwendet.

Wenn Sie Ressourcen basierend auf einer herkömmlichen Azure-Netzwerktopologie (Hub-and-Spoke) bereitstellen, werden durch das Modul je nach Konfiguration die folgenden Ressourcentypen bereitgestellt und verwaltet:

Resource Azure-Ressourcentyp Terraform-Ressourcentyp
Ressourcengruppen Microsoft.Resources/resourceGroups azurerm_resource_group
Virtuelle Netzwerke Microsoft.Network/virtualNetworks azurerm_virtual_network
Subnetze Microsoft.Network/virtualNetworks/subnets azurerm_subnet
Gateways des virtuellen Netzwerks Microsoft.Network/virtualNetworkGateways azurerm_virtual_network_gateway
Azure Firewall-Instanzen Microsoft.Network/azureFirewalls azurerm_firewall
Öffentliche IP-Adressen Microsoft.Network/publicIPAddresses azurerm_public_ip
Virtuelles Netzwerk über Peerings Microsoft.Network/virtualNetworks/virtualNetworkPeerings azurerm_virtual_network_peering

Weitere Informationen zur Verwendung dieser Funktion finden Sie auf der Wiki-Seite Bereitstellen von Konnektivitätsressourcen.

Virtual WAN-Netzwerktopologie (von Microsoft verwaltet)

Das Modul kann optional auch Hubnetzwerke basierend auf der Virtual WAN-Netzwerktopologie (von Microsoft verwaltet) bereitstellen.

Diagramm: Konzeptionelle Architektur einer Azure-Zielzone mit Schwerpunkt auf den Konnektivitätsressourcen bei Verwendung einer Virtual WAN-Netzwerktopologie (von Microsoft verwaltet)

Hinweis

Aufgrund der unterschiedlichen Funktionen von Virtual WAN-Netzwerkressourcen gegenüber herkömmlichen Ressourcen ist das Peering für Virtual WAN-Spokes bei Verwendung dieser Funktion bidirektional.

Wenn Sie Ressourcen basierend auf einer Virtual WAN-Netzwerktopologie (von Microsoft verwaltet) bereitstellen, werden durch das Modul je nach Konfiguration die folgenden Ressourcentypen bereitgestellt und verwaltet:

Resource Azure-Ressourcentyp Terraform-Ressourcentyp
Ressourcengruppen Microsoft.Resources/resourceGroups azurerm_resource_group
Virtuelle WANs Microsoft.Network/virtualWans azurerm_virtual_wan
Virtuelle Hubs Microsoft.Network/virtualHubs azurerm_virtual_hub
ExpressRoute-Gateways Microsoft.Network/expressRouteGateways azurerm_express_route_gateway
VPN-Gateways Microsoft.Network/vpnGateways azurerm_vpn_gateway
Azure Firewalls Microsoft.Network/azureFirewalls azurerm_firewall
Azure Firewall-Richtlinien Microsoft.Network/firewallPolicies azurerm_firewall_policy
Verbindungen mit virtuellem Hub Microsoft.Network/virtualHubs/hubVirtualNetworkConnections azurerm_virtual_hub_connection

Weitere Informationen zur Verwendung dieser Funktion finden Sie auf der Wiki-Seite Bereitstellen von Virtual WAN-Ressourcen.

DDoS Protection-Plan

Das Modul kann optional DDoS-Netzwerkschutz bereitstellen und bei Bedarf virtuelle Netzwerke mit dem Plan verknüpfen.

Hinweis

Aufgrund von Plattformeinschränkungen können DDoS Protection-Pläne nur für herkömmliche virtuelle Netzwerke aktiviert werden. Virtuelle Hubs werden derzeit nicht unterstützt.

Wichtig

Im Leitfaden zu Azure-Zielzonen wird empfohlen, DDoS-Netzwerkschutz zu aktivieren, um Ihre Azure-Plattform besser zu schützen. Aufgrund der mit dieser Ressource verbundenen Kosten ist diese Funktion im Terraform-Modul für Azure-Zielzonen deaktiviert, um unerwartete Kosten in produktionsfremden Bereitstellungen und in MVP-Bereitstellungen zu verhindern.

In Produktionsumgebungen sollte diese Funktion allerdings unbedingt aktiviert werden.

Wenn Sie die Bereitstellung von DDoS Protection-Planressourcen aktivieren, stellt das Modul je nach Konfiguration die folgenden Ressourcentypen bereit und verwaltet sie:

Resource Azure-Ressourcentyp Terraform-Ressourcentyp
Ressourcengruppen Microsoft.Resources/resourceGroups azurerm_resource_group
DDoS Protection-Pläne Microsoft.Network/ddosProtectionPlans azurerm_network_ddos_protection_plan

DNS

Das Modul kann optional private DNS-Zonen zur Unterstützung privater Endpunkte bereitstellen und sie mit virtuellen Hub/Spoke-Netzwerken verknüpfen. Benutzerseitig angegebene öffentliche und private DNS-Zonen können ebenfalls nach Bedarf bereitgestellt und verknüpft werden.

Wenn Sie die Bereitstellung von DNS-Ressourcen aktivieren, stellt das Modul je nach Konfiguration die folgenden Ressourcentypen bereit und verwaltet sie:

Resource Azure-Ressourcentyp Terraform-Ressourcentyp
Ressourcengruppen Microsoft.Resources/resourceGroups azurerm_resource_group
DNS-Zonen Microsoft.Network/dnsZones azurerm_dns_zone
Was ist eine private Azure DNS-Zone? Microsoft.Network/privateDnsZones azurerm_private_dns_zone
VNet-Verknüpfung für private DNS-Zone Microsoft.Network/privatednszones/virtualnetworklinks azurerm_private_dns_zone_virtual_network_link

Identitätsressourcen

Das Modul bietet eine Option zum Konfigurieren von Richtlinien im Zusammenhang mit der Zielzone für die Identitäts- und Zugriffsverwaltung. Außerdem stellt es sicher, dass das angegebene Abonnement in der richtigen Verwaltungsgruppe platziert wird.

Diagramm: Konzeptionelle Architektur einer Azure-Zielzone mit Schwerpunkt auf den Identitätsressourcen

Hinweis

Von dieser Funktion werden keine Ressourcen bereitgestellt. Wenn Sie Richtlinieneinstellungen im Zusammenhang mit der Identitätsverwaltungsgruppe aktualisieren möchten, verwenden Sie die Eingabevariable configure_identity_resources.

Weitere Informationen zur Verwendung dieser Funktion finden Sie auf der Wiki-Seite Bereitstellen von Identitätsressourcen.

Erste Schritte

Die Anforderungen für die ersten Schritte mit dem Modul sind auf der Wiki-Seite Erste Schritte dokumentiert.

Zur Vereinfachung des Einstiegs wurde das Modul in der Terraform-Registrierung veröffentlicht. Sie können in Ihrem Code direkt darauf verweisen, wie im einfachen Beispiel weiter unten in diesem Artikel zu sehen. Wenn Sie terraform init ausführen, werden das Modul und alle Abhängigkeiten automatisch heruntergeladen.

Die neuesten Modul- und Anbieterabhängigkeiten finden Sie in der Terraform-Registrierung auf der Registerkarte Abhängigkeiten.

Wichtig

Bei einigen Kombinationen der Versionen von Terraform und des AzureRM-Anbieters kann es zu bekannten Problemen kommen. Sie können einige bekannte Probleme beheben, indem Sie ein Upgrade auf die neuesten Terraform- und AzureRM-Anbieterversionen durchführen. Andere bekannte Probleme sind vorübergehende Fehler, die Sie in der Regel beheben können, indem Sie Ihre Bereitstellung erneut ausführen.

Unsere allgemeine Empfehlung lautet, bestimmte Versionen zu verwenden und vor Upgrades eingehende Tests durchzuführen.

Wenn Änderungen erforderlich sind, veröffentlichen wir neue Versionen des Moduls. Neue Versionen gewährleisten die Kompatibilität mit den neuesten Terraform- und AzureRM-Anbieterversionen. Weitere Informationen finden Sie in unserem Leitfaden zu Modulreleases.

Um die neuesten Features zu erhalten, stellen Sie sicher, dass die Modulversion auf die neueste Version festgelegt ist. Wenn Sie ein Upgrade auf eine höhere Version des Moduls durchführen, führen Sie terraform init -upgrade aus.

GitHub-Release (neueste SemVer)

Einfaches Beispiel

Mit diesem Beispielcode werden die empfohlenen Mindestvoraussetzungen für die Organisation von Verwaltungsgruppen und Abonnements aus der Referenzarchitektur auf Unternehmensebene erfüllt. Nachdem Sie dieses einfache Beispiel eingerichtet haben, können Sie damit beginnen, Ihre Bereitstellung anzupassen.

Tipp

Auch wenn root_parent_id die einzige obligatorische Variable des Moduls ist, empfehlen wir ebenfalls, root_id festzulegen. Wenn der Wert von root_id geändert wird, wird eine vollständige erneute Bereitstellung aller vom Modul verwalteten Ressourcen gestartet, einschließlich der nachgeschalteten Abhängigkeiten.

Der folgende Code stellt eine einfache Anfangskonfiguration für Ihr main.tf-Stammmodul dar:

# Configure Terraform to set the required AzureRM provider
# version and features{} block.

terraform {
  required_providers {
    azurerm = {
      source  = "hashicorp/azurerm"
      version = ">= 2.77.0"
    }
  }
}

provider "azurerm" {
  features {}
}

# Get the current client configuration from the AzureRM provider.
# This configuration is used to populate the root_parent_id variable with the
# current tenant ID used as the ID for the "Tenant Root Group"
# management group.

data "azurerm_client_config" "core" {}

# Use variables to customize the deployment

variable "root_id" {
  type    = string
  default = "es"
}

variable "root_name" {
  type    = string
  default = "Enterprise-Scale"
}

# Declare the Terraform Module for Cloud Adoption Framework
# Enterprise-scale and provide a base configuration.

module "enterprise_scale" {
  source  = "Azure/caf-enterprise-scale/azurerm"
  version = ">= 1.0.0"

  providers = {
    azurerm              = azurerm
    azurerm.connectivity = azurerm
    azurerm.management   = azurerm
  }

  root_parent_id = data.azurerm_client_config.core.tenant_id
  root_id        = var.root_id
  root_name      = var.root_name

}

Nächste Schritte

Das Terraform-Modul für das Cloud Adoption Framework auf Unternehmensebene bietet einen schnelleren Pfad zur Erstellung Ihrer Zielzonen auf Unternehmensebene. Darüber hinaus bietet es die Flexibilität zum Erweitern und Anpassen Ihrer Bereitstellung, während Sie gleichzeitig einen vereinfachten Ansatz für die Verwaltung der Konfiguration für die einzelnen Zielzonen aufrechterhalten.

Weitere Informationen finden Sie im Modul in der Terraform-Registrierung sowie in der Moduldokumentation auf GitHub. In der Dokumentation finden Sie weitere Beispiele und Tutorials zur Anpassung Ihrer Bereitstellung.

Bei HashiCorp Learn erfahren Sie, wie Sie das Terraform-Modul für Azure-Zielzonen bereitstellen. Von dort können Sie auch herausfinden, wie einige Teile des Moduls funktionieren.