Reviewed 2026-09-24
Preview: implemented and tested with fixtures; not yet verified against a live tenant.
Before you start
- Microsoft 365 administrator roles are Microsoft Entra directory roles. KeySkope reads them through the Microsoft Entra ID connector; there is no separate Microsoft 365 connection and no duplicate identity records.
- Connect Microsoft Entra ID first. Microsoft 365 adds licence visibility to that same connection.
Read-only permissions
Microsoft Graph application permissions, admin-consented:
| Setting | Purpose / value |
|---|---|
| User.Read.All | Users, account-enabled status and assigned licence SKU IDs. |
| RoleManagement.Read.Directory | Directory (admin-center) roles and their direct members. |
| LicenseAssignment.Read.All (optional) | Licence SKU names from subscribedSkus. Without it, licences show as raw SKU IDs; the sync still succeeds. |
Do not grant any *.ReadWrite.* permission.
Connect Microsoft 365
- Complete the Microsoft Entra ID setup guide.
- On the same app registration, add Microsoft Graph application permission
LicenseAssignment.Read.Alland grant admin consent. - Run a sync of the Microsoft Entra ID connector in KeySkope. No new credential is entered.
What appears in KeySkope
- Microsoft 365 admin roles (Global, Exchange, SharePoint, Teams, User, Billing administrator and others) as privileged role grants, when directly assigned and active.
- Assigned licences as non-privileged entitlements named “M365 licence: <SKU>”.
- Not collected: sign-in activity, PIM-eligible (not yet activated) roles, administrative-unit scoping, group-based role assignment detail. Missing activity is shown as unknown, never as unused.
Verify the first sync
- Open a known administrator in KeySkope and confirm the role matches Microsoft 365 admin center → Roles.
- Confirm a licensed user shows the expected licence entitlement.
Troubleshooting
| Setting | Purpose / value |
|---|---|
| Licences show as GUIDs | LicenseAssignment.Read.All is missing or not consented. |
| 403 on sync | Verify User.Read.All and RoleManagement.Read.Directory consent. |
| Admin missing | Check whether the role is PIM-eligible but not active, or assigned via a role-assignable group. |