Переход на Брандмауэр Azure уровня "Премиум"
Вы можете перейти с Брандмауэра Azure уровня "Стандартный" на Брандмауэр Azure уровня "Премиум", чтобы получить доступ к новым возможностям. Дополнительные сведения см. в статье Функции Брандмауэра Azure уровня "Премиум".
В этой статье описываются действия, необходимые для ручной миграции c брандмауэра и политики уровня "Стандартный" на уровень "Премиум".
Совет
Самый простой способ изменить номер SKU Брандмауэр Azure без простоя — использовать функцию "Изменить номер SKU". Дополнительные сведения см. в разделе Брандмауэр Azure простое обновление и понижение уровня.
Прежде чем начать миграцию, изучите рекомендации по повышению производительности и запланируйте предварительный план для требуемого периода обслуживания. Как правило, время простоя составляет 20–30 минут.
Для успешной миграции нужно выполнить следующие шаги:
- Создать новую политику "Премиум" на основе существующей политики "Стандартный" или классических правил. К концу этого шага новая политика "Премиум" будет включать все существующие правила и параметры политики.
- Перенести Брандмауэр Azure с уровня "Стандартный" на "Премиум" с помощью команды "запустить и отключить".
- Подключить созданную политику уровня "Премиум" к Брандмауэру уровня "Премиум".
Внимание
Обновление Брандмауэра уровня "Стандартный", развернутого в Юго-Восточной Азии с использованием Зон доступности, в настоящее время не поддерживается.
Если вы используете Terraform для развертывания Брандмауэра Azure, его также можно использовать, чтобы перейти на Брандмауэр Azure уровня "Премиум". Дополнительные сведения см. в статье Переход с Брандмауэра Azure уровня "Стандартный" на уровень"Премиум" с помощью Terraform.
Замечания, связанные с быстродействием
При переходе с SKU "Стандартный" нужно учитывать аспект производительности. IDPS и проверка TLS — это операции с ресурсоемкими вычислениями. Номер SKU уровня "Премиум" использует более мощный номер SKU виртуальной машины, который масштабируется до более высокой пропускной способности, сравнимой со стандартным номером SKU. Дополнительные сведения о производительности Брандмауэр Azure см. в разделе Брандмауэр Azure Производительность
Майкрософт рекомендует клиентам выполнять полномасштабную проверку при развертывании Azure, чтобы убедиться, что производительность службы Брандмауэра соответствует их ожиданиям.
Простой
Перенесите брандмауэр во время планового обслуживания, так как при миграции Брандмауэра Azure с уровня "Стандартный" на "Премиум" с помощью остановки и запуска будет некоторое время простоя.
Перенести классические правила в политику уровня "Стандартный"
В процессе миграции может потребоваться перенести классические правила брандмауэра в политику уровня "Стандартный". Это можно сделать на портале Azure.
На портале Azure выберите стандартный брандмауэр. На странице Обзор выберите Перенести на политику брандмауэра.
На странице Переход на политику брандмауэра выберите Обзор + создать.
Нажмите кнопку создания.
Развертывание занимает несколько минут.
Вы также можете перенести существующие классические правила из брандмауэра 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: