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:

  1. 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.
  2. Eseguire la migrazione Firewall di Azure da Standard a Premium usando stop/start.
  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 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:

  1. Nella portale di Azure selezionare il firewall standard. Nella pagina Panoramica selezionare Eseguire la migrazione ai criteri del firewall.

    Eseguire la migrazione ai criteri del firewall

  2. Nella pagina Eseguire la migrazione ai criteri del firewall selezionare Rivedi e crea.

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

Screenshot che mostra i criteri del firewall

Passaggi successivi