Migrera till Azure Firewall Premium

Du kan migrera Azure Firewall Standard till Azure Firewall Premium för att dra nytta av de nya Premium-funktionerna. Mer information om Azure Firewall Premium-funktioner finns i Azure Firewall Premium-funktioner.

Den här artikeln vägleder dig med de steg som krävs för att migrera standardbrandväggen och principen till Premium manuellt.

Dricks

Det enklaste sättet att ändra din Azure Firewall SKU utan avbrott är att använda funktionen Ändra SKU . Mer information finns i Enkel uppgradering/nedgradering av Azure Firewall.

Innan du påbörjar migreringen bör du förstå prestandaövervägandena och planera framåt för det nödvändiga underhållsfönstret. Typisk stilleståndstid på 20–30 minuter förväntas.

Följande allmänna steg krävs för en lyckad migrering:

  1. Skapa en ny Premium-princip baserat på din befintliga standardprincip eller klassiska regler. I slutet av det här steget kommer din nya Premium-princip att innehålla alla befintliga regler och principinställningar.
  2. Migrera Azure Firewall från Standard till Premium med stopp/start.
  3. Koppla den nyligen skapade Premium-principen till premiumbrandväggen.

Viktigt!

Uppgradering av en standardbrandvägg som distribuerats i Sydostasien med tillgänglighetszoner stöds inte för närvarande.

Om du använder Terraform för att distribuera Azure Firewall kan du använda Terraform för att migrera till Azure Firewall Premium. Mer information finns i Migrera Azure Firewall Standard till Premium med Terraform.

Prestandaöverväganden

Prestanda är ett övervägande när du migrerar från standard-SKU:n. IDPS- och TLS-inspektion är beräkningsintensiva åtgärder. Premium-SKU:n använder en kraftfullare SKU för virtuella datorer, som skalar till ett högre dataflöde som är jämförbart med standard-SKU:n. Mer information om Azure Firewall-prestanda finns i Prestanda för Azure Firewall

Microsoft rekommenderar att kunderna utför fullskalig testning i sin Azure-distribution för att säkerställa att brandväggstjänstens prestanda uppfyller dina förväntningar.

Driftstopp

Migrera brandväggen under en planerad underhållstid eftersom det blir en viss stilleståndstid när du migrerar Azure Firewall från Standard till Premium med stopp/start.

Migrera klassiska regler till standardprincip

Under migreringsprocessen kan du behöva migrera dina klassiska brandväggsregler till en standardprincip. Du kan göra detta med hjälp av Azure-portalen:

  1. Från Azure-portalen väljer du din standardbrandvägg. På sidan Översikt väljer du Migrera till brandväggsprincip.

    Skärmbild som visar migrering till brandväggsprincip.

  2. På sidan Migrera till brandväggsprincip väljer du Granska + skapa.

  3. Välj Skapa.

    Distributionen tar några minuter att slutföra.

Du kan också migrera befintliga klassiska regler från Azure Firewall med hjälp av Azure PowerShell för att skapa principer. Mer information finns i Migrera Azure Firewall-konfigurationer till Azure Firewall-princip med hjälp av PowerShell

Migrera en befintlig princip med Hjälp av Azure PowerShell

Transform-Policy.ps1 är ett Azure PowerShell-skript som skapar en ny Premium-princip från en befintlig Standard-princip.

Med ett standard-brandväggsprincip-ID omvandlar skriptet det till en Premium Azure-brandväggsprincip. Skriptet ansluter först till ditt Azure-konto, hämtar principen, transformerar/lägger till olika parametrar och laddar sedan upp en ny Premium-princip. Den nya Premium-principen heter <previous_policy_name>_premium. Om det är en underordnad principtransformering finns en länk till den överordnade principen kvar.

Användningsexempel:

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

Viktigt!

Skriptet migrerar inte inställningar för hotinformation och privata SNAT-intervall. Du måste anteckna inställningarna innan du fortsätter och migrerar dem manuellt. Annars kan det uppstå inkonsekvent trafikfiltrering med din nya uppgraderade brandvägg.

Det här skriptet kräver det senaste Azure PowerShell. Kör Get-Module -ListAvailable Az för att se vilka versioner som är installerade. Om du behöver installera kan du läsa Installera Azure PowerShell-modulen.

<#
    .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

Migrera Azure Firewall med stop/start

Om du använder Azure Firewall Standard SKU med brandväggsprincip kan du använda metoden Allokera/frigör för att migrera din brandväggs-SKU till Premium. Den här migreringsmetoden stöds på både VNet Hub och Secure Hub Firewalls. När du migrerar en säker hubbdistribution bevaras brandväggens offentliga IP-adress.

Minimikravet för Azure PowerShell-versionen är 6.5.0. Mer information finns i Az 6.5.0.

Migrera en VNET Hub-brandvägg

  • Frigör standardbrandväggen

    $azfw = Get-AzFirewall -Name "<firewall-name>" -ResourceGroupName "<resource-group-name>"
    $azfw.Deallocate()
    Set-AzFirewall -AzureFirewall $azfw
    
  • Allokera Firewall Premium (enskild offentlig IP-adress)

    $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
    
  • Allokera Firewall Premium (flera offentliga IP-adresser)

    $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
    
  • Allokera Firewall Premium i tvingad tunnelläge

    $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
    

Migrera en brandvägg för säker hubb

  • Frigör standardbrandväggen

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

Koppla en Premium-princip till en Premium-brandvägg

Du kan koppla en Premium-princip till den nya Premium-brandväggen med hjälp av Azure-portalen:

Skärmbild som visar brandväggsprincip

Nästa steg