Azure Bastionの課金を完全に止める方法|AzureBastionSubnet削除だけでは不十分な理由とPublic IP対策

Azure Bastionを一度試しただけなのに、翌月以降も課金が続いて焦るケースはよくあります。ポイントは、課金対象が「AzureBastionSubnet」ではなくBastion本体と関連リソースにあること。本記事では最短で課金を止める削除手順と確認方法をまとめます。

目次

AzureBastionSubnetを削除しても課金が止まらない理由

最初に押さえておきたいのは、Azure Bastionの「停止」はVMの停止のように電源OFFして料金が止まる仕組みではない、という点です。Azure BastionはPaaS(マネージドサービス)として提供されており、Bastionホスト(bastionHostリソース)が存在している間は、基本的に時間課金が継続します。

一方、AzureBastionSubnet はBastionを配置するための専用サブネットです。サブネット自体は通常、単体で料金が発生しません(例外はありますが、少なくとも「Bastionの時間課金」の本体ではありません)。つまりサブネットだけを削除しても、Bastion本体やPublic IPが残っていれば請求は続く、という構図になります。

やりがちな操作起きること正しい対処
AzureBastionSubnet を削除Bastion本体が残っていると課金が止まらない/削除できても「消したつもり」になりやすいBastionホストとPublic IPをリソース単位で削除
ポータルで「削除」を押したが通知を見ていない削除が失敗・保留でも気づかず、課金が継続通知とアクティビティログで「削除完了」を確認
別のリソースグループ/別のサブスクリプションにBastionが残っている画面上は見えないのに請求だけ発生コスト分析で「リソース」単位に絞り込み、所在を特定

Azure Bastionの課金ポイントをざっくり理解する

「何を消せば課金が止まるのか」を迷わないために、まず課金の代表パターンを整理します。実際の料金単価はリージョンやSKU(Basic/Standardなど)で変わりますが、課金が発生する“種類”は押さえておくと事故が減ります。

課金対象どういうとき発生するか止める方法見落としポイント
Bastionホスト(Microsoft.Network/bastionHosts)作成して存在している間、基本的に時間課金Bastionリソースを削除「接続していないのに課金」が起きやすいのはここ
Bastion経由のデータ処理/通信量RDP/SSH接続でデータが流れた分だけ利用を止める or Bastion削除短時間でも大きめの転送(大量ログやファイルコピー)で増えることがある
Public IPアドレス(特にStandard SKU)Public IPが割り当てられて存在している間、課金されることがあるPublic IPリソースを削除Bastion削除後もPublic IPが残ると「原因が分かりづらい」
周辺リソース(VM、ディスク、NAT Gateway等)検証で一緒に作ったリソースが稼働している不要なら削除(停止ではなく削除が確実)「Bastionだと思ったらVMやディスクだった」は定番

まずやるべきは「どのリソースが請求の原因か」を特定する

削除の前に、Azureポータルのコスト分析で請求元を特定すると、最短で解決します。体感としては「Bastion本体」か「Public IPの消し忘れ」か「別リソースの課金」のどれかに収束することが多いです。

ポータル(コストの管理 + 請求)での確認手順

  1. Azureポータルで「コストの管理 + 請求」→「コスト分析」を開きます。
  2. 期間を「今月」や「過去7日」など、課金が発生している期間に合わせます。
  3. 表示を「リソース」または「リソースグループ」単位に切り替えます(「サービス」だけだと原因が絞れません)。
  4. サービス名に「Azure Bastion」や「Public IP Address」などが含まれていないか確認します。

さらに一歩踏み込むなら、同じ画面で「メーター(Meter)」や「課金項目(Charge type)」を見ておくと、時間課金なのか通信量なのかも切り分けやすくなります。

CLIで「残っているリソース」を洗い出すコマンド例

ポータル操作が不安な場合は、Azure Cloud Shell(ポータル右上の >_ アイコン)からCLIで確認するのが確実です。まずは対象のサブスクリプションに切り替えます。

az account show
az account set --subscription "<サブスクリプションIDまたは名前>"

Bastionホストが残っていないか確認します。

az network bastion list --resource-group "<リソースグループ名>" -o table

もしBastionホスト名が分からない場合は、リソースタイプで検索すると見つけやすいです。

az resource list \
  --resource-group "<リソースグループ名>" \
  --resource-type "Microsoft.Network/bastionHosts" \
  -o table

Public IPが残っていないかも併せて確認します(特に名前にbastionが入っているもの)。

az network public-ip list \
  --resource-group "<リソースグループ名>" \
  -o table

Azure Bastionを完全に止める削除手順(これだけ押さえればOK)

課金を止める目的なら、基本は「Bastion本体を削除」→「Public IPを削除」→「残骸をチェック」の順で進めると迷いません。検証環境なら、最後にリソースグループごと削除するのが最短・確実です。

Azureポータルで確実に削除する手順

  1. ポータル上部のサブスクリプション/ディレクトリの選択が正しいか確認します(別サブスクリプションを見ていると「無いのに課金」になりがちです)。
  2. 「すべてのリソース」を開き、検索欄に bast と入力してフィルタします。
  3. Bastionホスト(種類が「Bastion」または「Microsoft.Network/bastionHosts」)を開き、リソース上部の「削除」を実行します。
  4. 右上の通知(ベル)で削除が完了したことを確認し、念のため「アクティビティログ」でも「削除 succeeded」になっているか確認します。
  5. 次に「すべてのリソース」でPublic IPアドレスを探し、Bastion用と思われるものを削除します(Bastionのプロパティ画面にPublic IP名が表示されていることが多いです)。
  6. 最後にVNetのサブネット一覧から AzureBastionSubnet が不要なら削除します(課金そのものは止まりませんが、次回の混乱を防げます)。

Azure CLIでBastion本体を確実に削除する(推奨)

ポータルで削除したつもりでも不安が残る場合は、CLIで「削除コマンドが成功した」という事実を作るのが安心です。Cloud ShellならAzure CLIが最初から使えるので、ローカルPCにインストールする手間もありません。

az network bastion delete \
  --name "<Bastionのリソース名>" \
  --resource-group "<リソースグループ名>"

実行時に command is in preview and under development のようなメッセージが表示されることがあります。これは「コマンドグループがプレビュー扱いのバージョン」という意味で、削除処理そのものが必ず失敗するという意味ではありません。通知やコマンド結果を確認し、削除が完了しているかを次のコマンドで確認してください。

az network bastion list --resource-group "<リソースグループ名>"

ここで空のリスト(何も表示されない)になれば、Bastionホストは削除済みです。念のため、サブスクリプション全体で探すなら以下も有効です。

az network bastion list -o table

Public IPアドレスも削除する(消し漏れが一番多い)

Bastionホストを削除しても、Public IPがリソースとして残り続けることがあります。特にStandard SKUのPublic IPは、環境や課金体系によっては「存在しているだけ」で課金対象になり得るため、学生アカウントやクレジット制限がある場合は早めに消しておくと安心です。

az network public-ip delete \
  --resource-group "<リソースグループ名>" \
  --name "<Public IPのリソース名>"

Public IP名が分からない場合は、一覧から「それっぽいもの」を絞り込みます。Bastion作成時の命名規則によっては、名前に bastion が含まれていることが多いです。

az network public-ip list \
  --resource-group "<リソースグループ名>" \
  --query "[?contains(name, 'bastion')].{Name:name, Ip:ipAddress, Sku:sku.name}" \
  -o table

AzureBastionSubnetは「課金停止」より「片付け」の意味で削除

AzureBastionSubnet はそれ自体が主な課金源ではありません。ただ、検証環境で残しておくと「まだBastionがあるのでは?」と混乱しやすいので、今後使わないなら削除してしまうのがおすすめです。Bastionが削除されていない状態ではサブネット削除がブロックされることもあるため、先にBastion本体を削除してから作業します。

az network vnet subnet delete \
  --resource-group "<リソースグループ名>" \
  --vnet-name "<VNet名>" \
  --name "AzureBastionSubnet"

検証用なら「リソースグループごと削除」が最短で確実

「学生アカウントでクレジットが少ない」「とにかく今日中に請求の元を断ちたい」という場合、Bastionだけを丁寧に消すよりも、検証用に作ったリソースグループが他に影響しないならリソースグループを丸ごと削除するのが最も確実です。削除対象に本番系が混ざっていないかだけは注意してください。

az group delete \
  --name "<リソースグループ名>" \
  --yes

削除できたかの最終チェック(課金停止のチェックリスト)

「削除したはずなのに請求が続く」不安は、確認項目を固定するとほぼ解消します。以下のチェックリストを上から順に潰してください。

チェック項目確認場所OKの状態NGのときの次の一手
Bastionホストが残っていないaz network bastion list / ポータル「すべてのリソース」対象RG・全体ともに表示なしサブスクリプション切替、別RGを検索、権限不足を疑う
Public IPが残っていないaz network public-ip list / ポータル「Public IPアドレス」Bastion関連のIPが存在しない名前で検索、Bastionの削除前後でIPが孤立していないか確認
削除が失敗していないポータル通知 / アクティビティログDeleteが成功(Succeeded)失敗理由を確認し再実行(依存関係・ロック・権限)
コスト分析で「請求元リソース」が別物になっていないコスト分析(リソース別)Bastion/Public IPが新規に増えていないVM、ディスク、NAT、ログなど他の課金源を洗い出す

「削除したのに請求が続く」よくある原因と対処

ここから先は、実際にハマりやすいパターン別に対処をまとめます。焦って片っ端から削除するより、原因を一つずつ潰した方が安全です。

症状ありがちな原因対処
ポータルでBastionが見つからないのに、Bastion料金が出ている別サブスクリプション/別リソースグループに残っているコスト分析を「リソース」表示にし、課金リソース名から所在を特定して削除
Bastionは消したのに請求がゼロにならないPublic IP、VM、ディスクなど別リソースが課金している「Public IPアドレス」「仮想マシン」「ディスク」をコスト分析で確認し、不要なら削除
削除を押したのに、しばらくしても課金が残って見える請求・利用明細の反映にタイムラグがある「削除済み」かつ「新規の利用が増えていない」ことを確認し、数日単位で推移を見る
CLIで削除したらプレビュー警告が出て不安Azure CLIのコマンドグループ表記によるもの削除結果をlistで確認。必要なら az version を確認しCloud Shellで再実行
削除が失敗するリソースロック、権限不足、依存関係(サブネットが使用中など)ロック解除、権限(所有者/共同作成者)の確認、依存元(Public IP等)を先に解除

Azure CLIが使えない/エラーになるときの対処

学生アカウントや個人PCだと、そもそもAzure CLIが入っていない・PATHが通っていないケースがあります。代表的なつまずきポイントをまとめます。

「az が見つからない」エラー

PowerShellで az : The term 'az' is not recognized... のように表示される場合、Azure CLIが未導入か、環境変数が未設定です。急ぐ場合はCloud Shellを使うのが最短です。

  • Azureポータル右上の >_ をクリック
  • BashまたはPowerShellを選択
  • そのまま記事内のコマンドを実行

「リソースが見つからない」エラー

ResourceNotFound 系は、リソース名かリソースグループかサブスクリプションのいずれかが違うことが多いです。次の順で確認すると早いです。

  1. az account show でサブスクリプションが想定どおりか確認
  2. az network bastion list -o table で全体一覧を出して、名前をコピー
  3. それでも出ない場合は、コスト分析の「リソース名」を手がかりに探す

学生アカウント/検証環境でコスト事故を防ぐコツ

Azure Bastionは便利ですが、時間課金の性質上「使い終わったのに残っていた」で損をしやすいサービスです。検証で使うなら、環境づくりと片付けをセットで考えると安全です。

対策効果具体的なやり方
検証はリソースグループを分ける消し漏れが激減し、最悪RG削除で一掃できる「bastion-lab-rg」など用途が分かる名前にする
予算(Budget)とアラートを設定するクレジット枯渇前に気づけるコストの管理 + 請求 → 予算 → 小額(例:数百円相当)で通知
「停止」より「削除」を優先するPaaSやPublic IPは停止概念がなく、残すと課金しやすい使い終わったらその日のうちに削除する運用にする
片付け用のチェックを固定化する「消したつもり」を防ぐ本記事のチェックリストをテンプレとして使う

(参考)Bastion関連を探す“最後の手段”コマンド

名前や場所が分からず迷子になったときは、「bastion」を含むリソースを横断で検索すると見つかることがあります。

az resource list \
  --query "[?contains(to_string(name), 'bastion') || contains(to_string(type), 'bastion')].{Name:name, Type:type, Group:resourceGroup, Location:location}" \
  -o table

よくある質問

Azure Bastionは「無効化」や「停止」ではだめ?

VMの停止のような「止め方」は基本的にありません。課金を止めたいなら削除が確実です。設定を変えて利用しなくても、Bastionホストが存在している限り時間課金が発生し得ます。

AzureBastionSubnetを消すとBastionは自動的に消える?

消えません。むしろ依存関係が壊れて管理しづらくなることがあります。原則としてBastionホストを削除してからサブネットを片付ける順番が安全です。

削除したのにコスト分析に表示が残るのはなぜ?

利用明細やコスト分析はリアルタイムではなく、反映にタイムラグが出ることがあります。重要なのは「削除後に新たな利用分が増えていない」ことです。BastionとPublic IPが消えていて、日次コストが増えなくなっていれば、基本的に課金は止まっています。

まとめ:課金停止の最短ルートは「Bastion本体」と「Public IP」を消すこと

Azure Bastionの課金が止まらないときは、AzureBastionSubnet だけを見ても解決しません。Bastionホスト(bastionHosts)を削除し、Public IPの消し漏れがないか確認し、コスト分析で請求元リソースを特定する──この流れを押さえれば、学生アカウントでも無駄な出費をかなり防げます。検証環境なら、最終的にリソースグループ削除で一掃するのが最も確実です。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次