Eseguire la migrazione a Firewall di Azure Premium
È possibile eseguire la migrazione di Firewall di Azure Standard a Firewall di Azure Premium per sfruttare le nuove funzionalità Premium. Per altre informazioni sulle funzionalità Firewall di Azure Premium, vedere Firewall di Azure Funzionalità Premium.
Questo articolo illustra i passaggi necessari per eseguire manualmente la migrazione del firewall e dei criteri Standard a Premium.
Suggerimento
Il modo più semplice per modificare lo SKU Firewall di Azure senza tempi di inattività consiste nell'usare la funzionalità Cambia SKU. Per altre informazioni, vedere Firewall di Azure semplice aggiornamento/downgrade.
Prima di iniziare la migrazione, comprendere le considerazioni sulle prestazioni e pianificare in anticipo la finestra di manutenzione necessaria. È previsto un periodo di inattività tipico di 20-30 minuti.
Per una migrazione corretta sono necessari i passaggi generali seguenti:
- Creare nuovi criteri Premium in base ai criteri Standard o alle regole classiche esistenti. Al termine di questo passaggio, il nuovo criterio Premium includerà tutte le regole e le impostazioni dei criteri esistenti.
- Eseguire la migrazione Firewall di Azure da Standard a Premium usando l'arresto/avvio.
- Collegare i criteri Premium appena creati al firewall Premium.
Importante
L'aggiornamento di un firewall standard distribuito in Asia sud-orientale con zone di disponibilità non è attualmente supportato.
Se si usa Terraform per distribuire il Firewall di Azure, è possibile usare Terraform per eseguire la migrazione a Firewall di Azure Premium. Per altre informazioni, vedere Eseguire la migrazione di Firewall di Azure Standard a Premium con Terraform.
Considerazioni sulle prestazioni
Le prestazioni sono una considerazione durante la migrazione dallo SKU standard. L'ispezione IDPS e TLS sono operazioni a elevato utilizzo di calcolo. Lo SKU Premium usa uno SKU di macchina virtuale più potente, che si adatta a una velocità effettiva più elevata paragonabile allo SKU standard. Per altre informazioni sulle prestazioni di Firewall di Azure, vedere Firewall di Azure Prestazioni
Microsoft consiglia ai clienti di eseguire test su larga scala nella distribuzione di Azure per garantire che le prestazioni del servizio firewall soddisfino le aspettative.
Tempo di inattività
Eseguire la migrazione del firewall durante un periodo di manutenzione pianificata, perché si verifica un tempo di inattività durante la migrazione Firewall di Azure da Standard a Premium usando l'arresto/avvio.
Eseguire la migrazione delle regole classiche ai criteri Standard
Durante il processo di migrazione, potrebbe essere necessario eseguire la migrazione delle regole del firewall classiche a un criterio Standard. A tale scopo, usare il portale di Azure:
Nella portale di Azure selezionare il firewall standard. Nella pagina Panoramica selezionare Esegui migrazione ai criteri firewall.
Nella pagina Esegui migrazione ai criteri firewall selezionare Rivedi e crea.
Seleziona Crea.
Il completamento della distribuzione richiede alcuni minuti.
È anche possibile eseguire la migrazione delle regole classiche esistenti da Firewall di Azure usando Azure PowerShell per creare criteri. Per altre informazioni, vedere Eseguire la migrazione delle configurazioni Firewall di Azure ai criteri di Firewall di Azure tramite PowerShell
Eseguire la migrazione di un criterio esistente con Azure PowerShell
Transform-Policy.ps1
è uno script di Azure PowerShell che crea un nuovo criterio Premium da un criterio Standard esistente.
Dato un ID criterio firewall standard, lo script lo trasforma in un criterio firewall di Azure Premium. Lo script si connette prima all'account Azure, esegue il pull dei criteri, trasforma/aggiunge vari parametri e quindi carica un nuovo criterio Premium. Il nuovo criterio Premium è denominato <previous_policy_name>_premium
. Se si tratta di una trasformazione dei criteri figlio, rimarrà un collegamento al criterio padre.
Esempio d'uso:
Transform-Policy -PolicyId /subscriptions/XXXXX-XXXXXX-XXXXX/resourceGroups/some-resource-group/providers/Microsoft.Network/firewallPolicies/policy-name
Importante
Lo script non esegue la migrazione delle impostazioni degli intervalli privati di Intelligence per le minacce e SNAT. È necessario prendere nota di tali impostazioni prima di procedere ed eseguirne la migrazione manualmente. In caso contrario, potrebbe verificarsi un filtro del traffico incoerente con il nuovo firewall aggiornato.
Questo script richiede la versione più recente di Azure PowerShell. Eseguire Get-Module -ListAvailable Az
per determinare le versioni installate. Se è necessario installarlo, vedere Installare il modulo Azure PowerShell.
<#
.SYNOPSIS
Given an Azure firewall policy id the script will transform it to a Premium Azure firewall policy.
The script will first pull the policy, transform/add various parameters and then upload a new premium policy.
The created policy will be named <previous_policy_name>_premium if no new name provided else new policy will be named as the parameter passed.
.Example
Transform-Policy -PolicyId /subscriptions/XXXXX-XXXXXX-XXXXX/resourceGroups/some-resource-group/providers/Microsoft.Network/firewallPolicies/policy-name -NewPolicyName <optional param for the new policy name>
#>
param (
#Resource id of the azure firewall policy.
[Parameter(Mandatory=$true)]
[string]
$PolicyId,
#new filewallpolicy name, if not specified will be the previous name with the '_premium' suffix
[Parameter(Mandatory=$false)]
[string]
$NewPolicyName = ""
)
$ErrorActionPreference = "Stop"
$script:PolicyId = $PolicyId
$script:PolicyName = $NewPolicyName
function ValidatePolicy {
[CmdletBinding()]
param (
[Parameter(Mandatory=$true)]
[Object]
$Policy
)
Write-Host "Validating resource is as expected"
if ($null -eq $Policy) {
Write-Error "Received null policy"
exit(1)
}
if ($Policy.GetType().Name -ne "PSAzureFirewallPolicy") {
Write-Error "Resource must be of type Microsoft.Network/firewallPolicies"
exit(1)
}
if ($Policy.Sku.Tier -eq "Premium") {
Write-Host "Policy is already premium" -ForegroundColor Green
exit(1)
}
}
function GetPolicyNewName {
[CmdletBinding()]
param (
[Parameter(Mandatory=$true)]
[Microsoft.Azure.Commands.Network.Models.PSAzureFirewallPolicy]
$Policy
)
if (-not [string]::IsNullOrEmpty($script:PolicyName)) {
return $script:PolicyName
}
return $Policy.Name + "_premium"
}
function TransformPolicyToPremium {
[CmdletBinding()]
param (
[Parameter(Mandatory=$true)]
[Microsoft.Azure.Commands.Network.Models.PSAzureFirewallPolicy]
$Policy
)
$NewPolicyParameters = @{
Name = (GetPolicyNewName -Policy $Policy)
ResourceGroupName = $Policy.ResourceGroupName
Location = $Policy.Location
BasePolicy = $Policy.BasePolicy.Id
ThreatIntelMode = $Policy.ThreatIntelMode
ThreatIntelWhitelist = $Policy.ThreatIntelWhitelist
PrivateRange = $Policy.PrivateRange
DnsSetting = $Policy.DnsSettings
SqlSetting = $Policy.SqlSetting
ExplicitProxy = $Policy.ExplicitProxy
DefaultProfile = $Policy.DefaultProfile
Tag = $Policy.Tag
SkuTier = "Premium"
}
Write-Host "Creating new policy"
$premiumPolicy = New-AzFirewallPolicy @NewPolicyParameters
Write-Host "Populating rules in new policy"
foreach ($ruleCollectionGroup in $Policy.RuleCollectionGroups) {
$ruleResource = Get-AzResource -ResourceId $ruleCollectionGroup.Id
$ruleToTransfom = Get-AzFirewallPolicyRuleCollectionGroup -AzureFirewallPolicy $Policy -Name $ruleResource.Name
$ruleCollectionGroup = @{
FirewallPolicyObject = $premiumPolicy
Priority = $ruleToTransfom.Properties.Priority
Name = $ruleToTransfom.Name
}
if ($ruleToTransfom.Properties.RuleCollection.Count) {
$ruleCollectionGroup["RuleCollection"] = $ruleToTransfom.Properties.RuleCollection
}
Set-AzFirewallPolicyRuleCollectionGroup @ruleCollectionGroup
}
}
function ValidateAzNetworkModuleExists {
Write-Host "Validating needed module exists"
$networkModule = Get-InstalledModule -Name "Az.Network" -MinimumVersion 4.5 -ErrorAction SilentlyContinue
if ($null -eq $networkModule) {
Write-Host "Please install Az.Network module version 4.5.0 or higher, see instructions: https://github.com/Azure/azure-powershell#installation"
exit(1)
}
$resourceModule = Get-InstalledModule -Name "Az.Resources" -MinimumVersion 4.2 -ErrorAction SilentlyContinue
if ($null -eq $resourceModule) {
Write-Host "Please install Az.Resources module version 4.2.0 or higher, see instructions: https://github.com/Azure/azure-powershell#installation"
exit(1)
}
Import-Module Az.Network -MinimumVersion 4.5.0
Import-Module Az.Resources -MinimumVersion 4.2.0
}
ValidateAzNetworkModuleExists
$policy = Get-AzFirewallPolicy -ResourceId $script:PolicyId
ValidatePolicy -Policy $policy
TransformPolicyToPremium -Policy $policy
Eseguire la migrazione Firewall di Azure usando l'arresto/avvio
Se si usa Firewall di Azure SKU Standard con i criteri del firewall, è possibile usare il metodo Allocate/Deallocate per eseguire la migrazione dello SKU del firewall a Premium. Questo approccio alla migrazione è supportato sia nell'hub di rete virtuale che nei firewall dell'hub protetto. Quando si esegue la migrazione di una distribuzione di Hub sicuro, mantiene l'indirizzo IP pubblico del firewall.
Il requisito minimo della versione di Azure PowerShell è 6.5.0. Per altre informazioni, vedere Az 6.5.0.
Eseguire la migrazione di un firewall dell'hub di rete virtuale
Deallocare il firewall standard
$azfw = Get-AzFirewall -Name "<firewall-name>" -ResourceGroupName "<resource-group-name>" $azfw.Deallocate() Set-AzFirewall -AzureFirewall $azfw
Allocare Firewall Premium (singolo indirizzo IP pubblico)
$azfw = Get-AzFirewall -Name "<firewall-name>" -ResourceGroupName "<resource-group-name>" $azfw.Sku.Tier="Premium" $vnet = Get-AzVirtualNetwork -ResourceGroupName "<resource-group-name>" -Name "<Virtual-Network-Name>" $publicip = Get-AzPublicIpAddress -Name "<Firewall-PublicIP-name>" -ResourceGroupName "<resource-group-name>" $azfw.Allocate($vnet,$publicip) Set-AzFirewall -AzureFirewall $azfw
Allocare Firewall Premium (più indirizzi IP pubblici)
$azfw = Get-AzFirewall -Name "FW Name" -ResourceGroupName "RG Name" $azfw.Sku.Tier="Premium" $vnet = Get-AzVirtualNetwork -ResourceGroupName "RG Name" -Name "VNet Name" $publicip1 = Get-AzPublicIpAddress -Name "Public IP1 Name" -ResourceGroupName "RG Name" $publicip2 = Get-AzPublicIpAddress -Name "Public IP2 Name" -ResourceGroupName "RG Name" $azfw.Allocate($vnet,@($publicip1,$publicip2)) Set-AzFirewall -AzureFirewall $azfw
Allocare Firewall Premium in modalità tunnel forzato
$azfw = Get-AzFirewall -Name "<firewall-name>" -ResourceGroupName "<resource-group-name>" $azfw.Sku.Tier="Premium" $vnet = Get-AzVirtualNetwork -ResourceGroupName "<resource-group-name>" -Name "<Virtual-Network-Name>" $publicip = Get-AzPublicIpAddress -Name "<Firewall-PublicIP-name>" -ResourceGroupName "<resource-group-name>" $mgmtPip = Get-AzPublicIpAddress -ResourceGroupName "<resource-group-name>"-Name "<Management-PublicIP-name>" $azfw.Allocate($vnet,$publicip,$mgmtPip) Set-AzFirewall -AzureFirewall $azfw
Eseguire la migrazione di un firewall dell'hub protetto
Deallocare il firewall standard
$azfw = Get-AzFirewall -Name "<firewall-name>" -ResourceGroupName "<resource-group-name>" $azfw.Deallocate() Set-AzFirewall -AzureFirewall $azfw
Allocare Firewall Premium
$azfw = Get-AzFirewall -Name "<firewall-name>" -ResourceGroupName "<resource-group-name>" $hub = get-azvirtualhub -ResourceGroupName "<resource-group-name>" -name "<vWANhub-name>" $azfw.Sku.Tier="Premium" $azfw.Allocate($hub.id) Set-AzFirewall -AzureFirewall $azfw
Collegare un criterio Premium a un firewall Premium
È possibile collegare un criterio Premium al nuovo firewall Premium usando il portale di Azure: