Skip to content

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.

Where in the appTenant › Defender & Security Operations › Azure Owners & Root Elevation
WorkloadSecurity
KindFindings list · dashboard tile
DataRead from Microsoft 365 when someone first opens it, then kept for the report cache lifetime (Settings > Data & cache, 1 hour unless changed).
LicenceNo extra licence needed.
Report id (API and MCP)tenant.secops.azure-owners
ColumnKeyType
SeveritySeverityStatus
ScopeCategoryText
PrincipalSubjectLink
CheckSettingText
RoleValueText
FindingFindingText
Type / scopeDetailText
AssignedWhenDate
CountNumberNumber

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).

Licence: No extra licence needed.

Application permissions on the IntensiveReports app registration (all permissions):

PermissionAPIWhat it allowsNote
Directory.Read.AllMicrosoft GraphRead directory datanames
AuditLog.Read.AllMicrosoft GraphRead all audit log dataelevate 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/managementGroups
  • GET https://management.azure.com/subscriptions
  • GET .../providers/Microsoft.Authorization/roleAssignments?$filter=atScope()
  • GET /v1.0/auditLogs/directoryAudits (AzureRBACRoleManagementElevateAccess)
GET /ir-api/v1/reports/tenant.secops.azure-owners?size=100

An 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.