Переход на Брандмауэр Azure уровня "Премиум"

Вы можете перейти с Брандмауэра Azure уровня "Стандартный" на Брандмауэр Azure уровня "Премиум", чтобы получить доступ к новым возможностям. Дополнительные сведения см. в статье Функции Брандмауэра Azure уровня "Премиум".

В этой статье описываются действия, необходимые для ручной миграции c брандмауэра и политики уровня "Стандартный" на уровень "Премиум".

Совет

Самый простой способ изменить номер SKU Брандмауэр Azure без простоя — использовать функцию изменения номера SKU. Дополнительные сведения см. в статье Брандмауэр Azure простое обновление или переход на более раннюю версию.

Прежде чем начать миграцию, изучите рекомендации по повышению производительности и запланируйте предварительный план для требуемого периода обслуживания. Как правило, время простоя составляет 20–30 минут.

Для успешной миграции нужно выполнить следующие шаги:

  1. Создать новую политику "Премиум" на основе существующей политики "Стандартный" или классических правил. К концу этого шага новая политика "Премиум" будет включать все существующие правила и параметры политики.
  2. Перенести Брандмауэр Azure с уровня "Стандартный" на "Премиум" с помощью команды "запустить и отключить".
  3. Подключить созданную политику уровня "Премиум" к Брандмауэру уровня "Премиум".

Важно!

Обновление Брандмауэра уровня "Стандартный", развернутого в Юго-Восточной Азии с использованием Зон доступности, в настоящее время не поддерживается.

Если вы используете Terraform для развертывания Брандмауэра Azure, его также можно использовать, чтобы перейти на Брандмауэр Azure уровня "Премиум". Дополнительные сведения см. в статье Переход с Брандмауэра Azure уровня "Стандартный" на уровень"Премиум" с помощью Terraform.

Вопросы производительности

При переходе с SKU "Стандартный" нужно учитывать аспект производительности. IDPS и проверка TLS — это операции с ресурсоемкими вычислениями. Номер SKU "Премиум" использует более мощный номер SKU виртуальной машины, который масштабируется до более высокой пропускной способности, сравнимой с SKU "Стандартный". Дополнительные сведения о производительности Брандмауэр Azure см. в статье Производительность Брандмауэр Azure.

Майкрософт рекомендует клиентам выполнять полномасштабную проверку при развертывании Azure, чтобы убедиться, что производительность службы Брандмауэра соответствует их ожиданиям.

Простой

Перенесите брандмауэр во время планового обслуживания, так как при миграции Брандмауэра Azure с уровня "Стандартный" на "Премиум" с помощью остановки и запуска будет некоторое время простоя.

Перенос классических правил в политику уровня "Стандартный"

В процессе миграции может потребоваться перенести классические правила брандмауэра в политику уровня "Стандартный". Это можно сделать на портале Azure.

  1. На портале Azure выберите стандартный брандмауэр. На странице Обзор выберите Перенести на политику брандмауэра.

    Переход на политику брандмауэра

  2. На странице Переход на политику брандмауэра выберите Обзор + создать.

  3. Щелкните Создать.

    Развертывание занимает несколько минут.

Вы также можете перенести существующие классические правила из брандмауэра Azure с помощью Azure PowerShell для создания политик. Дополнительные сведения см. в статье Migrate Azure Firewall configurations to Azure Firewall policy using Powershell (Перенос конфигураций Брандмауэра Azure в политику Брандмауэра Azure с помощью PowerShell).

Перенести существующую политику с помощью Azure PowerShell

Transform-Policy.ps1 представляет собой сценарий Azure PowerShell, который создает новую политику Premium на основе существующей политики уровня «Стандартный».

При наличии стандартного идентификатора политики Брандмауэра этот сценарий преобразует его в политику Брандмауэра Azure уровня "Премиум". Сценарий сначала подключается к вашей учетной записи Azure, извлекает политику, преобразует/добавляет различные параметры, после чего загружает новую политику уровня «Премиум». Новая политика премиум-класса называется <previous_policy_name>_premium. Если это преобразование дочерней политики, ссылка на родительскую политику сохранится.

Пример использования

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

Важно!

Сценарий не переносит параметры аналитики угроз и частных диапазонов SNAT. Вам нужно будет записать данные настройки, прежде чем продолжить и перенести их вручную. В противном случае может возникнуть несогласованная фильтрация трафика с помощью нового обновленного брандмауэра.

Для работы этого сценария требуется последняя версия модуля Azure PowerShell. Запустите Get-Module -ListAvailable Az для просмотра установленных версий. Если необходимо выполнить установку, см. статью об установке модуля 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

Перенос Брандмауэра Azure с помощью команды "отключить/запустить"

При использовании SKU Брандмауэра Azure уровня "Стандартный" с политикой брандмауэра перенос SKU Брандмауэра на уровень "Премиум" можно осуществить с помощью метода выделения и отмены выделения. Этот подход к миграции поддерживается как на концентраторе виртуальной сети, так и на брандмауэре защищенного концентратора. При переносе безопасного центра развертывания он сохранит общедоступный IP-адрес брандмауэра.

Версия Azure PowerShell должна быть не ниже 6.5.0. Дополнительные сведения см. в разделе Az 6.5.0.

Перенос брандмауэра концентратора виртуальной сети

  • Отмена выделения Брандмауэра уровня "Стандартный"

    $azfw = Get-AzFirewall -Name "<firewall-name>" -ResourceGroupName "<resource-group-name>"
    $azfw.Deallocate()
    Set-AzFirewall -AzureFirewall $azfw
    
  • Выделение Брандмауэра уровня "Премиум" (один общедоступный 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
    
  • Выделение Брандмауэра уровня "Премиум" (несколько общедоступных IP-адресов)

    $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
    
  • Выделение Брандмауэра уровня "Премиум" в режиме принудительного туннелирования

    $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
    

Перенос брандмауэра концентратора виртуальной сети

  • Отмена выделения Брандмауэра уровня "Стандартный"

    $azfw = Get-AzFirewall -Name "<firewall-name>" -ResourceGroupName "<resource-group-name>"
    $azfw.Deallocate()
    Set-AzFirewall -AzureFirewall $azfw
    
  • Выделение Брандмауэра уровня "Премиум"

    $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
    

Присоединение политики уровня "Премиум" к Брандмауэру уровня "Премиум"

Вы можете присоединить политику уровня "Премиум" к новому Брандмауэру уровня "Премиум", используя портал Azure:

Снимок экрана: политика брандмауэра

Дальнейшие действия