Azure-Landezonen: Überlegungen zum Design des Terraform-Moduls
In diesem Artikel werden wichtige Bereiche erklärt, die beim Verwenden des Terraform-Moduls für Azure-Landezonen berücksichtigt werden sollen. Das Modul bietet einen Meinungsansatz, um eine Azure-Plattform basierend auf der konzeptionellen Architektur der Azure-Landezone bereitzustellen und zu betreiben, wie im Cloud Adoption Framework (CAF) beschrieben.
Terraform ist ein Open-Source-Infrastruktur-Tool als Code (IaC), das von HashiCorp erstellt wurde und deklarative Syntax verwendet, um Infrastrukturressourcen bereitzustellen. Es ist erweiterbar, verfügt über plattformübergreifende Unterstützung und ermöglicht die unveränderliche Infrastruktur über die Statusverfolgung.
Wichtig
Das Modul ist auf der Terraform-Registrierung verfügbar: Azure-Landezonen Terraform-Modul. Sie können diese als Startpunkt verwenden und gemäß Ihren Anforderungen konfigurieren.
Hinweis
Es gibt Implementierungen für mehrere Bereitstellungstechnologien, einschließlich portalbasierter, ARM-Vorlagen- und Terraform-Module. Die Auswahl der Bereitstellungstechnologie sollte die resultierende Bereitstellung von Azure-Zielzonen nicht beeinflussen.
ALZ Terraform-Beschleuniger
Um schnell mit der Bereitstellung von ALZ mit Terraform zu beginnen, können Sie den ALZ Terraform-Beschleuniger nutzen, der als Vorlage verwendet werden kann. Dieses Repository bietet eine unterstützende Implementierung des Terraform-Moduls für Azure-Zielzonen mit Azure DevOps-Pipelines und GitHub Actions-Workflows.
Der ALZ Terraform-Beschleuniger folgt einem 3-Phasen-Ansatz:
- Voraussetzungen: Anweisungen zum Konfigurieren von Anmeldeinformationen und Abonnements.
- Bootstrap: Führen Sie das PowerShell-Skript aus, um die Continuous Delivery-Umgebung zu generieren.
- Ausführen: Aktualisieren Sie das Modul (falls erforderlich) gemäß der Anforderungen Ihrer Organisation und stellen Sie es über Continuous Delivery bereit.
Beginnen Sie mit einem Benutzerhandbuch mit einem schrittweisen Ansatz, um Ihre Azure-Zielzonenumgebung einzurichten und in Betrieb zu nehmen.
Design
Die Architektur nutzt die konfigurierbare Beschaffenheit von Terraform und besteht aus einem primären Orchestermodul. Dieses Modul kapselt mehrere Kernfunktionen der konzeptionellen Azure-Zielzonenarchitektur. Sie können jede Funktion einzeln oder teilweise bereitstellen. Sie können z. B. nur ein Hubnetzwerk, nur Azure DDoS Protection oder nur die DNS-Ressourcen bereitstellen. Dabei müssen Sie berücksichtigen, dass die Funktionen Abhängigkeiten beinhalten.
Die Architektur nutzt einen Orchestrator-Ansatz, um die Bereitstellungserfahrung zu vereinfachen. Sie können jede Funktion mit Hilfe einer oder mehrerer dedizierter Modulinstanzen implementieren, die jeweils für einen bestimmten Teil der Architektur zuständig sind. Dies ist mit der richtigen Konfiguration alles möglich
Module
Ein Kernkonzept von Terraform ist die Verwendung von Modulen. Module ermöglichen es Ihnen, Bereitstellungen in logischen Gruppierungen zu organisieren. Mit Modulen verbessern Sie die Lesbarkeit Ihrer Terraform-Dateien, indem Sie komplexe Details Ihrer Bereitstellung kapseln. Sie können Module auch problemlos für verschiedene Bereitstellungen wiederverwenden.
Die Möglichkeit, Module erneut zu verwenden, bietet einen echten Vorteil beim Definieren und Bereitstellen von Zielzonen. Es ermöglicht wiederholbare, konsistente Umgebungen in Code, während der für eine Bereitstellung im großen Stil erforderliche Aufwand reduziert wird.
Die Terraform-Implementierung von Azure-Landezonen wird mithilfe eines einzelnen Moduls bereitgestellt, das als Orchestrierungsebene fungiert. Mit der Orchestrierungsebene können Sie auswählen, welche Ressourcen mithilfe des Moduls bereitgestellt und verwaltet werden. Das Modul kann mehrmals in derselben Umgebung verwendet werden, um Ressourcen unabhängig voneinander bereitzustellen. Dies kann in Organisationen nützlich sein, in denen verschiedene Teams für die verschiedenen Funktionen oder Sammlungen von Unterressourcen verantwortlich sind.
Ebenen und Staging
Die Implementierung konzentriert sich auf die zentrale Ressourcenhierarchie der konzeptionellen Architektur der Azure-Landezone. Das Design wird um die folgenden Funktionen zentriert:
- Kernressourcen
- Verwaltungsressourcen
- Konnektivitätsressourcen
- Identitätsressourcen
Das Modul gruppiert Ressourcen in diese Funktionen, da sie gemeinsam bereitgestellt werden sollen. Diese Gruppen bilden logische Phasen der Implementierung.
Sie steuern die Bereitstellung jeder dieser Funktionen mithilfe von Feature-Flags. Ein Vorteil dieses Ansatzes ist die Möglichkeit, Ihre Umgebung inkrementell im Laufe der Zeit zu erweitern. Sie können beispielsweise mit einer kleinen Anzahl an Funktionen beginnen. Sie können die verbleibenden Funktionen später hinzufügen, wenn Sie bereit sind.
Kernressourcen
Die Kernressourcenfunktion des Moduls richtet sich an den Entwurfsbereich der Ressourcenorganisation des Cloud Adoption Framework. Es stellt die grundlegenden Ressourcen der konzeptionellen Architektur für Azure-Landezonen bereit.
Archetypen
Ein wichtiges Konzept innerhalb der Kernressourcenfunktion ist die Einbeziehung von Archetypen.
Archetypen bieten einen wiederverwendbaren, codebasierten Ansatz zum Definieren der Richtliniendefinitionen, Richtliniensatzdefinitionen, Richtlinienzuweisungen, Rollendefinitionen und Rollenzuweisungen müssen in einem bestimmten Bereich angewendet werden. In der Terraform-Implementierung werden diese Entscheidungen als Archetype-Definitionen gekapselt.
Um eine Landezone zu erstellen, werden Verwaltungsgruppen einer Archetype-Definition zugeordnet. Im folgenden Beispiel für eine Corp-Landezone weist die archetype_config einen Zeiger auf die Archetype-Definition "es_corp" auf. Diese Definition enthält alle Richtlinien- und Rollenkonfigurationen, die dieser Verwaltungsgruppe hinzugefügt werden.
es_corp_landing_zones = {
"contoso-corp" = {
display_name = "Corp"
parent_management_group_id = "contoso-landing-zones"
subscription_ids = []
archetype_config = {
archetype_id ="es_corp"
parameters = {}
access_control = {}
}
}
Wenn die integrierten Archetypen nicht an Ihre Anforderungen ausgerichtet sind, bietet das Modul Optionen, um neue Archetypen zu erstellen oder Änderungen an vorhandenen Änderungen vorzunehmen.
Verwaltungsressourcen
Die Verwaltungsressourcenfunktion des Moduls richtet sich an den Entwurfsbereich der Verwaltung des Cloud Adoption Framework. Diese Funktion bietet die Möglichkeit, Verwaltungs- und Überwachungsressourcen in der Verwaltungsplattform-Landezone bereitzustellen.
Konnektivitätsressourcen
Die Konnektivitätsressourcenfunktion des Moduls bietet die Möglichkeit, die Netzwerktopologie und Konnektivität der konzeptionellen Architektur für Azure-Landezonen bereitzustellen.
Identitätsressourcen
Die Identitätsressourcenfunktion des Moduls richtet sich an den Azure-Identitäts- und Zugriffsverwaltungsentwurfsbereich des Cloud Adoption Framework. Diese Funktion bietet die Möglichkeit, Richtlinien für die Zielzone der Identity-Plattform zu konfigurieren.
Hinweis
Es werden keine Ressourcen mit dieser Funktion eingesetzt. Wenn die deploy_identity_resources
Variable auf "wahr" festgelegt ist, werden Azure Policy Zuordnungen konfiguriert, die Ressourcen im Abonnement für die Identitätsplattform-Landezone schützen.
Modulbeschreibungen
Dieser Abschnitt enthält einen Überblick über die von diesem Modul bereitgestellten Ressourcen auf hoher Ebene.
Ebene | Ressourcentyp(en) | BESCHREIBUNG | Nützliche Links |
---|---|---|---|
Core | Verwaltungsgruppen | Verwaltungsgruppen sind die Ressourcen der höchsten Ebene in einem Azure-Mandanten. Verwaltungsgruppen ermöglichen es Ihnen, Ihre Ressourcen einfacher zu verwalten. Sie können Richtlinien auf Verwaltungsgruppenebene anwenden, und Ressourcen auf niedrigerer Ebene erben diese Richtlinie. Insbesondere können Sie die folgenden Elemente auf Verwaltungsgruppenebene anwenden, die dann von Abonnements unter der Verwaltungsgruppe geerbt werden:
|
|
Core | Richtliniendefinitionen, Richtlinienzuweisungen und Richtliniensatzdefinitionen | DeployIfNotExists (DINE)- oder Änderungsrichtlinien helfen sicherzustellen, dass die Abonnements und Ressourcen, die Zielzonen bilden, konform sind. Richtlinien werden Verwaltungsgruppen über Richtlinienzuweisungen zugewiesen. Die Richtlinien erleichtern die Verwaltung von Zielzonen. Richtliniensatzdefinitionen fassen Richtliniensätze zusammen. Nicht alle Kunden können DINE- oder Änderungsrichtlinien verwenden. Wenn dies auf Sie zutrifft, bietet Ihnen der CAF-Leitfaden für benutzerdefinierte Richtlinien eine Anleitung. |
|
Core | Rollendefinitionen und Rollenzuweisungen | Die rollenbasierte Zugriffssteuerung (RBAC) vereinfacht die Verwaltung von Benutzerrechten innerhalb eines Systems. Anstatt die Rechte von Einzelpersonen zu verwalten, bestimmen Sie die für verschiedene Rollen in Ihrem System erforderlichen Rechte. Azure RBAC verfügt über mehrere integrierte Rollen. Benutzerdefinierte Rollendefinitionen ermöglichen es Ihnen, benutzerdefinierte Rollen für Ihre Umgebung zu erstellen. IAM (Identity & Access Management, Identitäts- und Zugriffsverwaltung) ist die wichtigste Sicherheitsgrenze im Cloud Computing. Azure RBAC ermöglicht es Ihnen, Rollenzuweisungen integrierter Rollen oder benutzerdefinierter Rollendefinitionen für Dienstprinzipale, verwaltete Identitäten oder Sicherheitsgruppen über Verwaltungsgruppen und Abonnements hinweg auszuführen. |
|
Verwaltung | Azure Monitor, Azure Automation und Microsoft Sentinel | Azure Monitor, Azure Automation und Microsoft Sentinel ermöglichen es Ihnen, Ihre Infrastruktur und Workloads zu überwachen und zu verwalten. Azure Monitor ist eine Lösung, mit der Sie Telemetriedaten aus Ihrer Umgebung sammeln, analysieren und darauf reagieren können. Microsoft Sentinel ist eine cloudnative SIEM-Lösung (Security Information & Event Management). Die Funktion ermöglicht Folgendes:
Azure Automation ist ein cloudbasiertes Automatisierungssystem. Sie hat folgenden Inhalt:
|
|
Konnektivität | Hier aufgeführte Kernressourcentypen für Netzwerkressourcen | Die Netzwerktopologie ist ein wichtiger Aspekt bei Azure-Zielzonenbereitstellungen. CAF konzentriert sich auf zwei Kernansätze beim Netzwerkbetrieb:
|
|
Konnektivität | Azure DDoS Protection | Azure-Leitfaden für die Landezone empfiehlt die Aktivierung von Azure DDoS-Netzwerkschutz. Dieser Dienst bietet schlüsselfertigen Schutz vor DDoS-Angriffen. | |
Konnektivität | DNS-Zonen, Privates DNS Zonen und Privates DNS Zone Virtual Network Link | Private DNS Zonen können bereitgestellt werden, um die Verwendung privater Endpunkte zu unterstützen. Ein privater Endpunkt ist eine NIC, die einer privaten IP-Adresse aus Ihrem virtuellen Netzwerk zugewiesen wird. Sie können die private IP-Adresse verwenden, um sicher an Dienste zu kommunizieren, die Azure Private Link unterstützen. Private DNS Zonen können so konfiguriert werden, dass der vollqualifizierte Domänenname (FQDN) des Diensts auf die private IP-Adresse des privaten Endpunkts aufgelöst wird. |
Verwenden des Terraform-Moduls
Bereitstellen von Kernressourcen
Standardmäßig stellt das Modul die folgende Hierarchie bereit, die der Kernsatz der Landzonenverwaltungsgruppen ist:
- Root
- Plattform
- Identity
- Verwaltung
- Konnektivität
- Zielzonen
- Außer Betrieb
- Sandbox
- Plattform
Die Verwaltungsgruppen SAP, Corp und Online-Landezone gelten nicht für alle Benutzer. Sie werden also nicht standardmäßig eingesetzt. Im Folgenden finden Sie Möglichkeiten, diese bereitzustellen:
- Für Demozwecke können Sie die
deploy_demo_landing_zones
Variable auf "wahr" festlegen, die SAP-, Corp- und Online-Landungszonen bereitstellt. - Für Produktionszwecke können Sie die gewünschten Verwaltungsgruppen aktivieren, indem Sie die folgenden Variablen auf "wahr" festlegen:
deploy_corp_landing_zones
deploy_online_landing_zones
deploy_sap_landing_zones
- Sie können eigene benutzerdefinierte Zielzonenverwaltungsgruppen bereitstellen, indem Sie eine benutzerdefinierte Zielzonendefinition erstellen.
Bereitstellen von Verwaltungsressourcen
Für die Bereitstellung der Verwaltungsressourcen muss die deploy_management_resources
Variable auf "wahr" festgelegt werden, und die subscription_id_management
Variable muss auf die ID des Verwaltungsabonnements festgelegt werden, in dem die Ressourcen bereitgestellt werden sollen.
deploy_management_resources = true
subscription_id_management = <management subscription id>
Bereitstellen von Verbindungsressourcen
Deploy Connectivity Resources bietet Anleitungen zum Bereitstellen dieser Topologien.
Bereitstellen von Identitätsressourcen
Um die Identitätsfunktion bereitzustellen, muss die deploy_identity_resources
Variable auf "wahr" festgelegt werden, und die subscription_id_identity
Variable muss auf die ID des Identitätsabonnements festgelegt werden, in dem die Richtlinien konfiguriert werden sollen.
deploy_identity_resources = true
subscription_id_identity = <identity subscription id>
Anpassen der Terraform-Implementierung
Die Azure-Zielzonenimplementierungen, die als Bestandteil des Cloud Adoption Framework bereitgestellt werden, sind für eine breite Vielzahl von Anforderungen und Anwendungsfällen geeignet. Es gibt jedoch häufig Szenarien, in denen Anpassungen erforderlich sind, um bestimmte Geschäftsanforderungen zu erfüllen.
Tipp
Weitere Informationen finden Sie unter Anpassen der Architektur der Azure-Zielzonen an die Anforderungen.
Das Azure-Landungszonen-Terraform-Modul kann als Grundlage Ihrer angepassten Bereitstellung verwendet werden. Sie bietet Ihnen eine Möglichkeit, Ihre Implementierung zu beschleunigen, indem Sie die Notwendigkeit beseitigen, aufgrund einer bestimmten erforderlichen Änderung, die eine vorgefertigte Option ausschließt, von Grund auf neu beginnen zu müssen.
Informationen zum Anpassen der Module finden Sie im GitHub-Repository-Wiki GitHub: Azure-Zielzonen Terraform-Module-Wiki. Sie können diese als Startpunkt verwenden und gemäß Ihren Anforderungen konfigurieren.