Migración a Azure Firewall Prémium

Puede migrar Azure Firewall Estándar a Azure Firewall Premium para aprovechar las ventajas de las nuevas funcionalidades premium. Para obtener más información sobre las características de Azure Firewall Premium, consulte Características de Azure Firewall Premium.

Este artículo le guía con los pasos necesarios para migrar manualmente el firewall y la directiva Estándar a Premium.

Sugerencia

La manera más fácil de cambiar la SKU de Azure Firewall sin tiempo de inactividad consiste en usar la característica Cambiar de SKU. Para más información, consulte Actualización o cambio a una versión anterior de Azure Firewall.

Antes de iniciar la migración, comprenda las consideraciones de rendimiento y planee con antelación la ventana de mantenimiento necesaria. Se espera un tiempo de fuera de servicio típico de 20 a 30 minutos.

Los siguientes pasos generales son necesarios para una migración correcta:

  1. Cree una directiva Premium basada en la directiva estándar existente o en las reglas clásicas. Al final de este paso, la nueva directiva Premium incluirá todas las reglas y la configuración de directiva existentes.
  2. Migrar Azure Firewall de Estándar a Premium mediante stop/start.
  3. Adjuntar la directiva de Premium recién creada al firewall de Premium.

Importante

Actualmente no se admite la actualización de un firewall estándar implementado en el Sudeste Asiático con Availability Zones.

Si usa Terraform para implementar Azure Firewall, puede usar Terraform para migrar a Azure Firewall Prémium. Para más información, consulte Migración de Azure Firewall estándar a prémium con Terraform.

Consideraciones de rendimiento

El rendimiento es un aspecto que se debe tener en cuenta al migrar desde la SKU estándar. La inspección de IDPS y TLS son operaciones que consumen numerosos recursos informáticos. La SKU premium usa una SKU de máquina virtual más potente que se escala a un rendimiento superior comparable a la SKU estándar. Para obtener más información sobre el rendimiento de Azure Firewall, consulte rendimiento de Azure Firewall.

Microsoft recomienda a sus clientes realizar pruebas a escala completa en sus implementaciones de Azure para asegurarse de que el rendimiento del servicio de firewall cumple sus expectativas.

Tiempo de inactividad

Migre el firewall durante el mantenimiento planeado, ya que se producirá algún tiempo de inactividad al migrar Azure Firewall de Estándar a Premium mediante Start/Stop.

Migración de reglas clásicas a una directiva estándar

Durante el proceso de migración, es posible que tenga que migrar las reglas de firewall clásicas a una directiva estándar. Puede hacerlo mediante Azure Portal:

  1. En Azure Portal, seleccione el firewall estándar. En la página Información general, seleccione Migrate to firewall policy (Migrar a la directiva de firewall).

    Migrate to firewall policy (Migrar a la directiva de firewall)

  2. En la página Migrate to firewall policy (Migrar a la directiva de firewall), seleccione Revisar y crear.

  3. Seleccione Crear.

    La implementación tarda unos minutos en completarse.

También puede migrar las reglas clásicas existentes de Azure Firewall mediante Azure PowerShell para crear directivas. Para más información, consulte Migración de configuraciones de Azure Firewall a directivas de Azure Firewall con PowerShell.

Migrar una directiva existente con Azure PowerShell

Transform-Policy.ps1 es un script de Azure PowerShell que crea una directiva prémium a partir de una directiva estándar existente.

A partir de un identificador de directiva de firewall estándar, el script la transforma en una directiva de firewall prémium de Azure. El script se conecta primero a su cuenta de Azure, extrae la directiva, transforma o agrega varios parámetros y, luego, carga una nueva directiva prémium. La nueva directiva prémium se denomina <previous_policy_name>_premium. Si se trata de la transformación de una directiva secundaria, se mantendrá un vínculo a la directiva principal.

Ejemplo de uso:

Transform-Policy -PolicyId /subscriptions/XXXXX-XXXXXX-XXXXX/resourceGroups/some-resource-group/providers/Microsoft.Network/firewallPolicies/policy-name

Importante

El script no migra la configuración de los intervalos privados de Inteligencia sobre amenazas y SNAT. Esos valores deberá anotarlos antes de continuar y migrarlos manualmente. De lo contrario, podría encontrar un filtrado de tráfico incoherente con el nuevo firewall actualizado.

El uso de este script requiere la última versión de Azure PowerShell. Ejecute Get-Module -ListAvailable Az para ver qué versiones están instaladas. Si necesita instalarlo, consulte Instalación del módulo de 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

Migración de Azure Firewall mediante Start/Stop

Si usa la SKU de Azure Firewall Estándar con la directiva de firewall, puede utilizar el método Allocate/Deallocate para migrar dicha SKU a Azure Firewall Prémium. Este enfoque de migración se admite en los firewalls tanto de centro de conectividad de red virtual como de centro de conectividad seguro. Al migrar la implementación de un centro de conectividad seguro, conservará la dirección IP pública del firewall.

El requisito mínimo de la versión de Azure PowerShell es 6.5.0. Para más información, consulte Az 6.5.0.

Migración de un firewall de centro de conectividad de red virtual

  • Desasignar el firewall estándar

    $azfw = Get-AzFirewall -Name "<firewall-name>" -ResourceGroupName "<resource-group-name>"
    $azfw.Deallocate()
    Set-AzFirewall -AzureFirewall $azfw
    
  • Asignar el firewall prémium (una sola dirección IP pública)

    $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
    
  • Asignar el firewall prémium (varias direcciones IP públicas)

    $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
    
  • Asignar el firewall prémium en modo de túnel forzado

    $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
    

Migración de un firewall de centro de conectividad seguro

  • Desasignar el firewall estándar

    $azfw = Get-AzFirewall -Name "<firewall-name>" -ResourceGroupName "<resource-group-name>"
    $azfw.Deallocate()
    Set-AzFirewall -AzureFirewall $azfw
    
  • Asignar el firewall prémium

    $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
    

Asociación de una directiva prémium a un firewall prémium

Puede asociar una directiva prémium al nuevo firewall prémium mediante Azure Portal:

Captura de pantalla que muestra la directiva del firewall

Pasos siguientes