Migreren van Azure Firewall Standard naar Premium met behulp van Terraform
Terraform maakt de definitie, preview en implementatie van cloudinfrastructuur mogelijk. Met Terraform maakt u configuratiebestanden met behulp van de HCL-syntaxis. Met de HCL-syntaxis kunt u de cloudprovider opgeven, zoals Azure, en de elementen waaruit uw cloudinfrastructuur bestaat. Nadat u uw configuratiebestanden hebt gemaakt, maakt u een uitvoeringsplan waarmee u een voorbeeld van uw infrastructuurwijzigingen kunt bekijken voordat ze worden geïmplementeerd. Zodra u de wijzigingen hebt gecontroleerd, past u het uitvoeringsplan toe om de infrastructuur te implementeren.
Als u Terraform gebruikt om standaard Azure Firewall met klassieke regels te implementeren, kunt u het Terraform-configuratiebestand wijzigen om uw firewall te migreren naar Azure Firewall Premium met behulp van een Premium-firewallbeleid.
In dit artikel leert u het volgende:
- Een standaard Azure Firewall met klassieke regels implementeren met behulp van Terraform
- De firewallregels importeren in een Premium-firewallbeleid
- Het Terraform-configuratiebestand bewerken om de firewall te migreren
1. Uw omgeving configureren
- Azure-abonnement: Als u nog geen abonnement op Azure hebt, maak dan een gratis account aan voordat u begint.
Terraform configureren: Als u dit nog niet hebt gedaan, configureert u Terraform met behulp van een van de volgende opties:
2. De Terraform-code implementeren
Maak een map waarin u de Terraform-voorbeeldcode wilt testen en maak er de huidige map van.
Maak een bestand met de naam
main.tf
en voeg de volgende code in:resource "azurerm_resource_group" "rg" { name = "${random_pet.prefix.id}-rg" location = var.resource_group_location } resource "azurerm_virtual_network" "vnet" { name = "${random_pet.prefix.id}-vnet" address_space = ["10.0.0.0/16"] location = azurerm_resource_group.rg.location resource_group_name = azurerm_resource_group.rg.name } resource "azurerm_subnet" "subnet" { name = "AzureFirewallSubnet" resource_group_name = azurerm_resource_group.rg.name virtual_network_name = azurerm_virtual_network.vnet.name address_prefixes = ["10.0.1.0/24"] } resource "azurerm_public_ip" "pip" { name = "${random_pet.prefix.id}-pip" location = azurerm_resource_group.rg.location resource_group_name = azurerm_resource_group.rg.name allocation_method = "Static" sku = "Standard" } resource "azurerm_firewall" "main" { name = "${random_pet.prefix.id}-fw" location = azurerm_resource_group.rg.location resource_group_name = azurerm_resource_group.rg.name sku_name = "AZFW_VNet" sku_tier = "Standard" ip_configuration { name = "configuration" subnet_id = azurerm_subnet.subnet.id public_ip_address_id = azurerm_public_ip.pip.id } } resource "azurerm_firewall_application_rule_collection" "app-rc" { name = "${random_pet.prefix.id}-app-rc" azure_firewall_name = azurerm_firewall.main.name resource_group_name = azurerm_resource_group.rg.name priority = 100 action = "Allow" rule { name = "testrule" source_addresses = [ "10.0.0.0/16", ] target_fqdns = [ "*.google.com", ] protocol { port = "443" type = "Https" } } } resource "azurerm_firewall_network_rule_collection" "net-rc" { name = "${random_pet.prefix.id}-net-rc" azure_firewall_name = azurerm_firewall.main.name resource_group_name = azurerm_resource_group.rg.name priority = 100 action = "Allow" rule { name = "dnsrule" source_addresses = [ "10.0.0.0/16", ] destination_ports = [ "53", ] destination_addresses = [ "8.8.8.8", "8.8.4.4", ] protocols = [ "TCP", "UDP", ] } } resource "random_pet" "prefix" { prefix = var.prefix length = 1 }
Maak een bestand met de naam
variables.tf
en voeg de volgende code in:variable "resource_group_location" { type = string default = "eastus" description = "Location of the resource group." } variable "prefix" { type = string default = "firewall-standard" description = "Prefix of the resource name" }
3. Terraform initialiseren
Voer terraform init uit om de Terraform-implementatie te initialiseren. Met deze opdracht downloadt u de Azure-provider die nodig is voor het beheren van uw Azure-resources.
terraform init -upgrade
Belangrijkste punten:
- Met de
-upgrade
parameter worden de benodigde providerinvoegtoepassingen bijgewerkt naar de nieuwste versie die voldoet aan de versiebeperkingen van de configuratie.
4. Een Terraform-uitvoeringsplan maken
Voer het terraform-plan uit om een uitvoeringsplan te maken.
terraform plan -out main.tfplan
Belangrijkste punten:
- Met de
terraform plan
opdracht wordt een uitvoeringsplan gemaakt, maar niet uitgevoerd. In plaats daarvan wordt bepaald welke acties nodig zijn om de configuratie te maken die is opgegeven in uw configuratiebestanden. Met dit patroon kunt u controleren of het uitvoeringsplan aan uw verwachtingen voldoet voordat u wijzigingen aanbrengt in de werkelijke resources. - Met de optionele
-out
parameter kunt u een uitvoerbestand voor het plan opgeven. Als u de-out
parameter gebruikt, zorgt u ervoor dat het plan dat u hebt gecontroleerd, precies is wat wordt toegepast. - Zie de sectie Beveiligingswaarschuwing voor meer informatie over permanente uitvoeringsplannen en beveiliging.
5. Een Terraform-uitvoeringsplan toepassen
Voer terraform apply uit om het uitvoeringsplan toe te passen op uw cloudinfrastructuur.
terraform apply main.tfplan
Belangrijkste punten:
- In de voorbeeldopdracht
terraform apply
wordt ervan uitgegaan dat u eerder hebt uitgevoerdterraform plan -out main.tfplan
. - Als u een andere bestandsnaam hebt opgegeven voor de
-out
parameter, gebruikt u diezelfde bestandsnaam in de aanroep vanterraform apply
. - Als u de
-out
parameter niet hebt gebruikt, roeptterraform apply
u aan zonder parameters.
6. De firewallregels importeren in een Premium-beleid
U hebt nu een standaardfirewall met klassieke regels. Maak vervolgens een premium firewallbeleid en importeer de regels uit de firewall.
- Selecteer Een resource maken in de Azure-portal.
- Zoek naar firewallbeleid en selecteer dit.
- Selecteer Maken.
- Selecteer test-resources voor Resourcegroep.
- Bij Naam typt u prem-pol.
- Selecteer bij Regio VS - oost.
- Selecteer Premium bij Beleidslaag.
- Selecteer Volgende: DNS-instellingen en ga door totdat u de pagina Regels bereikt.
- Selecteer op de pagina Regels de optie Regels importeren uit een Azure Firewall.
- Selecteer testfirewall en selecteer vervolgens Importeren.
- Selecteer Controleren + maken.
- Selecteer Maken.
7. Bewerk het Terraform-configuratiebestand om de firewall te migreren
Open het main.tf
bestand en breng de volgende wijzigingen aan:
Voeg de volgende sectie 'gegevens' toe:
data "azurerm_firewall_policy" "prem-pol" { name = "prem-pol" resource_group_name = azurerm_resource_group.rg.name }
Wijzig de firewallresource:
resource "azurerm_firewall" "fw" { name = "testfirewall" location = azurerm_resource_group.rg.location resource_group_name = azurerm_resource_group.rg.name firewall_policy_id = data.azurerm_firewall_policy.prem-pol.id sku_tier = "Premium" ip_configuration { name = "configuration" subnet_id = azurerm_subnet.subnet.id public_ip_address_id = azurerm_public_ip.pip.id } }
Verwijder de klassieke regelverzamelingen:
resource "azurerm_firewall_application_rule_collection" "app-rc" { name = "apptestcollection" azure_firewall_name = azurerm_firewall.fw.name resource_group_name = azurerm_resource_group.rg.name priority = 100 action = "Allow" rule { name = "testrule" source_addresses = [ "10.0.0.0/16", ] target_fqdns = [ "*.google.com", ] protocol { port = "443" type = "Https" } } } resource "azurerm_firewall_network_rule_collection" "net-rc" { name = "nettestcollection" azure_firewall_name = azurerm_firewall.fw.name resource_group_name = azurerm_resource_group.rg.name priority = 100 action = "Allow" rule { name = "dnsrule" source_addresses = [ "10.0.0.0/16", ] destination_ports = [ "53", ] destination_addresses = [ "8.8.8.8", "8.8.4.4", ] protocols = [ "TCP", "UDP", ] } }
8. Pas het gewijzigde Terraform-uitvoeringsplan toe
terraform plan -out main.tfplan
terraform apply main.tfplan
9. De resultaten controleren
- Selecteer de resourcegroep testresources .
- Selecteer de testfirewall-resource .
- Controleer of de firewall-SKU Premium is.
- Controleer of de firewall gebruikmaakt van het firewallbeleid prem-pol .
10. Resources opschonen
Wanneer u de resources die via Terraform zijn gemaakt niet meer nodig hebt, voert u de volgende stappen uit:
Voer het terraform-plan uit en geef de vlag op
destroy
.terraform plan -destroy -out main.destroy.tfplan
Belangrijkste punten:
- Met de
terraform plan
opdracht wordt een uitvoeringsplan gemaakt, maar niet uitgevoerd. In plaats daarvan wordt bepaald welke acties nodig zijn om de configuratie te maken die is opgegeven in uw configuratiebestanden. Met dit patroon kunt u controleren of het uitvoeringsplan aan uw verwachtingen voldoet voordat u wijzigingen aanbrengt in de werkelijke resources. - Met de optionele
-out
parameter kunt u een uitvoerbestand voor het plan opgeven. Als u de-out
parameter gebruikt, zorgt u ervoor dat het plan dat u hebt gecontroleerd, precies is wat wordt toegepast. - Zie de sectie Beveiligingswaarschuwing voor meer informatie over permanente uitvoeringsplannen en beveiliging.
- Met de
Voer terraform apply uit om het uitvoeringsplan toe te passen.
terraform apply main.destroy.tfplan
Problemen met Terraform in Azure oplossen
Veelvoorkomende problemen bij het gebruik van Terraform in Azure oplossen