Migrar para o Firewall do Azure Premium

Você pode migrar o Firewall do Azure Standard para o Firewall do Azure Premium para aproveitar os novos recursos Premium. Para mais informações sobre os recursos do Firewall do Azure Premium, confira Recursos do Firewall do Azure Premium.

Este artigo orienta você com as etapas necessárias para migrar manualmente o firewall e a política Standard para Premium.

Dica

A maneira mais fácil de alterar o SKU do Firewall do Azure sem tempo de inatividade é usar o recurso Alterar SKU. Para obter mais informações, confira Upgrade/downgrade fácil do Firewall do Azure.

Antes de iniciar a migração, entenda as considerações de desempenho e planeje com antecedência a janela de manutenção necessária. Um tempo de inatividade típico de 20 a 30 minutos é esperado.

As seguintes etapas gerais são necessárias para uma migração bem-sucedida:

  1. Crie uma política Premium baseada na sua política Standard ou nas regras clássicas existentes. Ao final desta etapa, sua nova política Premium incluirá todas as sua regras e configurações de política existentes.
  2. Migre o Firewall do Azure Standard para Premium usando parar/iniciar.
  3. Anexe a política Premium recém-criada ao seu Firewall Premium.

Importante

Atualmente, não há suporte para a atualização de um Firewall Padrão implantado no Sudeste da Ásia com Zonas de Disponibilidade.

Se você usar o Terraform para implantar o Firewall do Azure, você pode usar o Terraform para migrar para o Firewall do Azure Premium. Para obter mais informações, consulte Migrar o Firewall do Azure Standard para Premium usando o Terraform.

Considerações sobre o desempenho

O desempenho é uma consideração ao migrar do SKU Standard. A inspeção IDPS e TLS são operações de computação intensiva. O SKU Premium usa um SKU de VM mais potente, que é escalado para uma taxa de transferência superior comparável a do SKU Standard. Para obter mais informações sobre o desempenho de Firewall do Azure, consulte Desempenho do Firewall do Azure

A Microsoft recomenda aos clientes executar testes em escala total na implantação do Azure para garantir que o desempenho do serviço de firewall atenda às suas expectativas.

Tempo de inatividade

Migre o firewall durante um tempo de manutenção planejada, pois haverá algum tempo de inatividade quando você migrar o Firewall do Azure de Standard para Premium usando Parar/Iniciar.

Migrar regras Clássicas para a política Padrão

Durante o processo de migração, talvez seja necessário migrar suas regras de firewall Clássicas para uma política Padrão. Também é possível fazê-lo pelo portal do Azure:

  1. No portal do Azure, selecione seu firewall padrão. Na página Visão geral, selecione Migrar para a política de firewall.

    Captura de tela mostrando a migração da política de firewall.

  2. Na página Migrar para a política de firewall, selecione Revisar + criar.

  3. Selecione Criar.

    A implantação leva alguns minutos para ser concluída.

Você também pode migrar regras Clássicas existentes do Firewall do Azure pelo Azure PowerShell para criar políticas. Para obter mais informações, confira Migrar configurações do Firewall do Azure para a Política de Firewall do Azure pelo PowerShell

Migrar uma política existente usando o Azure PowerShell

Transform-Policy.ps1 é um script do Azure PowerShell que cria uma nova política Premium a partir de uma política Standard existente.

O script transforma uma ID de política de firewall padrão em uma política de Firewall do Azure Premium. O script se conecta pela primeira vez à sua conta do Azure, efetua pull da política, transforma/adiciona vários parâmetros e, em seguida, carrega uma nova política Premium. A nova política Premium é denominada <previous_policy_name>_premium. Quando a transformação é aplicada em uma política filho, um link para a política pai permanece.

Exemplo de uso:

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

Importante

O script não migra configurações de inteligência contra ameaças e intervalos privados de SNAT. Você precisará anotar essas configurações antes de continuar e migrá-las manualmente. Caso contrário, você poderá encontrar filtragem de tráfego inconsistente com o novo firewall atualizado.

O script requer o Azure PowerShell mais recente. Execute Get-Module -ListAvailable Az para ver quais versões estão instaladas. Se é preciso instalar, consulte Instalar o módulo do 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

Migrar o Firewall do Azure usando parar/iniciar

Se você usa o SKU padrão do Firewall do Azure com a política de firewall, pode usar o método Alocar/Desalocar para migrar sua SKU de firewall para Premium. Essa abordagem de migração tem suporte no Hub de VNet e nos firewalls de Hub seguro. Ao migrar uma implantação de Hub seguro, ela preservará o endereço IP público do firewall.

A versão mínima necessária do Azure PowerShell é a 6.5.0. Para obter mais informações, confira Az 6.5.0.

Migrar um firewall de Hub da VNET

  • Desalocar o Firewall Padrão

    $azfw = Get-AzFirewall -Name "<firewall-name>" -ResourceGroupName "<resource-group-name>"
    $azfw.Deallocate()
    Set-AzFirewall -AzureFirewall $azfw
    
  • Alocar o firewall Premium (um IP)

    $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
    
  • Alocar o firewall Premium (vários IPs)

    $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
    
  • Alocar o firewall Premium no modo de Tunnel forçado

    $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
    

Migrar um firewall de Hub seguro

  • Desalocar o Firewall Padrão

    $azfw = Get-AzFirewall -Name "<firewall-name>" -ResourceGroupName "<resource-group-name>"
    $azfw.Deallocate()
    Set-AzFirewall -AzureFirewall $azfw
    
  • Alocar 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
    

Anexar uma política Premium a um firewall Premium

Você pode anexar uma política Premium ao novo firewall Premium usando o portal do Azure:

Captura de tela mostrando a política de firewall

Próximas etapas