NSG Augmented Rulesを理解するための前提
augmented security ruleは複数のindividual IP、CIDR range、port/rangeを1 ruleで表現できる。 目的はrule数を減らすことではなく、同一business intentを1つのreviewable policy unitへまとめること。
広すぎるaddress/port集合を1 ruleへ詰めるとleast privilegeが見えにくくなるため、同一owner・expiry・purposeでまとめる。 service tagやASGには組み合わせ上の制約があるため、explicit IPのように無制限に混在できると仮定しない。
priorityとfirst-matchは通常NSG ruleと同じ。1 rule内の複数値に順序優先度はない。 変更時は追加/削除されたmember値を差分でreviewし、rule全体のAllow/Denyだけを見ない。
Control plane と data plane
仕組み
source/destination/port/protocolをbusiness intent単位で集合化する。
priority順にruleへ到達し、各fieldの集合条件を5-tupleと照合する。
matchしたらAllow/Denyで評価終了。どの配列要素がmatchしたかを運用上追えるよう変更記録を残す。
ASG/service tagを使う場合はcurrent limits/組合せ制約をMicrosoft Learnで再確認する。
Packet / decision path
障害時はresource一覧ではなく、同じsource/destination/port/protocolで各enforcement pointを順に追います。
- 変更対象5-tupleを具体化する。
- 同一purpose/owner/expiryのaddress・portだけをgroupingする。
- 既存higher-priority ruleとのshadow/overlapを確認する。
- effective rule/NSG diagnosticsで代表flowを試験する。
- 不要member削除時は既存flowと新規flowを分けて確認する。
設計判断
| 判断点 | 推奨 | 理由 |
|---|---|---|
| Grouping | 同一変更理由・owner・expiryだけをまとめる。 | 巨大なAllow ruleが恒久化するのを防ぐ。 |
| Ports | 連続rangeと個別portを必要最小限で表現する。 | 「運用を楽にするためAny」はsecurity debtになる。 |
| Addresses | IPAM/IaCのsource of truthから生成する。 | 手入力配列のdriftを抑える。 |
| Review | rule単位ではなくmember diffをレビューする。 | 1行のruleでも実際の許可範囲は多数になり得る。 |
確認手順
Azure Portal / Network Watcher
- NSG rule edit画面でSource/Destination/Serviceが意図した集合になっているか確認。
- Effective security rulesで展開結果を確認。
- NSG diagnosticsで集合内/集合外の両方をnegative/positive testする。
Verification discipline
- subscription / resource group / resource ID / NIC / direction / 5-tupleを記録する。
- 同じ条件でbefore/afterを比較し、既存sessionとnew connectionを区別する。
- configuration、effective state、logs、application resultを別々の証拠として残す。
- 変更成功はcontrol-plane Succeededではなくobservable data-plane behaviorで判定する。
az network nsg rule show -g <rg> --nsg-name <nsg> -n <rule> -o jsonc
az network nsg rule list -g <rg> --nsg-name <nsg> -o jsoncGet-AzNetworkSecurityGroup -ResourceGroupName <rg> -Name <nsg> | Select-Object -ExpandProperty SecurityRules
障害切り分け
| 症状 | 疑う点 | 証拠 | 次の確認 |
|---|---|---|---|
| 一部宛先だけ想定外Allow | address/port配列へ不要member | rule JSONとchange diff | 不要memberを除去しnegative test |
| rule数は減ったがreview不能 | 異なるpurposeを1 ruleへ統合 | owner/expiry/ticket mapping | intent単位へ分割 |
| ASG/service tagを追加できない | field組合せ/limit制約 | Portal/API errorとcurrent docs | ruleを分離して表現 |
| rule変更後も既存session継続 | stateful flow | new connection test | flow stateとrule configを分離 |
変更時の確認と rollback
- 配列全体を変更前JSONで保存する。
- rollbackはrule全削除ではなくmember-level差分を正確に戻し、集合外negative testも実施する。
What changed recently
NSG flow logsは新規作成できず、2027-09-30にretire予定です。新しい可視化設計はVNet flow logsを前提にし、既存NSG flow logsは移行計画を持たせます。