この記事では、Standard と Premium の間で Azure Firewall SKU を変更する方法について説明します。 Standard から Premium にアップグレードして強化されたセキュリティ機能を利用したり、これらの機能が不要になった場合に Premium から Standard にダウングレードしたりできます。 Azure Firewall Premium には、IDPS、TLS 検査、URL フィルタリングなどの高度な脅威保護機能が用意されています。
ファイアウォール SKU は、次の 2 つの方法のいずれかを使用して変更できます。
- 簡単な SKU 変更方法 (推奨): Azure portal、PowerShell、または Terraform を使用したダウンタイムなしのアップグレードまたはダウングレード
- 手動移行方法: 複雑なシナリオや簡単な SKU 変更が利用できない場合の段階的な移行
Azure Firewall Premium の機能の詳細については、 Azure Firewall Premium の機能に関するページを参照してください。
[前提条件]
開始する前に、以下の項目があることを確認します:
- 既存の Azure Firewall デプロイを含む Azure サブスクリプション
- ファイアウォール リソースを変更するための適切なアクセス許可 (ネットワーク共同作成者ロール以上)
- Azure PowerShell モジュール バージョン 6.5.0 以降 (PowerShell メソッドの場合)
- 計画メンテナンス期間 (手動移行方法の場合)
Important
この記事は、Azure Firewall Standard SKU と Premium SKU にのみ適用されます。 Azure Firewall Basic SKU は SKU の変更をサポートしていないため、Premium にアップグレードする前に最初に Standard SKU に移行する必要があります。 スケジュールされたメンテナンス期間中は常に SKU 変更操作を実行し、最初に非運用環境でプロセスを徹底的にテストします。
簡単な SKU 変更方法 (推奨)
ダウンタイムをゼロにして Azure Firewall SKU を変更する最も簡単な方法は、 SKU の変更 機能を使用することです。 この方法では、Standard から Premium へのアップグレードと Premium から Standard へのダウングレードの両方がサポートされます。
簡単な SKU 変更を使用するタイミング
次の場合は、簡単な SKU 変更方法を使用します。
- (クラシック ルールではなく) ファイアウォール ポリシーを持つ Azure Firewall がある
- ファイアウォールがサポートされているリージョンにデプロイされている
- ダウンタイムを最小限に抑える (この方法でダウンタイムをゼロにする)
- 複雑なカスタム構成を使用しない標準デプロイがある
- ダウングレードの場合: Premium ポリシーでは、Standard と互換性のない Premium 専用機能が使用されません
SKU の変更に関するポリシーに関する考慮事項
Premium にアップグレードする
アップグレード プロセス中に、ファイアウォール ポリシーの処理方法を選択します。
- 既存の Premium ポリシー: アップグレードされたファイアウォールにアタッチする既存の Premium ポリシーを選択する
- 既存の標準ポリシー: 現在の標準ポリシーを使用します。 システムは自動的に複製し、Premium ポリシーにアップグレードします
- 新しい Premium ポリシーの作成: 現在の構成に基づいて、システムで新しい Premium ポリシーを作成できるようにします
Standard にダウングレードする
Premium から Standard にダウングレードする場合は、次のポリシー要件を考慮してください。
Important
Standard SKU にダウングレードする前に、Premium 排他機能を削除または無効にする必要があります。
ダウングレード前に対処する Premium 機能:
- TLS 検査: TLS 検査規則を無効にして、関連付けられている証明書を削除する
- IDPS (侵入の検出と防止): IDPS モードを [アラート] モードと [拒否] から [アラートのみ] または [オフ] に変更します
- URL フィルター処理: URL フィルター規則を FQDN フィルター処理に置き換える (可能な場合)
- Web カテゴリ: Web カテゴリ ルールを特定の FQDN ルールで削除または置換する
ポリシー処理オプション:
- 既存の Standard ポリシーを使用する: Premium 機能を含まない既存の Standard ポリシーを選択する
- 新しい Standard ポリシーの作成: システムは新しい Standard ポリシーを作成し、Premium 固有の機能を自動的に削除できます
- 現在のポリシーを変更する: ダウングレードする前に現在のポリシーから Premium 機能を手動で削除する
Azure portal を使用して SKU を変更する
Azure portal を使用してファイアウォール SKU を変更するには:
Premium にアップグレードする
- Azure portal にサインインします。
- Azure Firewall リソースに移動します。
- [ 概要 ] ページで、[ SKU の変更] を選択します。
- [SKU の変更] ダイアログ ボックスで、ターゲット SKU として [Premium ] を選択します。
- ポリシー オプションを選択します。
- 既存の Premium ポリシーを選択するか、
- システムが現在の Standard ポリシーを Premium にアップグレードすることを許可する
- [ 保存] を 選択してアップグレードを開始します。
Standard にダウングレードする
- Azure portal にサインインします。
- Azure Firewall Premium リソースに移動します。
- ダウングレード前: ファイアウォール ポリシーに Premium 排他機能 (TLS 検査、IDPS アラートおよび拒否モード、URL フィルタリング、Web カテゴリ) が含まれていないことを確認します。
- [ 概要 ] ページで、[ SKU の変更] を選択します。
- [SKU の変更] ダイアログ ボックスで、ターゲット SKU として [Standard ] を選択します。
- ポリシー オプションを選択します。
- 既存の標準ポリシーを選択するか、
- システムに新しい Standard ポリシーの作成を許可する (Premium 機能は自動的に削除されます)
- [保存] を選択してダウングレードを開始します。
SKU の変更プロセスは、通常、ダウンタイムが発生しない数分以内に完了します。
PowerShell と Terraform SKU の変更
SKU の変更は、次を使用して実行することもできます。
-
PowerShell:
sku_tier
プロパティを "Premium" または "Standard" に変更する -
Terraform: 構成の
sku_tier
属性を目的の SKU に更新する
制限事項
簡単な SKU の変更方法には、次の制限があります。
一般的な制限事項:
- Azure Firewall Basic SKU がサポートされていません - Basic SKU ユーザーは最初に Standard に移行する必要があります
- 特定の複雑な構成のファイアウォールでは使用できません
- 一部のリージョンでの可用性の制限
- 既存のファイアウォール ポリシーが必要 (クラシック ルールでは使用できません)
ダウングレード固有の制限事項:
- Premium 機能 (TLS 検査、IDPS アラートと拒否モード、URL フィルタリング、Web カテゴリ) は、ダウングレード前に削除する必要があります
- Premium ポリシーに互換性のない機能が含まれている場合は、ポリシーを変更するか、新しい Standard ポリシーを作成する必要があります
- 一部のルール構成では、ダウングレード後に手動で調整が必要になる場合があります
シナリオで簡単な SKU 変更方法を使用できない場合は、次のセクションで説明する手動の移行方法を使用します。
手動移行方法
簡単なアップグレード方法が使用できない場合、またはデプロイに適していない場合は、手動の移行方法を使用できます。 この方法では、より詳細な制御が提供されますが、ダウンタイムが必要です。
手動移行を使用する場合
手動移行は、次の場合に使用します。
- あなたのシナリオでは簡単にアップグレードできません
- 移行が必要なクラシック ファイアウォール規則がある
- 複雑なカスタム構成がある
- 移行プロセスを完全に制御する必要がある
- ファイアウォールは、可用性ゾーンを使用して東南アジアにデプロイされます
パフォーマンスに関する考慮事項
Standard SKU から移行する場合、パフォーマンスが考慮されます。 IDPS と TLS 検査は、コンピューティング集中型の操作です。 Premium SKU では、より強力な VM SKU が使用され、Standard SKU と同等のスループットにスケーリングされます。 Azure Firewall のパフォーマンスの詳細については、「 Azure Firewall のパフォーマンス」を参照してください。
Microsoft では、お客様が Azure デプロイで本格的なテストを実行して、ファイアウォール サービスのパフォーマンスが期待を満たしていることを確認することをお勧めします。
ダウンタイムに関する考慮事項
停止/開始プロセス中にいくつかのダウンタイム (通常は 20 ~ 30 分) があるため、手動移行方法を使用する場合はメンテナンス期間を計画します。
移行手順の概要
手動移行を成功させるには、次の一般的な手順が必要です。
- 既存の Standard ポリシーまたはクラシック ルールに基づいて新しい Premium ポリシーを作成する
- 停止/開始を使用して Azure Firewall を Standard から Premium に移行する
- Premium ファイアウォールに Premium ポリシーをアタッチ する
手順 1: クラシック ルールを Standard ポリシーに移行する
クラシック ファイアウォール規則がある場合は、最初に Azure portal を使用して Standard ポリシーに移行します。
- Azure portal から、標準のファイアウォールを選択します。
- [ 概要 ] ページで、[ ファイアウォール ポリシーへの移行] を選択します。
- [ ファイアウォール ポリシーへの移行 ] ページで、[ 確認と作成] を選択します。
- を選択してを作成します。
デプロイが完了するまでに数分かかる場合があります。
Azure PowerShell を使用して既存のクラシック ルールを移行することもできます。 詳細については、「 PowerShell を使用して Azure Firewall 構成を Azure Firewall ポリシーに移行する」を参照してください。
手順 2: PowerShell を使用して Premium ポリシーを作成する
既存の Standard ポリシーから新しい Premium ポリシーを作成するには、次の PowerShell スクリプトを使用します。
Important
このスクリプトでは、脅威インテリジェンスと SNAT プライベート範囲の設定は移行されません。 続行して手動で移行する前に、これらの設定を書き留める必要があります。
<#
.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
$ruleToTransform = Get-AzFirewallPolicyRuleCollectionGroup -AzureFirewallPolicy $Policy -Name $ruleResource.Name
$ruleCollectionGroup = @{
FirewallPolicyObject = $premiumPolicy
Priority = $ruleToTransform.Properties.Priority
Name = $ruleToTransform.Name
}
if ($ruleToTransform.Properties.RuleCollection.Count) {
$ruleCollectionGroup["RuleCollection"] = $ruleToTransform.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
使用例:
Transform-Policy -PolicyId /subscriptions/XXXXX-XXXXXX-XXXXX/resourceGroups/some-resource-group/providers/Microsoft.Network/firewallPolicies/policy-name
手順 3: 停止/開始を使用して Azure Firewall を移行する
ファイアウォール ポリシーで Azure Firewall Standard SKU を使用する場合は、割り当て/割り当て解除方法を使用して、ファイアウォール SKU を Premium に移行できます。 この移行方法は、仮想ネットワーク ハブと Secure Hub ファイアウォールの両方でサポートされています。
注
Azure PowerShell の最小バージョン要件は 6.5.0 です。 詳細については、 Az 6.5.0 を参照してください。
仮想ネットワーク ハブ ファイアウォールを移行する
Standard ファイアウォールの割り当てを解除します。
$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
強制トンネル モードでファイアウォール 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
Secure Hub ファイアウォールを移行する
Standard ファイアウォールの割り当てを解除します。
$azfw = Get-AzFirewall -Name "<firewall-name>" -ResourceGroupName "<resource-group-name>"
$azfw.Deallocate()
Set-AzFirewall -AzureFirewall $azfw
Firewall Premium の割り当て:
$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
手順 4: Premium ポリシーをアタッチする
ファイアウォールを Premium にアップグレードした後、Azure portal を使用して Premium ポリシーをアタッチします。
- Azure portal で Premium ファイアウォールに移動します。
- [ 概要 ] ページで、[ ファイアウォール ポリシー] を選択します。
- 新しく作成した Premium ポリシーを選択します。
- 保存 を選択します。
Terraform の移行
Terraform を使用して Azure Firewall をデプロイする場合は、Terraform を使用して Azure Firewall Premium に移行できます。 詳細については、「 Terraform を使用して Azure Firewall Standard を Premium に移行する」を参照してください。
SKU の変更に関する問題のトラブルシューティング
一般的な問題と解決策
- 簡単な SKU の変更は使用できません:この記事で説明されている手動の移行方法を使用してください
- ポリシー移行エラー: 正しい PowerShell モジュールのバージョンがインストールされていることを確認する
- ダウンタイムが予想よりも長い: ネットワーク接続とリソースの可用性を確認する
- アップグレード後のパフォーマンスの問題: パフォーマンスに関する考慮事項を確認し、徹底的なテストを実施する
- Premium 機能によってブロックされるダウングレード: ダウングレードを試みる前に、Premium 専用機能を削除または無効にする
ダウングレード関連の問題解決
Premium から Standard にダウングレードできない場合:
Premium 機能を確認する: ファイアウォール ポリシーに次のものが含まれていないことを確認します。
- TLS 検査規則
- アラートモードおよび拒否モードのIDPS
- URL フィルター規則
- Web カテゴリ ルール
ポリシー変更オプション:
- Premium 機能を使用せずに新しい Standard ポリシーを作成する
- 既存のポリシーを変更して Premium 機能を削除する
- Azure PowerShell を使用して互換性のない規則を特定して削除する
検証手順:
# Check current firewall policy for Premium features $policy = Get-AzFirewallPolicy -ResourceGroupName "myResourceGroup" -Name "myPolicy" # Review policy settings for Premium features $policy.ThreatIntelMode $policy.IntrusionDetection $policy.TransportSecurity
既知の制限事項
- Availability Zones を使用して東南アジアにデプロイされた Standard ファイアウォールのアップグレードは、現在、手動移行ではサポートされていません
- 簡単な SKU の変更で Basic SKU ファイアウォールがサポートされない - Basic SKU を持つユーザーは、Premium にアップグレードする前に、まず Standard SKU に移行する必要があります
- 一部のカスタム構成では、手動移行アプローチが必要になる場合があります
- アクティブな Premium 機能を使用したダウングレードは、それらの機能が削除されるまで失敗します