Azure Subscription Owners & Root Elevation
The question it answers: Who holds Owner on Azure subscriptions, management groups or the root, including guests, service principals and stale assignments?
Owners of a subscription can do anything in it, including granting access to others; Owner at a management group or the root is inherited by every subscription below. Guests, service principals and stale assignments with Owner are the blast radius nobody reviews - and ‘elevate access’ lets any Global Administrator take all of it.
At a glance
Section titled “At a glance”| Where in the app | Tenant › Defender & Security Operations › Azure Owners & Root Elevation |
| Workload | Security |
| Kind | Findings list · dashboard tile |
| Data | Read from Microsoft 365 when someone first opens it, then kept for the report cache lifetime (Settings > Data & cache, 1 hour unless changed). |
| Licence | No extra licence needed. |
| Report id (API and MCP) | tenant.secops.azure-owners |
Columns
Section titled “Columns”| Column | Key | Type |
|---|---|---|
| Severity | Severity | Status |
| Scope | Category | Text |
| Principal | Subject | Link |
| Check | Setting | Text |
| Role | Value | Text |
| Finding | Finding | Text |
| Type / scope | Detail | Text |
| Assigned | When | Date |
| Count | Number | Number |
A findings list hides columns that no row fills. Severity is Critical, Serious, Warning, OK or Info; rows rated Critical, Serious or Warning need attention (Working with findings).
What it needs
Section titled “What it needs”Licence: No extra licence needed.
Application permissions on the IntensiveReports app registration (all permissions):
| Permission | API | What it allows | Note |
|---|---|---|---|
Directory.Read.All | Microsoft Graph | Read directory data | names |
AuditLog.Read.All | Microsoft Graph | Read all audit log data | elevate access events |
Roles and other setup:
- Azure RBAC ‘Reader’ for this app at the root management group (’/’)
Data sources it reads
GET https://management.azure.com/providers/Microsoft.Management/managementGroupsGET https://management.azure.com/subscriptionsGET .../providers/Microsoft.Authorization/roleAssignments?$filter=atScope()GET /v1.0/auditLogs/directoryAudits (AzureRBACRoleManagementElevateAccess)
Through the API and MCP
Section titled “Through the API and MCP”GET /ir-api/v1/reports/tenant.secops.azure-owners?size=100An AI assistant reads it with the MCP tool get_report and the id tenant.secops.azure-owners. The client needs the Read grant for Security. See Using the API.