IP Flow Verifyを理解するための前提
IP Flow VerifyはAzure VMに対する指定trafficがsecurity/admin rules上AllowedかDeniedかを判定し、該当ruleを返す。 評価入力はdirection、protocol、local IP/port、remote IP/port。曖昧な「443が通るか」ではなくpacket条件を固定する。
VM NICへ効くsubnet/NIC NSGに加え、current documentationではAzure Virtual Network Manager security admin rulesも評価対象。 Allowはroute、NVA/Azure Firewall、destination listen、TLS、applicationを証明しない。Deniedはsecurity policy層の強い証拠になる。
local/remoteの意味はdirectionで変わるため、Inbound/Outboundを取り違えると別packetを検査することになる。 NSGはstatefulだがIP Flow Verifyは指定packet条件に対するpolicy evaluation。既存sessionの状態そのものをpacket traceする機能ではない。
診断結果をどう読み分けるか
Inbound / Outbound。どちら側NICで何方向のpacketを評価するか。
protocol + local IP:port + remote IP:port。再現性の核。
Access Allow/Denyとrule名。security policyの判定証拠。
AllowedならNext Hop/Connection Troubleshoot、Deniedならeffective rule/desired policyへ。
障害が起きたときの調べ方
- 失敗flowのsource/destination IP、protocol、destination port、実source portまたはwildcard相当の条件を整理する。
- 対象VMのNIC/IP configurationをresource IDまで確認し、検査対象local IPがそのNICに存在することを確認する。
- Inbound/Outboundを決め、local/remote endpointを方向に合わせて設定してIP Flow Verifyを実行する。
- Deniedなら返されたruleをNSG/security admin configurationで確認し、priorityと意図されたpolicyを照合する。
- Allowedならsecurity rule仮説を一旦外し、Next Hop/effective route/Connection Troubleshootへ進む。
- 変更後は同一tupleのpositive testと、本来denyすべきnegative testを再実行する。
仕組みと読み方
IP Flow Verifyの強みは、subnet NSGとNIC NSGを人間が目視で重ね合わせる代わりに、指定packetに対して実効的なsecurity判定とruleを返すことです。Virtual Network Manager security admin rulesも関与する環境では、単一NSG画面だけを見て「allowされている」と判断する誤りを減らせます。
一方でroutingとsecurityを同時に判定するtoolではありません。Allowを得たあと通信できない場合、route/next hop、NVA/Azure Firewall、guest firewall、server listen、application proxy/WAFなどへ診断を進めます。
運用設計
| 判断軸 | 運用設計 |
|---|---|
| Test catalog | 重要flowを5-tuple/方向/expected Allow-Denyでcatalog化しchange validationへ再利用。 |
| Negative controls | 拒否すべきinternet/management flowもtestし、過剰allowを検出。 |
| Rule ownership | 返されたrule名からowner/change ticketへ追跡できる命名とtag運用。 |
| Scope boundary | VM NIC security policyのtoolであり、PaaS/Firewall/WAFの全policy検証へ拡大解釈しない。 |
確認手順 / read-only first
実行前に固定する情報
- subscription / resource group / resource ID / region
- source IP/NIC/subnet と destination FQDN/IP
- protocol / source port / destination port
- UTC time window + JST表示
- expected result と known-good comparison
Evidence to keep
- command/query textとraw JSON/CSV
- Portal screenshotだけでなくresource IDを含む機械可読結果
- 変更前/変更後の同一test vector
- negative test と adjacent critical path
- rollback実施時の復帰確認
az network watcher test-ip-flow \
--resource-group <rg> \
--vm <vm-name> \
--direction Outbound \
--protocol TCP \
--local <vm-ip>:50000 \
--remote <dest-ip>:443 -o jsoncTest-AzNetworkWatcherIPFlow -NetworkWatcher <watcher> -TargetVirtualMachineId <vm-id> -Direction Outbound -Protocol TCP -LocalIPAddress <vm-ip> -LocalPort 50000 -RemoteIPAddress <dest-ip> -RemotePort 443
この結果で何を証明できるか
| 観測結果 | 証明できること | それだけでは証明できないこと |
|---|---|---|
| Allow + rule X | 対象VM security/admin rulesでtupleが許可。 | route/Firewall/NVA/server/app success。 |
| Deny + rule X | rule Xが指定tupleを拒否。 | それ以外の別tuple/別NICも拒否されること。 |
| Allow after change | policy評価上はchangeが反映。 | 実flow回復。Connection Troubleshoot/実clientで確認。 |
| Unexpected rule match | priority/address/service tag条件が設計と不一致。 | root causeがそのrule変更だけか。route等も確認。 |
よくある切り分けの失敗
| 症状 / 状態 | 疑う層 | 次の証拠 |
|---|---|---|
| Allowなのにtimeout | routing/middlebox/listen | Next Hop→Connection Troubleshoot→packet capture。 |
| Deny ruleが想定外 | priority/ASG/admin rule | effective rulesとAVNM security admin rulesを確認。 |
| local IPを選べない | NIC/IP config取り違え | VM NICとprivate IP/resource IDを再確認。 |
| Inbound/Outboundで結果が違う | direction semantics | 実packetの送受方向に合わせて再試験。 |
| 変更後だけ一部flow失敗 | tuple差 | source IP/port/protocol/IPv4/IPv6差を分ける。 |
変更時の確認と rollback
- security rule変更前にold result/rule/priorityを保存する。
- temporary high-priority allowを使う場合は最小prefix/portに制限し即rollback条件を持つ。
- rollback後はintended deny/allowの両方を同じcatalogで再検証する。
Current notes — 2026-09-11
current IP Flow Verify documentationではNSGだけでなくAzure Virtual Network Manager admin rulesも評価対象として記載されています。したがって、AVNM利用環境でNSGだけを見てpolicyを判断しない手順に更新しています。
Related articles
Official sources
動作、support boundary、preview/GA、retirement、schemaはMicrosoft Learnのcurrent documentationを基準にしています。productionで使う際は対象subscription/region/resource provider/API/CLI versionの最新documentationを再確認してください。