Application Security Groups (ASG)を理解するための前提
ASGはNIC membershipをapplication roleとして扱い、NSG ruleのsource/destinationに参照できる。 IP addressの増減をruleへ逐次反映せず、Web/Logic/DBなどlogical tier単位でpolicyを再利用できる。
1 NICは複数ASGへ所属可能だが、subscription/ASGに関するcurrent limitsを確認する。 1 ASGへ所属するNICは同一VNetに存在する必要がある。異なるVNetのNICを同じASGに混在させない。
ASG source→ASG destinationのruleでは両側のNICが同一VNetの制約を満たす必要がある。 ASGはidentity/authorizationではなくnetwork grouping。application認証やRBACの代替にしない。
Control plane と data plane
仕組み
workload roleをASGとして定義する(例: AsgWeb / AsgLogic / AsgDb)。
NICを正しいASGへmembershipさせる。
NSG ruleでsource/destination ASGとservice portを組み合わせる。
packet到着時にAzureがNIC membershipに基づいてrule matchを評価する。
scale-out時は新NICのASG membershipが自動化されているかIaC/deployment pipelineで確認する。
Packet / decision path
障害時はresource一覧ではなく、同じsource/destination/port/protocolで各enforcement pointを順に追います。
- application tierと通信matrixを先に定義する。
- ASG membershipをVM名や手作業に依存させずIaCへ含める。
- Internet/PaaSはservice tag、workload roleはASGなどobjectの責務を分ける。
- same-VNet制約をmulti-VNet architectureへ無理に拡張しない。
- membership漏れをnegative testで検知する。
設計判断
| 判断点 | 推奨 | 理由 |
|---|---|---|
| Granularity | technical componentではなくsecurity policyが同じroleでgroupingする。 | 同一ASG内のmemberは同じrule scopeになる。 |
| Multi-VNet | ASGをglobal objectとして使わずVNetごとに設計する。 | membershipは同一VNet制約がある。 |
| Automation | NIC作成とASG membershipを同じdeployment unitにする。 | scale-out直後のunclassified NICを防ぐ。 |
| Naming | app-role-envなどpolicy意図が読める名前にする。 | rule review時にIPリスト展開なしで理解しやすい。 |
確認手順
Azure Portal / Network Watcher
- Application security groups → 対象ASG → NIC membershipを確認。
- VM/NIC → Application security groupsで期待roleに所属しているか確認。
- NSG ruleでASG referenceとpriorityを確認し、NSG diagnosticsで代表flowを試験。
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 asg show -g <rg> -n <asg> -o jsonc
az network nic show -g <rg> -n <nic> -o jsonc
az network nsg rule list -g <rg> --nsg-name <nsg> -o jsoncGet-AzApplicationSecurityGroup -ResourceGroupName <rg> -Name <asg>
Get-AzNetworkInterface -ResourceGroupName <rg> -Name <nic>
障害切り分け
| 症状 | 疑う点 | 証拠 | 次の確認 |
|---|---|---|---|
| ASG ruleが効かない | NIC membership漏れ | NIC ipConfigurationのASG reference | deployment/IaCにmembershipを追加 |
| 別VNet memberを追加できない | ASG same-VNet制約 | ASG/NIC VNet resource ID | VNetごとにASGを分ける |
| DBが全VNetから到達 | AllowVNet default ruleが先に残る/必要Deny不足 | effective rulesとpriority | AsgLogic→AsgDb allow + broader denyを設計 |
| scale-out nodeだけ通信不可 | 新NICのASG加入漏れ | instance NIC membership比較 | autoscale/deploy pipelineを修正 |
変更時の確認と rollback
- membership変更前にASG member一覧とNSG rule referenceを保存する。
- rollbackでNICを元ASGへ戻した後、role間positive/negative flowを再試験する。