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 分のダウン タイムが予想されます。
移行を成功させるために必要な大まかな手順を次に示します。
- 既存の Standard ポリシーまたはクラシック ルールに基づいて新しい Premium ポリシーを作成します。 この手順の最後には、既存のルールとポリシー設定をすべて含んだ新しい Premium ポリシーが完成します。
- 停止/開始を使用して Azure Firewall を Standard から Premium に移行します。
- 新しく作成した 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 を使用します。
Azure portal で、お使いの標準ファイアウォールを選択します。 [概要] ページで、 [Migrate to firewall policy](ファイアウォール ポリシーへの移行) を選択します。
[Migrate to firewall policy](ファイアウォール ポリシーへの移行) ページで、 [Review + create](確認と作成) を選択します。
[作成] を選択します
デプロイが完了するまでに数分かかる場合があります。
また、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 ポリシーを新しいプレミアム ファイアウォールにアタッチできます。