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 funzionalità Firewall di Azure Premium.
Questo articolo illustra i passaggi necessari per eseguire manualmente la migrazione manuale 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à Modifica SKU. Per altre informazioni, vedere Firewall di Azure facile aggiornamento/downgrade.
Prima di avviare la migrazione, comprendere le considerazioni sulle prestazioni e pianificare in anticipo la finestra di manutenzione necessaria. È previsto un periodo di tempo inattivo tipico di 20-30 minuti.
Per una migrazione riuscita, sono necessari i passaggi generali seguenti:
- Creare nuovi criteri Premium in base ai criteri Standard esistenti o alle regole classiche. Alla fine 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 stop/start.
- 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 la 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 usando Terraform.
Considerazioni sulle prestazioni
Le prestazioni sono una considerazione durante la migrazione dallo SKU standard. L'IDPS e l'ispezione TLS sono operazioni a elevato utilizzo di calcolo. Lo SKU Premium usa uno SKU di macchina virtuale più potente, che consente di aumentare la velocità effettiva rispetto allo SKU standard. Per altre informazioni sulle prestazioni Firewall di Azure, vedere prestazioni Firewall di Azure
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 tempo di manutenzione pianificato, poiché si verifica un tempo di inattività durante la migrazione di Firewall di Azure da Standard a Premium tramite stop/start.
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. È possibile eseguire questa operazione usando il portale di Azure:
Nella portale di Azure selezionare il firewall standard. Nella pagina Panoramica selezionare Eseguire la migrazione ai criteri del firewall.
Nella pagina Eseguire la migrazione ai criteri del firewall selezionare Rivedi e crea.
Selezionare Crea.
Il completamento della distribuzione richiede alcuni minuti.
È anche possibile eseguire la migrazione di regole classiche esistenti da Firewall di Azure usando Azure PowerShell per creare criteri. Per altre informazioni, vedere Eseguire la migrazione di configurazioni di Firewall di Azure a criteri di Firewall di Azure tramite PowerShell
Eseguire la migrazione di un criterio esistente usando Azure PowerShell
Transform-Policy.ps1
è uno script 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 del 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, un collegamento al criterio padre rimarrà.
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 Threat Intelligence e SNAT. È necessario prendere nota di queste impostazioni prima di procedere e eseguirne la migrazione manualmente. In caso contrario, potrebbe verificarsi un filtro del traffico incoerente con il nuovo firewall aggiornato.
Questo script richiede l'Azure PowerShell più recente. 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 tramite stop/start
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 firewall a Premium. Questo approccio alla migrazione è supportato sia nei firewall dell'hub virtuale che in firewall dell'hub sicuro. Quando si esegue la migrazione di una distribuzione dell'hub sicuro, il firewall mantiene l'indirizzo IP pubblico del firewall.
Il requisito minimo di Azure PowerShell versione è 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 (indirizzo IP pubblico singolo)
$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 hub sicuro
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 criteri Premium a un firewall Premium
È possibile collegare un criterio Premium al nuovo firewall Premium usando il portale di Azure: