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

Azure,Firewall,PowerShell/Azure CLI

Azure PowerShellを利用したAzure Firewallの起動および停止方法です。

Azure Firewallはリソースを停止することで課金を停止できますが、Azure Portalでは停止操作ができません。
そのため、Azure PowerShellを使用して操作する必要があります。

今回は、Azure PowerShellを使用したAzure Firewallの起動・停止手順を確認しています。
Azure Firewallの情報を取得するためのAzure PowerShellおよびAzure CLIのコマンドも一覧表形式で紹介しています。

※記事執筆時点では、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 Firewallのリストやリソース情報を取得に使うAzure CLIとAzure PowerShellのコマンド

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

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 CLIの場合と同じになるように、Azure PowerShellのコマンドを設定しています。

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 Firewallリソースの停止および起動

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(アプリケーションゲートウェイ)の起動停止方法については、こちらで紹介しています。

スポンサーリンク