Query Details
// Hunt : M365 - SharePoint Admin Role and Permission Changes (90d)
// Purpose : Full audit trail of SharePoint site permission escalations,
// site collection admin grants, and sharing policy changes over 90 days.
// Supports access review, privilege escalation, and compliance audits.
// Tables : OfficeActivity
// Period : P90D
//==========================================================================================
let LookbackDays = 90d;
OfficeActivity
| where TimeGenerated > ago(LookbackDays)
| where RecordType == "SharePoint"
| where Operation in (
"SiteCollectionAdminAdded", "SiteCollectionAdminRemoved",
"PermissionLevelAdded", "PermissionLevelRemoved",
"GroupMemberAdded", "GroupMemberRemoved",
"SitePermissionsModified", "SharingPolicyChanged",
"SiteCollectionCreated", "SiteDeleted")
| extend
TargetUser = tostring(TargetUserOrGroupName),
RoleName = tostring(parse_json(Event_Data).RoleAssignment),
SiteLower = tolower(Site_Url)
| extend
IsAdmin = Operation has "Admin" or RoleName has "Full Control",
IsGuest = TargetUser has "#EXT#" or TargetUser has "guest",
IsSensitive = SiteLower has_any (dynamic([
"hr", "legal", "finance", "exec", "security", "payroll", "board"
]))
| summarize
OpCount = count(),
Operations = make_set(Operation, 10),
Targets = make_set(TargetUser, 10),
SitesAffected = make_set(Site_Url, 10),
AdminOps = countif(IsAdmin),
GuestOps = countif(IsGuest),
FirstChange = min(TimeGenerated),
LastChange = max(TimeGenerated)
by UserId
| sort by AdminOps desc
| project
UserId,
OpCount,
AdminOps,
GuestOps,
Operations,
Targets,
SitesAffected,
FirstChange,
LastChange
This query is designed to track and analyze changes in SharePoint permissions and roles over the past 90 days. It focuses on identifying and summarizing activities related to permission escalations, admin role assignments, and sharing policy modifications. Here's a breakdown of what the query does:
Time Frame: It looks at data from the last 90 days.
Data Source: The query uses the OfficeActivity table, specifically filtering for records related to SharePoint.
Operations of Interest: It filters for specific operations such as adding or removing site collection admins, modifying permissions, changing sharing policies, and creating or deleting site collections.
Data Enrichment:
Summary Metrics:
Sorting and Presentation:
The query is useful for auditing and reviewing access changes, detecting privilege escalations, and ensuring compliance with security policies.

David Alonso
Released: March 18, 2026
Tables
Keywords
Operators