ترحيل إلى Azure Firewall Premium

يمكنك ترحيل Azure Firewall Standard إلى Azure Firewall Premium. للاستفادة من قدرات النهج المميز الجديدة. للتعرف على ميزات Azure Firewall Premium، راجع قسم ميزات Azure Firewall Premium.

ترشدك هذه المقالة إلى الخطوات المطلوبة لترحيل جدار الحماية والنهج القياسي يدويًا إلى Premium.

تلميح

أسهل طريقة لتغيير Azure Firewall SKU بدون وقت تعطل هي استخدام ميزة تغيير SKU . لمزيد من المعلومات، راجع سهولة ترقية/تخفيض جدار حماية Azure.

قبل بدء الترحيل، افهم اعتبارات الأداء واخطط مسبقا لنافذة الصيانة المطلوبة. من المتوقع أن يكون وقت التعطل النموذجي من 20 إلى 30 دقيقة.

الخطوات العامة التالية مطلوبة للترحيل الناجح:

  1. إنشاء نهج Premium جديد استنادًا إلى النهج القياسي الحالي أو القواعد الكلاسيكية. بنهاية هذه الخطوة، سيتضمن نهجك المتميز الجديد جميع القواعد وإعدادات النهج الحالية.
  2. ترحيل Azure Firewall من Standard إلى Premium باستخدام stop/start.
  3. قم بإرفاق نهج Premium الذي تم إنشاؤه حديثا بجدار الحماية المميز.

هام

ترقية جدار حماية قياسي تم نشره في جنوب شرق آسيا مع مناطق التوفر غير مدعوم حاليا.

إذا كنت تستخدم Terraform لنشر Azure Firewall، يمكنك استخدام Terraform للترحيل إلى Azure Firewall Premium. لمزيد من المعلومات، راجع ترحيل Azure Firewall Standard إلى Premium باستخدام Terraform.

الاعتبارات الخاصة بالأداء

الأداء هو الاعتبار عند الترحيل من SKU القياسي. يعد فحص IDPS وTLS عمليات حسابية مكثفة. تستخدم وحدة SKU المتميزة وحدة SKU VM أكثر قوة، والتي تتدرج إلى معدل نقل أعلى قابل للمقارنة مع وحدة SKU القياسية. لمزيد من المعلومات حول Azure Firewall Performance، راجع Azure Firewall Performance

توصي Microsoft العملاء بإجراء اختبار كامل النطاق في نشر Azure الخاص بهم لضمان أن أداء خدمة جدار الحماية يلبي توقعاتهم.

وقت التعطل

قم بترحيل جدار الحماية الخاص بك أثناء وقت الصيانة المخطط له، حيث سيكون هناك بعض وقت التوقف عند ترحيل جدار حماية Azure من Standard إلى Premium باستخدام الإيقاف/البدء.

ترحيل القواعد الكلاسيكية إلى النهج القياسي

أثناء عملية الترحيل، قد تحتاج إلى ترحيل قواعد جدار الحماية الكلاسيكية إلى نهج قياسي. يمكنك القيام بذلك باستخدام مدخل Azure:

  1. من مدخل Azure، حدد جدار الحماية القياسي. في الصفحة نظرة عامة، حدد "Migrate to firewall policy".

    لقطة شاشة تعرض الترحيل إلى نهج جدار الحماية.

  2. في صفحة نهج الترحيل إلى جدار الحماية حدد "Review + create".

  3. حدد إنشاء.

    يستغرق النشر بضع دقائق لإكماله.

يمكنك أيضا ترحيل القواعد الكلاسيكية الموجودة من Azure Firewall باستخدام Azure PowerShell لإنشاء نُهُج. لمزيد من المعلومات، راجع ترحيل تكوينات Azure Firewall إلى نهج Azure Firewall باستخدام PowerShell

ترحيل نهج موجود باستخدام Azure PowerShell

Transform-Policy.ps1هو برنامج نصي لـ PowerShell Azure يقوم بإنشاء نهج مميز جديد من نهج قياسي موجود.

في وجود معرف نهج جدار الحماية القياسي، يقوم البرنامج النصي بتحويله إلى نهج Premium Azure Firewall. يتصل البرنامج النصي أولاً بحساب 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 لمعرفة الإصدارات المثبتة. إذا كنت بحاجة إلى التثبيت، راجع نموذجInstall 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 Firewall باستخدام الإيقاف/البدء

إذا كنت تستخدم Azure Firewall Standard SKU مع نهج جدار الحماية، يمكنك استخدام أسلوب التخصيص/إلغاء التخصيص لترحيل جدار الحماية 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
    
  • تخصيص Firewall Premium (عنوان 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
    
  • تخصيص Firewall Premium (عناوين 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
    
  • تخصيص Firewall Premium في وضع النفق المفروض

    $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
    

إرفاق نهج Premium بجدار حماية Premium

يمكنك إرفاق نهج Premium بجدار الحماية Premium الجديد باستخدام مدخل Microsoft Azure:

Screenshot showing firewall policy

الخطوات التالية