Azure Firewall Premium への移行

Azure Firewall Standard を Azure Firewall Premium に移行することで、新しい Premium の機能を利用できます。 Azure Firewall Premium の機能の詳細については、Azure Firewall Premium の機能に関するページを参照してください。

この記事では、Standard のファイアウォールとポリシーを Premium に手動で移行するために必要な手順について説明します。

ヒント

ダウンタイムなしでAzure Firewall SKU を変更する最も簡単な方法は、SKU の変更機能を使用することです。 詳細については、「Azure Firewall イージー アップグレード/ダウングレード」を参照してください。

移行を開始する前に、パフォーマンスに関する考慮事項を把握し、必要なメンテナンス期間を前もって計画しておいてください。 通常、20 分から 30 分のダウン タイムが予想されます。

移行を成功させるために必要な大まかな手順を次に示します。

  1. 既存の Standard ポリシーまたはクラシック ルールに基づいて新しい Premium ポリシーを作成します。 この手順の最後には、既存のルールとポリシー設定をすべて含んだ新しい Premium ポリシーが完成します。
  2. 停止/開始を使用して Azure Firewall を Standard から Premium に移行します
  3. 新しく作成した Premium ポリシーを Premium ファイアウォールにアタッチします

重要

東南アジアにデプロイされた標準ファイアウォールを Availability Zones でアップグレードすることは、現在サポートされていません。

Terraform を使用して Azure Firewall をデプロイすると、Terraform を使用して Azure Firewall Premium に移行することができます。 詳細については、「Terraform を使用して Azure Firewall Standard を Premium に移行する」を参照してください。

パフォーマンスに関する考慮事項

Standard SKU から移行するとき、パフォーマンスが考慮事項になります。 IDPS と TLS 検査は多くのコンピューティング処理を要する操作です。 Premium SKU では、Standard SKU に匹敵するより高いスループットまでスケーリングされる、より強力な VM SKU が使用されます。 Azure Firewall のパフォーマンスの詳細については、「Azure Firewall のパフォーマンス」参照してください

ファイアウォール サービスのパフォーマンスが期待値を満たせるよう、お客様は Azure デプロイで完全なスケール テストを実行することが推奨されます。

ダウンタイム

計画メンテナンス時間中にファイアウォールを移行します。これは、停止または開始を使用して Azure Firewall を Standard から Premium に移行するときに、ダウンタイムが発生するためです。

クラシックルールを標準ポリシーに移行する

移行プロセス中に、従来のファイアウォール規則を標準ポリシーに移行することが必要になる場合があります。 これを行うには、Azure portal を使用します。

  1. Azure portal で、お使いの標準ファイアウォールを選択します。 [概要] ページで、 [Migrate to firewall policy](ファイアウォール ポリシーへの移行) を選択します。

    ファイアウォール ポリシーへの移行を示すスクリーンショット。

  2. [Migrate to firewall policy](ファイアウォール ポリシーへの移行) ページで、 [Review + create](確認と作成) を選択します。

  3. [作成] を選択します

    デプロイが完了するまでに数分かかる場合があります。

また、Azure PowerShell を使用して Azure Firewall から既存のクラシックルールを移行して、ポリシーを作成することもできます。 詳細については、「 PowerShell を使用して Azure Firewall 構成を Azure Firewall ポリシーに移行する」を参照してください。

Azure PowerShell を使用して既存のポリシーを移行する

Transform-Policy.ps1 は、既存の Standard ポリシーから新しい Premium ポリシーを作成する Azure PowerShell スクリプトです。

標準ファイアウォール ポリシー ID が指定されている場合、このスクリプトで、それを Premium Azure Firewall ポリシーに変換します。 このスクリプトは、まず Azure アカウントに接続し、ポリシーをプルし、さまざまなパラメーターを変換および追加してから、新しい Premium ポリシーをアップロードします。 新しい Premium ポリシーは <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 Firewall を移行する

Azure Firewall Standard SKU をファイアウォール ポリシーと共に使用する場合は、割り当て/割り当て解除方法を使用して、ファイアウォール SKU を Premium に移行できます。 この移行アプローチは、VNet ハブとセキュリティで保護されたハブファイアウォールの両方でサポートされています。 セキュリティで保護されたハブの展開を移行すると、ファイアウォールのパブリック IP アドレスが保持されます。

Azure PowerShell バージョンの最小要件は6.5.0 です。 詳細については、「 Az 6.5.0」を参照してください。

VNET ハブファイアウォールを移行する

  • 標準のファイアウォールの割り当てを解除する

    $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
    

Premium ポリシーをプレミアム ファイアウォールにアタッチする

Azure portal を使用して、Premium ポリシーを新しいプレミアム ファイアウォールにアタッチできます。

ファイアウォール ポリシーを示すスクリーンショット

次のステップ