Operations & Troubleshooting参照資料確認: 2026-09-11

Networking RBAC / Least Privilege

Azureネットワーク運用でNetwork Contributor等のbuilt-in role、scope継承、role assignment、Network Watcher権限をleast privilegeで設計・監査する。

Scope: Microsoft Learnの一次資料を2026-09-11時点で確認したPlatform Referenceです。quota、role、API version、retirement、service healthは更新されるため、production change直前にOfficial sourcesを再確認してください。

Networking RBAC / Least Privilegeを理解するための前提

Network ContributorはMicrosoft.Network/*を中心にネットワーク管理を許可するが、VMのdeploy/manage権限そのものは付与しない。 DNS Zone ContributorとPrivate DNS Zone Contributorは対象scopeが異なり、Private DNS Zone Contributorはリンク先VNetを管理する権限ではない。

role assignmentはmanagement group→subscription→resource group→resourceのscope inheritanceを考慮してeffective accessを判断する。 Network Watcherの機能にはOwner/Contributor/Network Contributor、または必要actionを含むcustom roleが必要になる。

障害対応で権限不足を見たときは「role名」だけでなくprincipal・scope・inheritance・deny assignment/PIM状態を証拠化する。

通信や判断の流れを追う
症状を再現設定を確認能動試験ログ / packetアプリ確認

Control plane と Data plane

Control planeARM、Azure RBAC、Resource Graph、Activity Log、provider metadata、Service Health等からresourceの存在・権限・変更・platform状態を確認する。
Data plane実際のpacket/request成功は、effective route/security、DNS、health probe、flow/resource logs、synthetic test等で別途証明する。control-plane Succeededだけで通信成功としない。

仕組みと設計上の意味

Azure RBACはcontrol planeへの認可であり、NSGやFirewall ruleそのものとは別のsecurity planeです。Network Contributorを持つユーザーがnetwork configurationを変更できても、そのユーザー自身がVMへSSHできるとは限りません。逆にVM login roleを持っていてもVNet/NSGを変更できるとは限りません。

ネットワーク運用では「Network Contributorをsubscription全体に付ける」のが簡単ですが、blast radiusが大きくなります。landing zoneやcentral connectivityでは、shared hub RG、spoke RG、DNS zone、Network Watcherなど責務ごとにscopeを分け、PIM/時間制限を併用する方が監査しやすくなります。

Network Contributornetwork resourceの作成・変更。VM deploy/manageは別権限。
DNS Zone ContributorAzure DNS zone/record setを管理。access controlの付与は別権限。
Private DNS Zone ContributorPrivate DNS zoneを管理。ただしlinked VNet自体を管理する権限ではない。
Reader + diagnostic custom roleread-only調査だけなら広いContributorより、必要read/actionだけのcustom roleを検討。

Operational / decision path

対象scopeと時刻を固定し、read-only evidence → 判断 → change → same testで再検証の順を崩さない。

  1. principalのobject IDを確定し、表示名だけで判断しない。
  2. 対象resource IDと親scopeを固定する。
  3. direct assignmentとinherited assignmentを列挙し、role definitionのActions/NotActions/DataActionsを確認する。
  4. Network Watcher等の実行actionが必要なら、その操作に必要なpermissionを照合する。
  5. temporary elevationを使った場合は終了後にassignment/PIM状態を再確認する。

設計判断

判断点推奨理由
Assignment scope最小の責務scopeへ付与subscription-wide Network Contributorを常設しない
Operationsread-only調査とchange権限を分離incidentで見る人と変更する人の責務を分けられる
Shared serviceshub/DNS/securityを別scopeで管理spoke operatorがcentral networkを誤変更するのを防ぐ
Automationservice principal/managed identityを個別化人間の権限とpipeline権限を混ぜない

確認手順

Azure Portal

  • 対象resource → Access control (IAM) → Role assignmentsでThis resource/Inheritedを確認。
  • Role definitionsからNetwork Contributor等のActions/NotActionsを確認。
  • PIMを使用している場合はeligible/active assignmentと有効期限も確認。

Evidence contract

Identitytenant / subscription / resource ID / region / principalを可能な限り固定。
TimeUTC time rangeと実行時刻を記録し、変更・障害timelineと結ぶ。
Scopesubscription/region/resource typeなど、その値が意味を持つscopeを必ず残す。
Runtimecontrol-plane evidenceと実通信/data-plane evidenceを分けて保存。

Read-only first: 以下のCLI/PowerShellは原則として参照系から開始します。コメントでMUTATINGと示した操作は、必要性・scope・rollbackを確認した後にのみ実行します。

Azure CLI
# read-only: 対象scopeのassignment
az role assignment list --scope <resource-id-or-scope> --all --include-inherited -o table

# principalを固定して確認
az role assignment list --assignee-object-id <object-id> --all --include-inherited   --fill-principal-name false -o jsonc

# built-in role definition
az role definition list --name "Network Contributor" -o jsonc
PowerShell
Get-AzRoleAssignment -Scope <resource-id-or-scope> -IncludeClassicAdministrators:$false |
  Select-Object DisplayName, ObjectId, RoleDefinitionName, Scope

Get-AzRoleDefinition -Name "Network Contributor" |
  Select-Object Name, Actions, NotActions, DataActions, NotDataActions

障害切り分け

症状疑う点証拠次の確認
Portalは見えるが変更できないReader/inherited roleのみ、PIM inactiveIAM + role assignment list必要actionをrole definitionで照合
Network Watcher toolがAuthorizationFaileddiagnostic action不足error action string + role definitioncustom role/Network Contributor scopeを確認
DNSは変更できるがVNet link操作に失敗zone権限とVNet権限のscope差両resourceのIAMlinked VNet側permissionを確認
突然権限が消えたPIM expiry/assignment removal/denyActivity Log + PIM historyprincipal IDと時刻を相関

変更・rollback

  • 権限追加は最小scope・最短時間から始め、問題切り分け目的でOwnerを恒久付与しない。
  • custom role変更はActionsのワイルドカード拡大をreviewし、既存assignmentへの影響も確認する。
  • role assignment削除前にautomation principalか人間かを識別し、deployment/monitoring停止を避ける。
  • rollbackは元のrole assignment ID/scope/role definitionを記録してから行い、変更後は実際の操作でleast-privilege境界を確認する。

変更前後で保存する証拠

Before対象resource IDs、関連設定、current state、query/command出力。
Changeactor、ticket/deployment ID、correlation ID、開始/終了時刻。
Aftersame command/queryとsame test vectorで差分確認。
Rollback戻す条件、戻す対象、rollback後に再実行する観測。

Official sources