The SharePoint Folder Was Private — Until Someone Created an Anonymous Link
The SharePoint folder looked private.
The expected users had access.
The expected groups had access.
Nothing in the visible membership immediately suggested public exposure.
But the audit trail contained another permission path.
Someone had created an anonymous sharing link.
Agent Foskett stopped asking who belonged to the site and started reconstructing the sharing event itself.
Who created the link? What did it expose? And was the link ever used?

Private Membership. Public Link.
Site membership can look perfectly reasonable while a sharing link creates a separate route to the content. The investigation has to include the sharing model, not just the membership list.
The permissions looked normal
Administrators checked the obvious places. Site membership looked expected. The folder was not sitting in an obviously public location.
That could have ended the investigation too early.
SharePoint access is not explained only by who belongs to the site.
Sharing can create another path.
An anonymous link changes the question
That means the analyst may not be able to answer the incident simply by looking for an external guest account.
Agent Foskett broke the problem into three parts.
Start with SharePoint sharing activity
OfficeActivity can provide SharePoint and OneDrive audit events. Agent Foskett began broadly so the investigation reflected the operations actually present in the tenant.- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
OfficeActivity
| where TimeGenerated > ago(30d)
| where OfficeWorkload =~ "SharePoint"
| where Operation has_any (
"AnonymousLink",
"Sharing",
"SecureLink")
| project TimeGenerated,
UserId,
Operation,
Site_Url,
OfficeObjectId,
ClientIP,
Parameters
| order by TimeGenerated descThe sharing event became the anchor
Agent Foskett inspected the raw event and available parameters rather than assuming every sharing operation carried identical fields. The important facts were the actor, timestamp, affected object and sharing context recorded by Microsoft 365.
The folder had not become public because its membership changed. A new access mechanism had been created.
Search the exact object
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
let ObjectPath = "/Shared Documents/Finance/";
OfficeActivity
| where TimeGenerated > ago(30d)
| where OfficeWorkload =~ "SharePoint"
| where OfficeObjectId has ObjectPath
| project TimeGenerated,
UserId,
Operation,
ClientIP,
OfficeObjectId,
Parameters
| order by TimeGenerated ascCreation does not prove exposure was used
Agent Foskett therefore separated link creation from link usage.
The investigation searched the subsequent audit window for access, preview, download and sharing-related operations involving the affected object. The exact operation names and identity information available depend on the audited event and Microsoft 365 logging.
Hunt the activity after the link appeared
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
let LinkCreated = datetime(2026-09-28 14:06:00);
let ObjectPath = "/Shared Documents/Finance/";
OfficeActivity
| where TimeGenerated between
(LinkCreated .. LinkCreated + 7d)
| where OfficeWorkload =~ "SharePoint"
| where OfficeObjectId has ObjectPath
| project TimeGenerated,
Operation,
UserId,
ClientIP,
OfficeObjectId,
Parameters
| order by TimeGenerated ascThe creator mattered too
Agent Foskett therefore investigated the account that created it.
Was the user expected to share this content? Did the timing make sense? Was the source IP familiar? Were there other unusual sharing operations by the same identity?
The link was evidence. Intent still required context.
Expand the hunt to the creator
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
let Creator = "alex@contoso.com";
OfficeActivity
| where TimeGenerated > ago(30d)
| where OfficeWorkload =~ "SharePoint"
| where UserId =~ Creator
| where Operation has_any (
"AnonymousLink",
"Sharing",
"SecureLink")
| project TimeGenerated,
Operation,
Site_Url,
OfficeObjectId,
ClientIP,
Parameters
| order by TimeGenerated ascBuild the exposure timeline
What Agent Foskett checked
What the evidence can and cannot prove
Likewise, proving that a link existed does not automatically prove that an unauthorised party used it or downloaded the content.
Microsoft 365 audit fields and operations vary by event, workload and configuration. Analysts should inspect the actual audit records in their environment and avoid inferring identity or access that the telemetry does not establish.
Exposure and confirmed access are related questions — but they are not the same finding.
The lesson
That view was incomplete.
A sharing link had created another route to the content.
Agent Foskett reconstructed the sharing event, identified the affected object, investigated the creator and searched the subsequent audit window for evidence of use.
When investigating access to cloud content, don't only ask who has permission. Ask what links exist too.
Related investigations
Final thought
A sharing link can create an entirely different access path without making the ordinary membership list look unusual.
Reconstruct the link creation, inspect the object and sharing scope, investigate the creator and correlate the activity that followed.
Follow the evidence. Build the timeline.
The Logs Already Knew! 🔎

