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:

  1. 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.
  2. Eseguire la migrazione Firewall di Azure da Standard a Premium usando l'arresto/avvio.
  3. 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:

  1. Nella portale di Azure selezionare il firewall standard. Nella pagina Panoramica selezionare Esegui migrazione ai criteri firewall.

    Screenshot che mostra la migrazione ai criteri firewall.

  2. Nella pagina Esegui migrazione ai criteri firewall selezionare Rivedi e crea.

  3. 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:

Screenshot che mostra i criteri del firewall

Passaggi successivi