Azure Firewallの起動停止方法(停止で課金を止める)

Azure,Firewall,PowerShell/Azure CLI

Azure PowerShellを使ったAzure Firewallの起動停止方法の紹介です。

Azure Firewallはリソースを停止させることで課金を止めることができます。
Azure PortalではAzure Firewallを停止できませんが、Azure PowerShellを使うことで停止できます。

Azure PowerShellを使ったAzure Firewallの起動停止手順をまとめてみました。
Azure CLIとAzure PowerShellを使ったAzure Firewallの情報を取得するためのコマンド(コマンドレット)も紹介してます。

※記事記載時点では、Azure CLIを使ったAzure Firewallの停止はできないようです。

スポンサーリンク

Azure Firewallは停止すると課金も止まる

価格

Azure Firewall の価格

Azure Firewallは、デプロイされている時間に応じて課金が発生します。
Standardで$1.25/デプロイ時間(東日本リージョン)、Premiumの場合は$1.75/デプロイ時間の課金が発生します。
検証環境などで夜間使わない場合でもデプロイしておくだけで課金が発生します。

1時間未満は1時間に切り上げられる

1時間に満たない時間は、1時間分として課金されます。
短時間でデプロイを繰り返すとその分課金額も上がっていきます。
例えば1時間に3回デプロイすると3時間分の課金となります。

停止させると課金も止まる

Azure Firewallが停止状態(割り当て解除)の場合は課金が発生しません。

Azure Firewall の停止と起動の方法を教えてください

※パブリックIPの課金はAzure Firewallのリソース停止状況とは関連しません。パブリックIPのリソースが存在する限り課金は継続します。

Azure Firewallの起動停止はAzure PowerShellのみ

Azure Firewallの起動停止はAzure PowerShellのみで実施できます。
Azure Portalでは提供されていません。
Azure CLIを使ったAzure Firewallの停止もサポートされていません。

※記事記載(2023年9月末)時点の情報です

起動時にはパブリックIPの再割り当てが必要

Azure Firewallの停止時はパブリックIPの割り当てが解除されます。
起動時にはパブリックIPの再割り当てが必要になります。

※仮想ネットワークの割り当ても解除されます。

Azure CLIとAzure PowerShell使ってAzure Firewallのリストやリソース情報を取得

リストやリソース情報を取得

Azure Firewallのリストやリソース情報取得時に使うAzure CLI、Azure PowerShellです。

実施内容 Azure CLI Azure PowerShell
リソースのリストを取得 az network firewall list –output table

Get-AzFirewall | ft Name,Location,ResourceGroupName,ProvisioningState,ThreatIntelMode

リソースのリストを取得
(リソースグループ指定)
az network firewall list list –resource-group “リソースグループ名" –output table

Get-AzFirewall -ResourceGroupName “リソースグループ名"| ft Name,Location,ResourceGroupName,ProvisioningState,ThreatIntelMode

リソース情報を取得

サブスクリプション内すべて
az network firewall list

リソースグループ内すべて
az network firewall list list –resource-group “リソースグループ名"

個別のリソース
az network firewall show –resource-group “リソースグループ名" –name “ファイアウォール名"

サブスクリプション内すべて
Get-AzFirewall | fl

リソースグループ内すべて
Get-AzFirewall -ResourceGroupName “リソースグループ名" | fl

個別のリソース
Get-AzFirewall -ResourceGroupName “リソースグループ名" -name “ファイアウォール名" | fl

※Azure PowerShellの表示内容はAzure CLIの出力結果と同じとなるよう項目を指定しています。
※Azure CLIの–resource-groupは-g、–nameは-nと省略して表記できます。
※Azure CLIで詳細情報取得時も–output tableを付与する事でリソース名、ステータスを表形式で取得できます。

Azureテナントへのサインイン方法はこちらに纏めています。

リソースのリスト取得結果

Azure CLIとAzure PowerShellを使ってAzure Firewallのリソース一覧を取得した例です。

※詳細情報の取得は停止起動の方で実施しています。

Azure Firewallのリストを取得

Azure CLIを利用した場合

PS C:> az network firewall list –output table
Location Name ProvisioningState ResourceGroup ThreatIntelMode
———- ———- ——————- ————— —————–
eastus fw-test-01 Succeeded rg-fw-test-01 Alert

Azure PowerShellを利用した場合

PS C:> Get-AzFirewall | ft Name,Location,ResourceGroupName,ProvisioningState,ThreatIntelMode

Name Location ResourceGroupName ProvisioningState ThreatIntelMode
—- ——– —————– —————– —————
fw-test-01 eastus rg-fw-test-01 Succeeded Alert

※Azure PowerShellの場合の表示項目はAzure CLIの場合と同じとしています。

az network firewall初回実行時の注意点

Azure CLIのaz network firewallコマンド初回実行時には拡張機能のインストールが求められます。
Yを選択してインストールします。

PS C:> az network firewall list –output table
The command requires the extension azure-firewall.
Do you want to install it now? The command will continue to run after the extension is installed. (Y/n): Y

Azure PowerShellを使ってAzure Firewallを起動停止

Azure Firewallのリソース設定

検証で利用したAzure Firewallのリソースです。

区分 項目 設定値
ファイアウォール リソースグループ名 rg-fw-test-01
ファイアウォール名 fw-test-01
SKU Standard
仮想ネットワーク リソースグループ名 rg-fw-test-01
仮想ネットワーク名 vnet-fw-test-01
パブリックIP リソースグループ名 rg-fw-test-01
パブリックIP名 pip-fw-fw-test-01
パブリックIP名(管理パブリック IP)
pip-fwm-fw-test-01

Get-AzFirewallとSet-AzFirewallを使って停止、起動

Azure PowerShellを使ってAzure Firewallの停止と起動します。
FAQの中に起動停止の記載があります。

Azure Firewall に関する FAQ

Stop-AzFirewallやStart-AzFirewallと言ったコマンドレットは存在しません。
Get-AzFirewallとSet-AzFirewallを使ってパブリックIPアドレスや仮想ネットワークの割り当て解除(起動時は割り当て)します。

停止はすべての構成で同じですが、起動は構成により3パターンあります。

    • 強制トンネリング用に構成されていないファイアウォール
    • 強制トンネリング用に構成されているファイアウォール
    • セキュリティで保護された仮想ハブ アーキテクチャのファイアウォール

azfw.Allocateでの指定内容(割り当て方法)が異なります。

※今回はセキュリティで保護された仮想ハブ アーキテクチャのファイアウォールは実施していません。

Azure Firewallの停止から起動まで
 停止

PS C:> $azfwrgname = “rg-fw-test-01″ #リソースグループ名(ファイアウォール)
PS C:> $azfwname = “fw-test-01″ #ファイアウォール名
PS C:> $azfw = Get-AzFirewall -Name $azfwname -ResourceGroupName $azfwrgname
PS C:> $azfw.Deallocate()
PS C:> Set-AzFirewall -AzureFirewall $azfw

 起動

PS C:> $azfwrgname = “rg-fw-test-01″ #リソースグループ名(ファイアウォール)
PS C:> $azfwname = “fw-test-01″ #ファイアウォール名
PS C:> $vnetrgname = “rg-fw-test-01″ #リソースグループ名(仮想ネットワーク)
PS C:> $vnetname = “vnet-fw-test-01″ #仮想ネットワーク名
PS C:> $piprgname01 = “rg-fw-test-01″ #リソースグループ名(パブリックIP)
PS C:> $pipname01 = “pip-fw-fw-test-01″ #パブリックIP名
PS C:> $piprgname02 = “rg-fw-test-01″ #リソースグループ名(パブリックIP)
PS C:> $pipname02 = “pip-fwm-fw-test-01″ #パブリックIP名

PS C:> $azfw = Get-AzFirewall -Name $azfwname -ResourceGroupName $azfwrgname
PS C:> $vnet = Get-AzVirtualNetwork -Name $vnetname -ResourceGroupName $vnetrgname
PS C:> $publicip1=Get-AzPublicIpAddress-Name $pipname01-ResourceGroupName $piprgname01
PS C:> $publicip2=Get-AzPublicIpAddress-Name $pipname02-ResourceGroupName $piprgname02
PS C:> $azfw.Allocate($vnet,@($publicip1,$publicip2))

PS C:> Set-AzFirewall -AzureFirewall $azfw
起動(強制トンネリング構成)

PS C:> $azfwrgname = “rg-fw-test-01″ #リソースグループ名(ファイアウォール)
PS C:> $azfwname = “fw-test-01″ #ファイアウォール名
PS C:> $vnetrgname = “rg-fw-test-01″ #リソースグループ名(仮想ネットワーク)
PS C:> $vnetname = “vnet-fw-test-01″ #仮想ネットワーク名
PS C:> $piprgname01 = “rg-fw-test-01″ #リソースグループ名(パブリックIP)
PS C:> $pipname01 = “pip-fw-fw-test-01″ #パブリックIP名
PS C:> $piprgname02 = “rg-fw-test-01″ #リソースグループ名(パブリックIP)
PS C:> $pipname02 = “pip-fwm-fw-test-01″ #パブリックIP名(管理パブリック IP)

PS C:> $azfw = Get-AzFirewall -Name $azfwname -ResourceGroupName $azfwrgname
PS C:> $vnet = Get-AzVirtualNetwork -Name $vnetname -ResourceGroupName $vnetrgname
PS C:> $publicip1=Get-AzPublicIpAddress-Name $pipname01-ResourceGroupName $piprgname01
PS C:> $publicip2=Get-AzPublicIpAddress-Name $pipname02-ResourceGroupName $piprgname02
PS C:> $azfw.Allocate($vnet,$publicip1,$publicip2)

PS C:> Set-AzFirewall -AzureFirewall $azfw

起動停止時のリソース状態

起動停止時のリソース状態について確認します。
Azure Firewallのリソース状態はGet-AzFirewallで取得しています。

ProvisioningState(プロビジョニング状態)はありますが、起動停止状態を直接示す項目はありません。
IpConfigurationsTextの値の有無で起動停止状態を確認出来ます。

    • 停止状態
      • IpConfigurationsText:値が存在しない
      • ManagementIpConfigurationText:値が存在しない
    • 起動状態(強制トンネリング用に構成されていないファイアウォール)
      • IpConfigurationsText:値が存在する
      • ManagementIpConfigurationText:値が存在しない
    • 起動状態(強制トンネリング用に構成されていないファイアウォール)
      • IpConfigurationsText:値が存在する
      • ManagementIpConfigurationText:値が存在する

※リソースに対して課金が発生しているかどうかは停止後に確認した方が安全です。

Get-AzFirewall実行結果

停止状態

起動状態(強制トンネリング用に構成されていないファイアウォール)

起動状態(強制トンネリング用に構成されているファイアウォール)

Azure Portal上でステータスを確認

Azure Portal上でも起動停止状態を示す項目はありません。
パブリックIPアドレスや仮想ネットワークの表示状態で確認出来ます。

状態 コマンド実行内容
 停止状態
 起動状態
起動状態
(強制トンネリング構成)

※リソースに対して課金が発生しているかどうかは別途確認した方が安全です。

最後に

Azure Firewallのリストやリソース情報取得から起動停止方法を纏めてみました。
リソースの起動停止には数分程度かかる事もありますが停止する事で課金停止するのは大変メリットかと思います。
検証環境等でのコスト削減に活用する事も出来ます。

引き続き色々試してみたいと思います。

Azure Application Gateway(アプリケーションゲートウェイ)の起動停止方法についてはこちらで紹介しています。

スポンサーリンク