Skip to main content

Audit Readiness

Microsoft 365 and Azure Government produce audit logs at every layer of the stack — identity, applications, data, devices, and infrastructure. This chapter maps those sources, explains how to operate them, and defines what a complete evidence package looks like for CMMC Level 2 (GCC High) and SOC 2 Type II (Commercial) assessments.


Log Source Reference

Microsoft 365 Unified Audit Log (UAL)

The UAL is the primary audit source for M365 workload events: Exchange (email send/receive, mailbox access), SharePoint (file access, sharing, permission changes), Teams (messages, membership changes), OneDrive, Purview (label application, DLP matches), and Entra ID (sign-in events, group changes).

Access: Purview compliance portal → Audit → New search (or Search → Audit log search in legacy portal)

Key parameters:

ParameterNotes
Date rangeMaximum 180 days per search; stagger searches for longer periods
ActivitiesFilter by specific operation types (e.g., FileAccessed, SensitivityLabelApplied)
UsersFilter to specific UPNs for user-specific investigation
File/folderFilter to specific SharePoint/OneDrive paths
Record typeFilter by workload (ExchangeItem, SharePointFileOperation, etc.)

Retention:

  • Purview Audit Standard (included in E3): 90 days
  • Purview Audit Premium (included in E5 or as add-on): 1 year for most operations; 10 years for Exchange, SharePoint, Teams with the 10-year add-on license

PowerShell export:

# GCC High: use -Environment parameter
Connect-IPPSSession -Environment USGovernment

$results = Search-UnifiedAuditLog `
-StartDate (Get-Date).AddDays(-90) `
-EndDate (Get-Date) `
-RecordType SharePointFileOperation `
-ResultSize 5000

$results | Export-Csv -Path ".\UAL_SharePoint_90days.csv" -NoTypeInformation

Purview Audit Premium — High-Value Events

Purview Audit Premium (E5) adds additional high-value audit events not available in Standard:

EventValue
MailItemsAccessedRecords every time a mail item is accessed — critical for email compromise investigations
SendRecords every sent message (vs. just delivery)
SearchQueryInitiatedExchangeRecords mailbox search queries — detects internal reconnaissance
SearchQueryInitiatedSharePointRecords SharePoint search queries

Enable Audit Premium for all user accounts: Purview → Audit → Audit retention policies → create a 1-year policy for all users.

Entra ID Audit and Sign-In Logs

Sign-in logs: Every authentication event — user sign-ins, service principal sign-ins, managed identity sign-ins. Each entry includes user, application, IP address, location, device, Conditional Access policies applied, and result (success, failure, interrupted).

Audit logs: All directory changes — user creation/deletion, group membership changes, role assignments, application consent grants, PIM activations, password resets.

Access: Entra admin center → Monitoring → Sign-in logs / Audit logs (or portal.azure.us for GCC High)

Retention in Entra: 30 days (P1/P2 license); 7 days without Entra ID P1. For longer retention, export to Log Analytics (via Sentinel) or Azure Storage.

PowerShell export:

# Entra audit logs via Graph API
Connect-MgGraph -Scopes "AuditLog.Read.All" -Environment USGov # USGov for GCC High

Get-MgAuditLogDirectoryAudit -Filter "activityDateTime ge $(Get-Date -Format 'yyyy-MM-dd')Z" -All |
Select-Object ActivityDateTime, ActivityDisplayName, InitiatedBy, TargetResources, Result |
Export-Csv -Path ".\EntraAuditLog.csv" -NoTypeInformation

Azure Activity Log

The Azure Activity Log records all control-plane operations on Azure resources: VM creation/deletion, storage account configuration changes, Key Vault access policy changes, RBAC role assignments, network security group modifications.

Access: Azure portal → Monitor → Activity log (portal.azure.us for GCC High)

Retention: 90 days in the Azure portal. Route to Log Analytics (Sentinel) for longer retention — required for compliance.

Critical events to monitor:

OperationRisk
Microsoft.Authorization/roleAssignments/writeNew RBAC role assignment — potential privilege escalation
Microsoft.KeyVault/vaults/secrets/writeKey Vault secret modification
Microsoft.Network/networkSecurityGroups/writeNSG rule changes — potential firewall bypass
Microsoft.Compute/virtualMachines/deleteVM deletion — potential evidence destruction
Microsoft.Storage/storageAccounts/writeStorage account config change

Intune Audit Log

Records all administrative actions in Intune: policy creation/modification/deletion, device wipes, compliance policy changes. See Intune Diagnostics & Audit Evidence for details and export procedures.

Defender for Endpoint Audit Trail

MDE records: device onboarding/offboarding events, investigation actions (device isolation, file quarantine, live response commands), alert state changes, and exclusion modifications.

Access: security.microsoft.us → Settings → Endpoints → Advanced features; audit trail available in the portal activity log.

Purview DLP and Label Activity

  • DLP policy matches: Purview → Data loss prevention → Alerts (real-time); Reports → DLP policy matches (historical)
  • Label events: Purview → Data classification → Activity Explorer — all label apply/change/remove events with justification text for downgrades

Operational Audit Procedures

Configuring Audit Log Retention Policies

In Purview Audit, create a retention policy before logs start rolling off:

  1. Purview compliance portal → Audit → Audit retention policies → New policy
  2. Policy name: "Default 1-Year Retention"
  3. Record types: All (or specify Exchange, SharePoint, AzureActiveDirectory, etc.)
  4. Duration: 1 year (requires Audit Premium / E5)
  5. Priority: 1 (lowest number = highest priority)

For 10-year retention (E5 Compliance add-on): create a separate policy scoped to MailItemsAccessed, Send, and FileAccessed with 10-year duration.

Routing Logs to Sentinel / Log Analytics

Route all log sources to Sentinel for long-term retention and cross-source correlation. See SIEM Strategy for connector configuration. Once in Log Analytics, logs are queryable indefinitely (up to the workspace retention setting).

Alert on Audit Log Gaps

Configure an alert if audit logging is disabled or interrupted:

// Detect gaps in UAL ingestion (run as Sentinel analytics rule, daily)
OfficeActivity
| summarize LastEvent = max(TimeGenerated)
| where LastEvent < ago(4h) // No events in 4 hours is a gap
| project LastEvent, Alert="Unified Audit Log ingestion gap detected"

Assessor Evidence Packages

CMMC Level 2 Evidence Package

A CMMC Level 2 assessment (C3PAO or government-led) requires evidence that each practice is implemented. The following log-based artifacts satisfy the audit domain (AU) practices and support other practice families.

AU Domain — Audit and Accountability

NIST ControlEvidence RequiredSource
3.3.1 — Audit recordsDemonstrate audit logging is enabled across all in-scope systemsUAL configuration screenshot; Entra diagnostic settings showing log routing to Log Analytics; Azure Activity Log routing configuration
3.3.2 — Audit reviewDemonstrate logs are reviewedSentinel analytics rules list; evidence of alert investigation (Sentinel incident closure notes); Purview Activity Explorer review log
3.3.3 — Audit failure alertDemonstrate alerts fire if logging failsSentinel rule alerting on audit gap (KQL rule export); Azure Monitor alert for Entra diagnostic failure
3.3.5 — Audit analysisDemonstrate correlation/analysis capabilitySentinel analytics rules (exported list with KQL); workbook screenshots
3.3.6 — Reduction and reportingDemonstrate summary reportingSentinel workbook exports (monthly); Compliance Manager score history
3.3.7 — Authoritative time sourceDemonstrate logs use consistent UTC time sourceAzure Monitor / Log Analytics uses UTC — document in SSP
3.3.8 — Protect audit logsDemonstrate logs are protected from modificationLog Analytics workspace access control (only Security Reader/Contributor can access); immutability policy on storage export
3.3.9 — Limit audit managementDemonstrate only authorized personnel manage auditEntra PIM audit: who has Log Analytics Contributor and Security Administrator roles

Assembling the Evidence Package

Prepare the following artifacts for each AU control:

  1. UAL configuration — Screenshot of Purview Audit showing audit is enabled, retention policy settings, and the audit retention policy covering all record types
  2. Log routing — Screenshot of Entra diagnostic settings and Azure Monitor settings showing export to Log Analytics workspace name
  3. Analytics rules — Export from Sentinel: list of enabled analytics rules with name, severity, and data source
  4. 90-day audit log export — CSV export from UAL (at minimum Exchange + SharePoint + Entra operations) covering the assessment period
  5. Sentinel incident log — Export of Sentinel incidents for the past 90 days showing triage and closure
  6. Access control for audit logs — PIM role assignment report showing who has Log Analytics access and when they last activated it

Organizing Evidence for the Assessment

The evidence ingredients — logs, policies, configurations, screenshots — only matter if an assessor can find and trust the specific artifact they ask for in the moment. A defensible evidence package needs a single source of truth: one system that maps each CMMC practice to the evidence satisfying it, the owner who produced it, and the date it was last refreshed.

Three platforms dominate this space in the DIB market, each with a different sweet spot:

  • FutureFeed — the closest analog to QuickBooks for CMMC. Strong at catalog-style evidence organization, practice-to-artifact mapping, and self-assessment workflows. Best fit when the assessment is the primary driver and the organization wants an opinionated structure.
  • IntelliGRC — automation-forward, with particular strength in the Shared Responsibility Matrix (SRM) model for MSPs managing compliance across multiple client tenants. Best fit for service providers who need to reuse a single evidence pattern across a book of business.
  • StrikeGraph — AI-native, integrates tightly with modern SaaS stacks, and offers a 60-day free trial path into a Level 2 self-assessment. Best fit when the organization is still deciding whether to engage a C3PAO and wants a low-commitment on-ramp.

The choice is less about which tool is objectively "best" than which maps most naturally to how your team already documents work. Picking the wrong tool is a recoverable mistake; not picking one — and defaulting to SharePoint folders and ad-hoc spreadsheets — is the failure mode that burns C3PAO time during an assessment and costs you a remediation cycle.

Attribution

This comparison draws on roundtables and sessions at CS5 2026 with Stuart Itkin (FutureFeed), Phillip Donald (IntelliGRC), and Justin Beals (Strike Graph).

Working with Your C3PAO

A C3PAO is explicitly prohibited from consulting with, coaching, or implementing solutions for a client they are actively assessing. The relationship therefore starts further from you than your implementation partner's — and stays there.

Selection

Use selection conversations to stress-test boundary questions you know you'll care about, not generic compliance credentials:

  • "Do Teams meetings initiated from a secure enclave retain the enclave boundary, or do they extend scope to peer tenants?"
  • "Is an AVD KVM session a CUI-handling control or a CUI-processing control?"
  • "What evidence format do you prefer — catalog (FutureFeed-style), document-driven, or SRM-driven?"

A C3PAO who answers these with a thoughtful, specific opinion that aligns with your architecture is a better fit than one with a larger brand. "It depends" with no follow-on framework is a warning sign.

Audit etiquette

The single most useful thing to know during an assessment is what to say when an assessor asks about a control your team hasn't fully implemented or can't immediately produce evidence for. Because the assessor cannot coach you, improvising an answer in the moment usually costs more than silence. The three-sentence script:

"We don't have the right person on the call. Let's circle back on this during hot wash. We will provide you the control information then."

This preserves your ability to produce accurate evidence at the hot wash — the dedicated post-session window for gap discussion — rather than burning a finding on a question you could have answered correctly given preparation time.

📩 Don't Miss the Next Solution

Join the list to see the real-time solutions I'm delivering to my GCC High clients.