Architecture & Governance参照資料確認: 2026-09-11

Virtual Network Manager Network Groups

Azure Virtual Network ManagerでVNetを静的・動的にgroup化し、connectivity / security / routing configurationの適用単位を安全に設計する。

Architecture contract

Network Groupを単なるフォルダーではなく、中央network policyの適用対象を決めるselectorとして扱う。membership条件の安定性、owner、exception、group join/leave時の影響を明示し、『groupに入った=通信可能』とは扱わない。

この記事の目次

Virtual Network Manager Network Groupsを理解するための前提

Network GroupはAVNM scope内のVNetを論理的に束ね、connectivity・security admin・routing configurationから参照するための適用単位になる。 membershipはstaticにVNetを追加する方法と、Azure Policy条件でdynamicに判定する方法がある。dynamic membershipは条件充足の変化に合わせてVNetが自動join/leaveする。

Network Groupへの所属自体はdata-plane connectivityを作らない。どのconfigurationがそのgroupを参照し、どのregionへdeployされたかまで確認して初めてeffective behaviorを説明できる。 dynamic membership条件にtagを使う場合、tag更新がnetwork changeになる。tagを『管理用ラベル』だけと考えず、policy selectorとしての変更管理を行う。

同じVNetが複数Network Groupに所属できる設計では、各configuration側で重複適用時の意味を明示し、group名だけから最終挙動を推測しない。 AVNMを削除しても、dynamic membership用に作成したAzure Policy assignmentが残る可能性がある。decommissionではPolicy側もinventoryしてcleanup対象に含める。

group taxonomyはregion / environment / trust / connectivity role等から、長期間安定する1〜2軸を選ぶ。workload名を無制限にgroup化してcentral modelを肥大化させない。

通信や判断の流れを追う
Platform policyShared servicesSpoke / Workload運用・変更

Ownership / Control / Data plane boundary

Selector boundary

Network Groupは『誰に適用するか』を決める。traffic policyそのものではない。

Metadata boundary

dynamic conditionが参照するtag / resource propertyは、実質的にnetwork policy inputとなる。

Configuration boundary

connectivity / security / routingはgroupを参照して別々に定義される。

Lifecycle boundary

VNet create / tag change / move / deleteに伴うjoin/leaveをchange eventとして監視する。

Architecture model

読み方group名から挙動を決めつけず、membership decisionとconfiguration referenceを分けて追う。dynamic groupではVNet側metadataの変更が中央configurationを触らずに実効policyを変える点が重要。

設計判断

判断軸推奨する問い設計時に固定するもの
Grouping axisregion・environment・trust・connectivity roleのどれがpolicy適用に本当に必要か。group taxonomy、命名、owner、利用するconfiguration。
Static vs dynamicmembershipの変更頻度と自動化メリットが、誤joinのリスクを上回るか。静的対象一覧またはPolicy condition、test fixture、exception path。
Metadata sourcedynamic conditionの入力は誰が変更できるか。tag/property owner、RBAC、change review、allowed values。
Exception一時的・恒久的な除外をgroup条件に埋め込むか別groupへ分離するか。exception owner、expiry、approval、verification。
Multi-group membership同一VNetが複数groupに入った場合に各configurationがどう合成されるか。allowed overlaps、forbidden overlaps、review query。
Decommissionmanager/group削除時に何が残るか。Azure Policy assignment、configuration、documentation cleanup list。

実装・展開の順序

  1. 対象VNet inventoryを固定する。 subscription / region / tags / address space / current topologyをread-onlyで取得する。
  2. 静的groupでsemanticを検証する。 group名、owner、どのconfigurationが参照するかを少数VNetでレビューする。
  3. dynamic条件をdry reviewする。 Azure Policy conditionが既存VNetをどう分類するかを一覧化し、unexpected join/leaveを0件にする。
  4. membershipとconfiguration deploymentを分離する。 同じchange windowで両方を大規模変更しない。
  5. canary membershipを反映する。 join後にactive configurationと実flowを確認し、想定外policyがないことを検証する。
  6. 継続監視する。 tag/property変更でmembershipが変わったらnetwork changeとして記録・通知できるようにする。

Platform team / Workload team の責任分界

領域Platform / central teamWorkload / application team
Group taxonomy全社で使うgroup軸、命名、用途を定義。自VNetが属すべきrole/environmentを申告。
Dynamic PolicyPolicy definition / assignment scope / condition / exceptionを管理。condition入力になるtag/propertyを規約に沿って維持。
Static membershipshared infrastructure等、固定対象をcentral teamが管理。静的参加が必要な例外を申請し、不要時に解除依頼。
Configuration bindingどのgroupをどのcentral configurationが参照するかを管理。必要なcommunication/security intentを提示し、実際のapplication testを担当。
Lifecyclemanager / policy / group decommissionのcleanupを管理。VNet move/delete時のdependencyを事前申告。

Verification / review evidence

設計レビューで残す証拠

  • groupごとの目的・owner・利用configuration一覧
  • static member resource IDまたはdynamic Azure Policy condition
  • dynamic conditionを既存VNetへ適用したexpected membership表
  • VNet join/leave前後のeffective configuration差分
  • 同一VNetのmulti-group membership一覧と意図
  • decommission時に残存Policy assignmentを確認するchecklist

runtimeで確認すること

  • canary VNetが期待groupだけへ参加すること
  • metadataを変更した場合、意図したjoin/leaveがeventual consistency後に反映されること
  • group参加後も、configuration未deployならdata-planeが変化しないこと
  • configuration deployment後にpositive/negative flowが期待通り変わること
  • groupから外したVNetに不要なcentral configurationが残っていないこと
  • decommission後にorphaned Azure Policy assignmentが残っていないこと
Azure CLI — network groups (read-only)
az network manager group list --network-manager-name <manager> --resource-group <rg> -o table
PowerShell — network groups (read-only)
Get-AzNetworkManagerGroup -NetworkManagerName <manager> -ResourceGroupName <rg>

Common failure modes

症状 / anti-pattern原因になりやすい設計確認・是正
意図しないVNetまでcentral policyが効くdynamic conditionが広すぎる、またはtag valueが自由入力。Policy conditionと実membershipを照合し、allowed tag valuesとRBACを制御。
groupへ追加したのに通信できないmembershipをconnectivityそのものと誤解。そのgroupを参照するconnectivity configurationとregional deploymentを確認。
tag修正だけで通信挙動が変わったtagがdynamic membership selectorであることがchange processに組み込まれていない。network-impacting metadataを定義し、tag changeへreviewを追加。
AVNM削除後もPolicyが残るdynamic membershipのAzure Policy assignmentをdecommission対象にしていない。Policy assignment inventoryを取得して不要なものを明示的にcleanup。
groupが乱立して誰も意味を説明できないworkload単位にcentral groupを増殖させた。policy intentに必要な安定軸へ集約し、group ownerとconsumer configurationを必須metadata化。

Change safety / rollback

一括変更を避ける: dynamic condition変更は旧conditionをsource controlに残し、membership差分を先に算出してから反映する。誤joinが発生した場合はconfigurationを闇雲に削除せず、membershipをknown-goodへ戻し、active configurationとdata planeが収束したことを確認する。

Current notes — 2026-09-11

Dynamic membership

Microsoft Learnは、Azure Policy条件の充足状態が変わるとVNetがNetwork Groupへ自動的にjoin/leaveし、追加のNetwork Manager操作は不要と説明している。したがってcondition入力になるtag/propertyはnetwork control inputとして扱う。

Official sources