Azure-landingszones- Ontwerpoverwegingen voor Terraform-modules
In dit artikel worden belangrijke gebieden besproken die u moet overwegen bij het gebruik van de Terraform-module van Azure-landingszones. De module biedt een aanbevolen benadering voor het implementeren en gebruiken van een Azure-platform op basis van de conceptuele architectuur van de Azure-landingszone, zoals beschreven in het Cloud Adoption Framework (CAF).
Terraform is een opensource-hulpprogramma Infrastructure as Code (IaC), gemaakt door HashiCorp, dat declaratieve syntaxis gebruikt om infrastructuurbronnen te implementeren. Het is uitbreidbaar, biedt platformoverschrijdende ondersteuning en maakt onveranderbare infrastructuur mogelijk via statustracering.
Belangrijk
De module is beschikbaar in het Terraform Registry: Azure-landingszones Terraform-module. U kunt het als uitgangspunt gebruiken en configureren op basis van uw behoeften.
Notitie
Er zijn implementaties voor verschillende implementatietechnologieën, waaronder portalgebaseerde ARM-sjablonen en Terraform-modules. De keuze van implementatietechnologie mag geen invloed hebben op de resulterende implementatie van Azure-landingszones.
ALZ Terraform Accelerator
Om snel aan de slag te gaan met het implementeren van ALZ met Terraform, kunt u gebruikmaken van de ALZ Terraform Accelerator die is ontworpen om te worden gebruikt als sjabloon. Deze opslagplaats biedt een ondersteunende implementatie van de Terraform-module Azure Landing Zones, met Azure DevOps-pijplijnen en GitHub-actieswerkstromen.
De ALZ Terraform Accelerator volgt een driefasebenadering:
- Vereisten: instructies voor het configureren van referenties en abonnementen.
- Bootstrap: Voer het PowerShell-script uit om de continue leveringsomgeving te genereren.
- Uitvoeren: Werk de module (indien nodig) bij naar de behoeften van uw organisatie en implementeer deze via continue levering.
Begin met de gebruikershandleiding met een stap voor stap om uw Azure Landing Zone-omgeving aan de slag te laten gaan.
Ontwerpen
De architectuur maakt gebruik van de configureerbare aard van Terraform en bestaat uit een primaire indelingsmodule. Deze module bevat meerdere mogelijkheden van de conceptarchitectuur van Azure-landingszones. U kunt elke mogelijkheid afzonderlijk of gedeeltelijk implementeren. U kunt bijvoorbeeld alleen een hubnetwerk of alleen de Azure DDoS Protection of alleen de DNS-resources implementeren. Als u dit doet, moet u rekening houden met het feit dat de mogelijkheden afhankelijkheden hebben.
De architectuur maakt gebruik van een orchestratorbenadering om de implementatie-ervaring te vereenvoudigen. Mogelijk wilt u liever elke mogelijkheid implementeren met behulp van een of meer toegewezen module-exemplaren, waarbij elk is toegewezen aan een specifiek deel van de architectuur. Dit is allemaal mogelijk met de juiste configuratie
Modules
Een kernconcept in Terraform is het gebruik van modules. Met modules kunt u implementaties organiseren in logische groeperingen. Met modules verbetert u de leesbaarheid van uw Terraform-bestanden door complexe details van uw implementatie in te kapselen. U kunt modules ook eenvoudig hergebruiken voor verschillende implementaties.
De mogelijkheid om modules opnieuw te gebruiken biedt een echt voordeel bij het definiëren en implementeren van landingszones. Het maakt herhaalbare, consistente omgevingen in code mogelijk en vermindert tegelijkertijd de inspanning die nodig is om op schaal te implementeren.
De Terraform-implementatie van Azure-landingszones wordt geleverd met één module die fungeert als een indelingslaag. Met de indelingslaag kunt u selecteren welke resources worden geïmplementeerd en beheerd met behulp van de module. De module kan meerdere keren in dezelfde omgeving worden gebruikt om resources onafhankelijk van elkaar te implementeren. Dit kan handig zijn in organisaties waar verschillende teams verantwoordelijk zijn voor de verschillende mogelijkheden of verzamelingen van subresources.
Lagen en fasering
De implementatie is gericht op de centrale resourcehiërarchie van de conceptuele architectuur van de Azure-landingszone. Het ontwerp is gecentreerd rond de volgende mogelijkheden:
- Kernresources
- Beheerbronnen
- Connectiviteitsbronnen
- Identiteitsbronnen
De module groepeert resources in deze mogelijkheden, omdat ze zijn bedoeld om samen te worden geïmplementeerd. Deze groepen vormen logische fasen van de implementatie.
U beheert de implementatie van elk van deze mogelijkheden met behulp van functievlagmen. Een voordeel van deze aanpak is de mogelijkheid om stapsgewijs aan uw omgeving toe te voegen. U kunt bijvoorbeeld beginnen met een klein aantal mogelijkheden. U kunt de resterende mogelijkheden in een later stadium toevoegen wanneer u klaar bent.
Kernresources
De kernresourcemogelijkheden van de module zijn afgestemd op het ontwerpgebied van de resourceorganisatie van het Cloud Adoption Framework. Hiermee worden de basisbronnen van de conceptuele architectuur voor Azure-landingszones geïmplementeerd.
Archetypes
Een belangrijk concept binnen de kernresources is het opnemen van archetypen.
Archetypen bieden een herbruikbare, op code gebaseerde benadering voor het definiëren van welke beleidsdefinities, beleidssetdefinities, beleidstoewijzingen, roldefinities en roltoewijzingen op een bepaald bereik moeten worden toegepast. In de Terraform-implementatie worden deze beslissingen ingekapseld als archetypedefinities.
Als u een landingszone wilt maken, worden beheergroepen gekoppeld aan een archetypedefinitie. In het onderstaande voorbeeld voor een corp-landingszone heeft de archetype_config een aanwijzer naar de archetypedefinitie 'es_corp'. Deze definitie bevat alle beleids- en rolconfiguraties die worden toegevoegd aan deze beheergroep.
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 = {}
}
}
Wanneer de ingebouwde archetypen niet zijn afgestemd op uw vereisten, biedt de module opties voor het maken van nieuwe archetypen of het aanbrengen van wijzigingen in bestaande archetypen.
Beheerbronnen
De beheerresources van de module zijn afgestemd op het ontwerpgebied van het Cloud Adoption Framework. Deze mogelijkheid biedt de mogelijkheid om beheer- en bewakingsbronnen te implementeren in de landingszone van het beheerplatform.
Connectiviteitsbronnen
De connectiviteitsresources van de module bieden de mogelijkheid om de netwerktopologie en connectiviteit van de conceptuele architectuur voor Azure-landingszones te implementeren.
Identiteitsbronnen
De mogelijkheid van identiteitsresources van de module is afgestemd op het ontwerpgebied voor identiteits- en toegangsbeheer van het Cloud Adoption Framework. Deze mogelijkheid biedt de mogelijkheid om beleidsregels te configureren voor de landingszone van het Identiteitsplatform.
Notitie
Er worden geen resources geïmplementeerd met deze mogelijkheid. Wanneer de deploy_identity_resources
variabele is ingesteld op true, worden Azure Policy-toewijzingen geconfigureerd die resources beveiligen in het abonnement van de landingszone voor identiteitsplatforms.
Modulebeschrijvingen
Deze sectie biedt een algemeen overzicht van de resources die door deze module zijn geïmplementeerd.
Laag | Resourcetype(en) | Beschrijving | Nuttige koppelingen |
---|---|---|---|
Basis | Beheergroepen | Beheergroepen zijn de resources op het hoogste niveau in een Azure-tenant. Met beheergroepen kunt u uw resources eenvoudiger beheren. U kunt beleid toepassen op het niveau van de beheergroep en resources op lager niveau nemen dat beleid over. U kunt met name de volgende items toepassen op het niveau van de beheergroep die worden overgenomen door abonnementen onder de beheergroep:
|
|
Basis | Beleidsdefinities, beleidstoewijzingen en definities van beleidssets | DeployIfNotExists (DINE) of Beleid wijzigen helpt ervoor te zorgen dat de abonnementen en resources waaruit landingszones bestaan, compatibel zijn. Beleidsregels worden toegewezen aan beheergroepen via beleidstoewijzingen. Het beleid vereenvoudigt het beheer van landingszones. Groepsbeleidssetdefinities groeperen beleidsregels samen. Niet alle klanten kunnen DINE gebruiken of beleid wijzigen. Als dat het geval is voor u, biedt CAF-richtlijnen voor aangepaste beleidsregels richtlijnen. |
|
Basis | Roldefinities en roltoewijzingen | Op rollen gebaseerd toegangsbeheer (RBAC) vereenvoudigt het beheer van gebruikersrechten binnen een systeem. In plaats van de rechten van personen te beheren, bepaalt u de rechten die vereist zijn voor verschillende rollen in uw systeem. Azure RBAC heeft verschillende ingebouwde rollen. Met aangepaste roldefinities kunt u aangepaste rollen maken voor uw omgeving. Identiteits- en toegangsbeheer (IAM) is de belangrijkste beveiligingsgrens in cloud-computing. Met Azure RBAC kunt u roltoewijzingen uitvoeren van ingebouwde rollen of aangepaste roldefinities voor service-principals, beheerde identiteiten of beveiligingsgroepen in beheergroepen en abonnementen. |
|
Beheer | Azure Monitor, Azure Automation en Microsoft Sentinel | Met Azure Monitor, Azure Automation en Microsoft Sentinel kunt u uw infrastructuur en workloads bewaken en beheren. Azure Monitor is een oplossing waarmee u telemetriegegevens uit uw omgeving kunt verzamelen, analyseren en er actie op kunt ondernemen. Microsoft Sentinel is een cloudeigen SIEM (Security Information and Event Management). Hiermee kunt u het volgende doen:
Azure Automation is een automatiseringssysteem in de cloud. Deze bevat:
|
|
Connectiviteit | Resourcetypen voor kernnetwerken die hier worden vermeld | Netwerktopologie is een belangrijke overweging in implementaties van Azure-landingszones. CAF richt zich op twee kernnetwerken:
|
|
Connectiviteit | Azure DDoS-beveiliging | Richtlijnen voor azure-landingszones raden u aan Azure DDoS-netwerkbeveiliging in te schakelen. Deze service biedt kant-en-klare beveiliging tegen DDoS-aanvallen. | |
Connectiviteit | DNS-zones, Privé-DNS-zones en Privé-DNS Zone Virtual Network Link | Privé-DNS zones kunnen worden geïmplementeerd ter ondersteuning van het gebruik van privé-eindpunten. Een privé-eindpunt is een NIC waaraan een privé-IP-adres van uw virtuele netwerk is toegewezen. U kunt het privé-IP-adres gebruiken om veilig te communiceren met services die Ondersteuning bieden voor Azure Private Link. Privé-DNS zones kunnen worden geconfigureerd om de FQDN (Fully Qualified Domain Name) van de service op te lossen naar het privé-eindpunt privé-IP-adres. |
De Terraform-module gebruiken
Kernresources implementeren
Standaard implementeert de module de volgende hiërarchie. Dit is de kernset van beheergroepen voor landingszones:
- Wortel
- Platform
- Identiteit
- Beheer
- Connectiviteit
- Landingszones
- Uit bedrijf genomen
- Sandbox
- Platform
De beheergroepen voor sap-, corp- en onlinelandingszones zijn niet van toepassing op iedereen, zodat ze niet standaard worden geïmplementeerd. Hier volgen manieren om deze te implementeren:
- Voor demodoeleinden kunt u de
deploy_demo_landing_zones
variabele instellen op waar waarmee SAP-, Corp- en Online-landingszones worden geïmplementeerd - Voor productiedoeleinden kunt u de gewenste beheergroepen inschakelen door de volgende variabelen in te stellen op waar:
deploy_corp_landing_zones
deploy_online_landing_zones
deploy_sap_landing_zones
- U kunt uw eigen aangepaste beheergroepen voor landingszones implementeren door een aangepaste definitie van de landingszone te maken
Beheerbronnen implementeren
Als u de beheerbronnen wilt implementeren, moet de deploy_management_resources
variabele worden ingesteld op true en moet de subscription_id_management
variabele worden ingesteld op de id van het beheerabonnement waar de resources moeten worden geïmplementeerd.
deploy_management_resources = true
subscription_id_management = <management subscription id>
Connectiviteitsbronnen implementeren
Connectiviteitsbronnen implementeren biedt richtlijnen voor het implementeren van deze topologieën.
Identiteitsbronnen implementeren
Als u de identiteitsmogelijkheid wilt implementeren, moet de deploy_identity_resources
variabele worden ingesteld op waar en moet de subscription_id_identity
variabele worden ingesteld op de id van het identiteitsabonnement waar het beleid moet worden geconfigureerd.
deploy_identity_resources = true
subscription_id_identity = <identity subscription id>
De Terraform-implementatie aanpassen
De implementaties van de Azure-landingszone die worden geleverd als onderdeel van het Cloud Adoption Framework, zijn geschikt voor een groot aantal vereisten en gebruiksscenario's. Er zijn echter vaak scenario's waarin aanpassing is vereist om te voldoen aan specifieke bedrijfsbehoeften.
Tip
Zie De architectuur van de Azure-landingszone aanpassen om te voldoen aan de vereisten voor meer informatie.
De Terraform-module voor Azure-landingszones kan worden gebruikt als basis voor uw aangepaste implementatie. Het biedt u een manier om uw implementatie te versnellen door de noodzaak om helemaal opnieuw te beginnen te verwijderen vanwege een specifieke vereiste wijziging die een kant-en-klare optie uitvoert.
Informatie over het aanpassen van de modules is beschikbaar in de GitHub-opslagplaatswiki GitHub: Azure-landingszones Terraform-module - Wiki. U kunt het als uitgangspunt gebruiken en configureren op basis van uw behoeften.