Firewall Rule Review Checklistを理解するための前提
Firewall PolicyはRule Collection Group→Rule Collection→Ruleの階層でpriority/processingされる。 Azure FirewallではDNAT、Network、Applicationのrule type processing orderがあり、priority数値だけではtype順を変えられない。
NSGはpriorityの小さいruleから評価しstateful flowとして動作する。 reviewではsource/destinationをCIDR/FQDN/service tag/ASGのどの表現で持つかを要件に合わせる。
temporary allowはexpiry/owner/rollback triggerを必須にし、永続化を防ぐ。 ruleだけでなくUDR/NAT/DNS/TLS/WAF等のadjacent controlを確認し、別layerの問題をallow ruleで隠さない。
Control plane と data plane
仕組みと設計上の意味
request ticketの「通信できるように」だけでruleを作らず、source/destination/protocol/port/方向/目的/期限を固定する。
FQDN application ruleとnetwork ruleはmatching layerが異なるため、DNS/TLS/SNI requirementを確認する。
DNATはtranslated destinationとbackend route/securityをreviewする。
deny removalでは既存denyの目的/ownerを確認し、shadowed ruleを含むpolicy全体を評価する。
Packet / decision path
source→destinationを1本のflowとして固定し、名前解決・routing・security・NAT/service processing・return pathを必要な範囲で順に確認する。
- requested 5-tuple/business purpose確認。
- current route/NAT/DNSを確認。
- existing rule overlap/shadow/precedence確認。
- least-privilege rule案とexpiry/owner設定。
- expected allow/deny test + logsでvalidation。
設計判断
| 判断点 | 推奨 | 理由 |
|---|---|---|
| Source | 最小CIDR/ASG/identity-adjacent object | broad anyを避ける |
| Destination | service/resource単位に限定 | blast radius縮小 |
| Service | 必要protocol/portのみ | any serviceを避ける |
| Lifecycle | owner + expiry + rollback | temporary ruleを残さない |
確認手順
Azure Portal
- Firewall Policy/NSGで既存rule/priorityを検索。
- rule hit logs/effective NSGでcurrent decisionを確認。
- change後expected allowと隣接denyを検証。
Evidence contract
az network firewall policy show -g <rg> -n <policy> -o jsonc
az network nsg rule list -g <rg> --nsg-name <nsg> -o table
az network watcher test-ip-flow -g <rg> --vm <vm> --direction Outbound --protocol TCP --local <src:port> --remote <dst:port>Get-AzFirewallPolicy -ResourceGroupName <rg> -Name <policy>
Get-AzNetworkSecurityGroup -ResourceGroupName <rg> -Name <nsg>
障害切り分け
| 症状 | 疑う点 | 証拠 | 次の確認 |
|---|---|---|---|
| 追加ruleがhitしない | higher precedence/type order | logs + policy hierarchy | priority/type確認 |
| 広すぎるallow | source/dest/service未限定 | rule diff | least privilege化 |
| rule追加で別通信影響 | shared object/priority overlap | adjacent test | scope/priority修正 |
| rollbackしてもsession残る | stateful existing flow | new connection test | state expirationを考慮 |
変更・rollback
- before policy/rule exportを保存。
- temporary ruleはexpiry ticket/automationを付ける。
- rollbackはrule削除だけでなくpriority/associated policy変更も戻す。
- post-change evidenceにallow/deny両方のtest resultを残す。