M365 Service Principle

Permissions for the M365 service principle

This document specifies the exact permissions required for each service principal PAA uses. Granting more than the listed permissions is unnecessary. Granting less will cause partial or complete scan failures.


Microsoft 365 / Graph Service Principal

Purpose

Used by Zero Trust Assessment, M365 Security scanning (CIS, CISA SCuBA, EIDSCA, Maester), and Identity Security scanning (service principal risks, managed identities, guest users, application registrations).

Where to Configure

Settings > Microsoft 365

Required Microsoft Graph Application Permissions

All permissions listed below are application permissions (not delegated). They must be granted admin consent.

PermissionUsed For
Policy.Read.AllConditional Access policies, authentication methods, authorization policies
Directory.Read.AllEntra ID directory roles, service principals, application registrations, managed identities, guest users, group memberships
SecurityEvents.Read.AllMicrosoft Defender security alerts and incidents
DeviceManagementConfiguration.Read.AllIntune device compliance policies, configuration profiles
DeviceManagementApps.Read.AllIntune app protection policies, managed applications
DeviceManagementManagedDevices.Read.AllIntune managed device enrollment and compliance status
SecurityIncident.Read.AllMicrosoft Defender XDR security incidents
SharePointTenantSettings.Read.AllSharePoint sharing settings, external sharing configuration
AuditLog.Read.AllGuest user last sign-in activity (stale external user detection)

All nine permissions are required for complete data collection. Missing permissions will result in partial scan results — PAA will log which data areas failed but will continue with available data.

How to Create the Service Principal

  1. In Azure Portal, open Microsoft Entra ID > App Registrations > New Registration
  2. Name it (e.g., paa-m365-scanner) and register
  3. Under API Permissions, click Add a Permission > Microsoft Graph > Application Permissions
  4. Add each permission listed in the table above
  5. Click Grant Admin Consent — this step is required; without it, no permissions are active
  6. Under Certificates & Secrets, create a new Client Secret. Note the value immediately
  7. Note the Application (client) ID and Directory (tenant) ID
  8. In PAA Settings > Microsoft 365, enter the M365 Tenant ID, Client ID, and Client Secret, then click Validate & Test Connection

PAA’s Test Connection function verifies the credentials and checks which required permissions have been granted. It will report any missing permissions before you attempt a scan.

What PAA Does with This Service Principal

FeatureData CollectedPermissions Used
Zero Trust — Identity pillarConditional Access policies, named locations, authentication methods, directory role memberships, PIM configurationPolicy.Read.All, Directory.Read.All
Zero Trust — Devices pillarDevice compliance policies, app protection policies, Autopilot profiles, EDR statusDeviceManagementConfiguration.Read.All, DeviceManagementApps.Read.All, DeviceManagementManagedDevices.Read.All
Zero Trust — Data pillarSharePoint sharing settings, Teams governance, sensitivity label policies, DLP policiesSharePointTenantSettings.Read.All, Policy.Read.All
Zero Trust — Security Operations pillarUnified audit log status, Secure Score, Defender alertsSecurityEvents.Read.All, SecurityIncident.Read.All
M365 Security — CIS BenchmarkIdentity controls, Intune policies, Exchange config, SharePoint, Power BI governanceAll permissions
M365 Security — CISA SCuBAEntra ID, Defender, Teams, Exchange hardeningDirectory.Read.All, Policy.Read.All, SecurityEvents.Read.All
M365 Security — EIDSCAEntra ID authorization, authentication, conditional access configurationPolicy.Read.All, Directory.Read.All
Identity Security — Service PrincipalsSP credentials (expiry), app role assignments, federated identity credentialsDirectory.Read.All
Identity Security — Application RegistrationsCredential expiry, external owners, required resource accessDirectory.Read.All
Identity Security — Managed IdentitiesApp role assignments held by managed identities, RBAC rolesDirectory.Read.All
Identity Security — Guest UsersPrivileged guests, stale external users, last sign-inDirectory.Read.All, AuditLog.Read.All
Identity Security — Directory RolesService principals holding privileged Entra ID rolesDirectory.Read.All

Notes

  • All permissions are read-only. PAA does not modify your M365 tenant configuration.
  • Admin consent must be granted by a Global Administrator or Privileged Role Administrator.
  • AuditLog.Read.All is specifically required for guest user last sign-in dates. Without it, stale guest user detection will still run but will not report sign-in recency.
  • The service principal must be registered in the same tenant you are assessing. Cross-tenant assessment requires a separate App Registration in the target tenant.

Platform Architecture Authority — Crimson Owl Technologies Last updated: March 2026