Skip to content

MS_AzureFirewall

nishi_74322014 edited this page Aug 19, 2026 · 1 revision

Azure Firewall

概要

  • 所謂一つのプロキシ・サーバー
    • ステートフルインスペクション型のファイアウォール
    • WAF は Azure Application Gateway が該当する。
  • VNET の中に作成し、
    • 主にアウトバウンドをコントロールする。
    • ただし、インバウンドもコントロールする。

補足(位置づけ): Azure Firewall は「フルマネージドのステートフル FW」であり、
NSG とはレイヤも粒度も異なる。使い分けの目安は次のとおり。

NSG Azure Firewall
単位 サブネット / NIC VNET(通常は Hub に 1 台)
判定 5 タプル(IP / ポート / プロトコル) 5 タプル + FQDN + 脅威インテリジェンス
ログ フローログ(別途 NW ウォッチャ) 診断設定で標準的に取得可能
費用 無料 時間課金 + 処理データ量課金

NSG は「速いが粗い」、Azure Firewall は「細かいが高い」。
両方を重ねて使うのが標準構成である(NSG で大枠、FW で FQDN 制御)。

機能

ロギング

ログが確認できる。

補足(最新化): 現在は 診断設定(Diagnostic settings) から
Log Analytics / ストレージ / Event Hubs へ送出する。
従来の AzureFirewallApplicationRule / AzureFirewallNetworkRule などの
カテゴリに加え、現在は**構造化ログ(Resource Specific テーブル)**が推奨されている。

ルール・コレクション

アプリケーション

  • アウトバウンド専門
  • HTTP、HTTPS、または MSSQL などのプロトコルに構成
  • ネットワーク ルールよりもに適用される。

ネットワーク

  • アウトバウンド&インバウンド
  • TCP、UDP、ICMP、または 任意 の IP プロトコルに構成
  • アプリケーション ルールよりもに適用される。

NAT

  • インバウンド専門
  • NAT変換に対応するネットワーク ルールが自動的に追加される。
  • ネットワーク ルールよりもに適用される。
  • 通常は、この機能は使用せず、WAFを使用する。

補足(評価順序): 原文のとおり、評価順序は
DNAT → ネットワーク → アプリケーション である。
つまり「ネットワーク ルールで許可されていれば、アプリケーション ルールは評価されない」ため、
FQDN で絞りたいのに、ネットワーク ルールで広く開けてしまうと FQDN 制御が効かない
という事故が起きやすい。FQDN 制御を目的とする場合は、
ネットワーク ルールを最小限に留めるのが鉄則。

フィルタリング

に関しては、FQDN でフィルタリングできる。

  • に関しては、(FQDN では)フィルタリングできない。
  • サービス・タグで HTTP 以外のプロトコルのフィルタも可能。

補足(最新化): 現在は ネットワーク ルールでも FQDN が使える(DNS プロキシの有効化が前提)。
原文執筆時点の「TCP/UDP は FQDN 不可」という制約は緩和されている。
ただし、DNS プロキシを有効にすると Azure Firewall が名前解決の経路に入るため、
可用性の考慮が必要になる点は変わらない。

タグ(FQDN タグやサービス・タグ)

タグという機能が今日枯れていて便利。

  • FQDN タグやサービス・タグ

    • FQDN タグ
      Azure サービスに関連付けられた
      完全修飾ドメイン名(FQDN)のグループを表す。

    • サービス・タグ

      • Azure サービスに関連付けられた
        IP アドレス・プレフィックスのグループを表す。
      • サービス・タグは、NSG でも利用される。
  • IP アドレスや FQDN のリストを更新する必要がない。

  • SQL Database や KeyVault、ストレージ等
    マルチテナント型 PaaS サービスの場合には、
    FQDN タグを使ったアプリケーション・ルール設定を行う

移行メモ(正誤): FQDN タグはアプリケーション ルール専用
サービス・タグはネットワーク ルール専用であり、両者は互換ではない。
また、FQDN タグは WindowsUpdate / WindowsDiagnostics / MicrosoftActiveProtectionService など
Microsoft が定義した固定の少数のみで、任意の PaaS 用に増やせるものではない。
「SQL Database や KeyVault、ストレージ」を FQDN で許可する場合は、
FQDN タグではなく個別の FQDN 指定*.database.windows.net など)になる。

脅威インテリジェンス

  • 脅威インテリジェンス・ベースのフィルタ処理
  • 主に、IP アドレスや FQDN の問題を検知する。
  • HTTP だけでなく、TCP / UDP も対象である模様。

パケット・フォワーダ

Spoke 間通信や Hub 拡張で役立つ。

詳細

問題

比較的高価

最小構成

  • 10万/月
  • 2円/GB

補足(最新化): 現在は SKU が Basic / Standard / Premium の 3 種類ある。
原文の金額は Standard 相当の目安であり、実際の課金は
デプロイ時間課金 + 処理データ量課金の 2 本立て。
小規模用途では Basic、IDPS や TLS インスペクションが要る場合は Premium を選ぶ。
最新の金額は必ず料金計算ツールで確認すること。

UDR が必要

  • デフォルト・ルートを Azure Firewall にする。
  • すべてのアウトバウンドがプロキシを経由するようになる。

ユーザ・テナント単位の制限

FQDN で頑張るしか無い。

  • 「*」で開けると情報流出経路になる可能性がある。

  • 「*」が明確に解らない部分は、手間になる。

    • 必要な時点でのみ、一時的に穴をあける。
    • ログで「*」の部分の Guid を確認して絞るなど。
  • この場合、Azure Private Endpoint の方が楽なケースも。

補足(なぜ「ユーザ・テナント単位」で絞れないのか): マルチテナント型 PaaS は
テナントが違っても FQDN やエンドポイントが共通(例: *.blob.core.windows.net)である。
つまり FW から見ると「自社のストレージ」と「他社のストレージ」が区別できない。
これが情報持ち出し(exfiltration)経路になるという指摘であり、
だからこそ「そのリソース専用の私設 IP を持つ」
Private Endpoint が本質的な解になる。

SNAT / DNAT

  • アウトバウンド&インバウンドに対応しているので、SNAT / DNAT に対応している。
  • ルール・コレクションの NAT は、インバウンドなので DNAT に該当する。

セキュア化とロックダウン

作業内容の安全性の確認

  • 入力制御(インバウンド)

    • 経路開放
      • Hub にのみ Azure Firewall を作って集中管理する。
        ※ ゼロトラスト型で構成する場合には Spoke 側に立てても良い。
      • 通常、NAT ルールを作らない。
  • 攻撃検知

    • 脅威インテリジェンス機能を有効化する。
    • 診断設定を有効化する。
  • ハードニング(クライアント or サーバ)

  • 出力制御(アウトバウンド)

    • 経路制限
      • 適切に設計・定義されたルールのみが定義されている
        ・アウトバウンドのネットワーク・アプリケーション・ルール
        ・パケット・フォワーダとして動作させる場合のルール
      • タグ(FQDN タグやサービス・タグ)を積極的に利用する。

変更・保守、作業の一覧化

高権限である「Network Contributor」ロールが必要になるので要注意。

補足(最新化): 複数の Firewall を運用する場合は Azure Firewall Manager
ファイアウォール ポリシーでルールを一元管理できる。
ポリシーは階層化(親ポリシーの継承)が可能なので、
「全社共通の禁止ルール」と「システム個別の許可ルール」を分離でき、
Network Contributor を配りすぎる問題の緩和にもなる。

参考

Microsoft Learn


Tags: 移行, インフラストラクチャ, クラウド, セキュリティ, 通信技術, Azure

NetDevInfraWiki

マイクロソフト系技術情報 Wiki
Open 棟梁 Wiki

(未着手)

開発基盤部会 Wiki

移行管理: DONETODO

Clone this wiki locally