Dela via


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.

Tips

Det enklaste sättet att ändra din Azure Firewall SKU utan stilleståndstid är att använda funktionen Ändra SKU. Mer information finns i Azure Firewall enkel uppgradering/nedgradering.

Innan du påbörjar migreringen bör du förstå prestandaövervägandena och planera i förväg 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 premiumprincip 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.

Saker att tänka på gällande prestanda

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 skalas till ett högre dataflöde som är jämförbart med standard-SKU:n. Mer information om Azure Firewall prestanda finns i Azure Firewall Prestanda

Microsoft rekommenderar kunder att utföra 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 uppstår 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 Standard-princip. Du kan göra detta med hjälp av Azure Portal:

  1. Välj standardbrandväggen i Azure Portal. På sidan Översikt väljer du Migrera till brandväggsprincip.

    Migrera 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 PowerShell

Migrera en befintlig princip med 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 premiumprincipen heter <previous_policy_name>_premium. Om det är en underordnad principomvandling 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 notera inställningarna innan du fortsätter och migrerar dem manuellt. Annars kan det uppstå inkonsekvent trafikfiltrering med den nya uppgraderade brandväggen.

Det här skriptet kräver den 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 modul.

<#
    .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 brandväggs-SKU:n till Premium. Den här migreringsmetoden stöds på både VNet Hub och Secure Hub Firewalls. När du migrerar en secure hub-distribution bevaras brandväggens offentliga IP-adress.

Det minsta Azure PowerShell versionskravet ä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 secure 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

    $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 Portal:

Skärmbild som visar brandväggsprincip

Nästa steg