Skip to content
365Posture

Permissions disclosure

365Posture collector scripts request read-only Microsoft Graph API permissions by default. You can verify those on the Entra admin consent screen before granting access. The one exception is the optional, separately sold SharePoint (full control) assessment, which holds one write-capable SharePoint permission for a few minutes (marked in red below); Microsoft shows no consent screen for it, so you confirm it at checkout and again in the setup script. The read-only SharePoint assessment never asks for it. Permissions are granted to an app registration you create, in your own tenant — 365Posture never stores your credentials.

Entra ID Assessment

65 controls — Identity, MFA, Conditional Access, privileged roles and unused or guest administrators, legacy authentication, third-party app consent and a list of unused app permissions, device settings, group expiration, cross-organisation access, and access reviews.

Permission Why it's needed
Directory.Read.All READ Read directory roles, members, and group information to check admin count and privileged access
Policy.Read.All READ Read Conditional Access policies, security defaults, external collaboration settings, SSPR configuration, device settings and cross-organisation access defaults
User.Read.All READ Read user accounts to identify guest users and check account states
AuditLog.Read.All READ Read MFA registration details and sign-in logs to detect legacy authentication
IdentityRiskyUser.Read.All READ Read the list of users Microsoft has flagged as at risk and their risk level, to check that risky accounts are dealt with (requires Entra ID P2)
RoleManagement.Read.Directory READ Read who holds each Entra admin role and how privileged role activation is set up, to count Global Administrators and check Privileged Identity Management
UserAuthenticationMethod.Read.All READ Read which sign-in method types (for example Authenticator app or security key) each user has registered, for tenants without Entra ID P1; never phone numbers or email addresses
AccessReview.Read.All READ Read whether access reviews exist and what kind they are (repeating or one-time, for guests or for which administrator roles), to check that access is reviewed regularly; never review names, reviewers or who is reviewed (requires Entra ID P2 or Entra ID Governance)
ServiceHealth.Read.All READ Read whether Microsoft Service health lists an open Microsoft Entra incident or advisory, only when a read in the run timed out or Microsoft returned an error, so the report can say whether the problem was at Microsoft; only the issue number, whether it is an incident or an advisory, and its start date are kept, never its title or description

Exchange Online Assessment

36 controls — Anti-phishing, anti-spam and anti-malware against Microsoft’s Standard, DKIM, SPF and DMARC, auto-forwarding, enhanced filtering for connectors, sign-in and protocol settings (SMTP AUTH, POP and IMAP, modern authentication, shared mailboxes), user protection (outside-sender tag, MailTips, calendar sharing), quarantine and sending limits, mail flow rules and mailbox auditing.

Permission Why it's needed
Directory.Read.All READ Read your licences, tenant information and the list of verified email domains
Exchange.ManageAsApp READ App-only access to Exchange Online PowerShell for reading anti-phishing, anti-spam, anti-malware, DKIM, connector and mail flow settings (no mailbox access)
Note: Exchange.ManageAsApp grants app-only access to Exchange Online management APIs — not to individual mailboxes or mail content. The app is assigned to the View-Only Organization Management role group only (no Microsoft Entra role is needed). The SPF, DMARC and MX lookups are ordinary public DNS queries made from your machine through your own system DNS resolver only (no third-party DNS service is ever used). No Microsoft permission is involved.

Microsoft Intune Assessment

37 controls — Device compliance policies and their assignment, device compliance and Windows encryption, screen lock and password settings, the Microsoft Defender for Endpoint risk score, app protection and data transfer, enrolment restrictions, Windows Hello for Business, update rings, and Windows Autopilot, each checked separately for Windows, macOS, iOS/iPadOS and Android.

Permission Why it's needed
Directory.Read.All READ Read your licences, to confirm Intune is part of your subscription
DeviceManagementConfiguration.Read.All READ Read device compliance policies, their settings and who they are assigned to, the tenant-wide compliance settings and the Windows update rings (day counts and assignment counts)
DeviceManagementManagedDevices.Read.All READ Read device totals per platform and compliance state, and how many Windows devices report disk encryption (counts only, no device list is kept)
DeviceManagementApps.Read.All READ Read iOS and Android app protection policies: whether they are assigned, require a PIN and encryption, and restrict backup, saving copies, sharing and copy and paste (the list of apps is never read)
DeviceManagementServiceConfig.Read.All READ Read device enrolment restrictions (which platforms and personally owned devices are blocked), the Windows Hello for Business tenant setting, whether Microsoft Defender for Endpoint is connected to Intune, and the Windows Autopilot profiles (user account type and assignment counts)

Microsoft Purview Assessment

22 controls — Audit logging, sensitivity labels and label policies, DLP, auto-labelling, and retention policies.

Permission Why it's needed
Directory.Read.All READ Read tenant and subscription information, the verified domains and the Microsoft 365 group label setting
Exchange.ManageAsApp (Microsoft Exchange Online Protection) READ App-only sign-in to Security & Compliance PowerShell, used to read DLP, retention, and label policy settings (no mailbox access)
Exchange.ManageAsApp (Office 365 Exchange Online) READ Needed, together with the Exchange Online Protection permission above, to open the read-only Security & Compliance PowerShell session (Microsoft requires both when an app connects this way). The Global Reader role limits that session to viewing settings; no mailbox access
Global Reader (Microsoft Entra role) READ Read-only directory role, assigned to the 365Posture app only for the duration of the Purview collection and removed automatically afterwards. App-only Security & Compliance PowerShell only exposes its policy commands to an app that holds a supported Microsoft Entra role, and Global Reader is the read-only one that covers DLP, retention, and label policies
Note: Both Exchange.ManageAsApp permissions (Microsoft Exchange Online Protection and Office 365 Exchange Online) only let the 365Posture app open the read-only Security & Compliance PowerShell session; the Global Reader role below limits what that session can do to viewing settings. Global Reader is the read-only version of Global Administrator: it can view settings but cannot change anything, and it is not a mailbox or file permission. It is assigned to the 365Posture app, never to a person, and only for the duration of the Purview collection: setup removes it automatically as soon as the collection finishes (if the removal ever fails, setup prints the exact steps to remove it yourself). To assign and remove it, setup asks you (the signed-in administrator, once, in the browser sign-in) to approve RoleManagement.ReadWrite.Directory on your own login, and only for orders that include Purview; the 365Posture app never receives that permission. The sign-in uses Microsoft Graph Explorer (a Microsoft app), so that approval stays recorded on your account as a Graph Explorer permission after the run; you can revoke it any time in My Apps or the Entra admin centre (Enterprise applications, Graph Explorer, Permissions). If the role cannot be assigned, the Purview policy checks (DLP, retention, labels) show as not assessed instead of failing.

SharePoint Online (read-only) Assessment

20 controls — External sharing, guest and sign-in settings, sync client restrictions, site creation, and how your Microsoft 365 groups are governed. Read-only: no write-capable permission is requested.

Permission Why it's needed
Directory.Read.All READ Read tenant and subscription information, count the Microsoft 365 groups, their labels and owners, and read the group creation setting
SharePointTenantSettings.Read.All READ Read the tenant-wide SharePoint and OneDrive sharing, sign-in and site creation settings
Note: No site, file, user or group name is read: nothing under Sites.* or Files.* is requested, and the sharing domain lists are replaced with anonymous tokens on your machine before anything leaves it. This read-only assessment never asks for a write-capable permission. A few SharePoint settings (the default sharing link, Anyone link expiry and permission, access from unmanaged devices) are only on the SharePoint tenant admin object, which Microsoft lets an app read only with a write-capable permission: the read-only assessment lists them for you to check by hand, and the guest access expiry and infected file download checks are made only in the SharePoint (full control) assessment.

SharePoint Online (full control) Assessment

20 controls — The read-only SharePoint assessment plus the settings that only the SharePoint tenant admin object holds, checked automatically instead of by hand: the default sharing link, Anyone link expiry and permission, access from unmanaged devices, guest access expiry and infected file download. It holds one write-capable SharePoint permission for a few minutes.

Permission Why it's needed
Directory.Read.All READ Read tenant and subscription information, count the Microsoft 365 groups, their labels and owners, and read the group creation setting
SharePointTenantSettings.Read.All READ Read the tenant-wide SharePoint and OneDrive sharing, sign-in and site creation settings
Sites.FullControl.All (Office 365 SharePoint Online) WRITE-CAPABLE, TEMPORARY WRITE-CAPABLE: it can change every SharePoint site. Microsoft lets an app read the SharePoint tenant admin settings only with it. The setup script grants it to the 365Posture app for a few minutes, just before the one read of those settings, removes it right after and checks that it is gone; it is never requested on the app registration, and you are asked to confirm it at checkout and again in the setup script. 365Posture only reads with it
Note: This is the only 365Posture assessment that holds a write-capable permission. The permission is granted by the setup script (using your own sign-in; Microsoft shows no consent screen for it), for the one read of the SharePoint tenant admin settings, and removed right after; the script checks the removal and, if it cannot confirm it, prints the exact steps to remove it yourself and the report shows a warning. Access tokens issued while the permission was held stay valid until they expire, about 60 to 90 minutes, and exist only on your computer. The setup script also installs the PnP.PowerShell module (a pinned version) and, for this run, keeps only the certificate of the computer you run it on on the 365Posture SharePoint app. If you do not want this, choose the read-only SharePoint assessment: it never asks for a write-capable permission.

Microsoft Teams Assessment

22 controls — External access, guest settings, meeting and app policies, file storage, channel email, shared channels, and security reporting.

Permission Why it's needed
Directory.Read.All READ Read tenant information and subscribed licences
Policy.Read.All READ Read the cross-tenant access settings (B2B direct connect), which decide whether shared channels with other organisations can work
Teams Reader (Microsoft Entra role) READ Read-only directory role, assigned to the 365Posture app only for the duration of the Teams collection and removed automatically afterwards. Teams policies are only available through the Microsoft Teams PowerShell module, and an app-only session takes its permissions from the Entra role the app holds; Teams Reader is the read-only role for the Teams admin centre (it cannot change anything)
Note: Microsoft does not offer Teams meeting, guest, app, channel and messaging policies through Microsoft Graph, so the collector reads them with the Microsoft Teams PowerShell module (read-only Get- commands only; setup installs the module). Teams Reader is a read-only role: it can view the Teams admin centre but cannot change anything, and it is not a mailbox, chat or file permission. It is assigned to the 365Posture app, never to a person, and only for the duration of the Teams collection: setup removes it automatically as soon as the collection finishes (if the removal ever fails, setup prints the exact steps to remove it yourself). To assign and remove it, setup asks you (the signed-in administrator, once, in the browser sign-in) to approve RoleManagement.ReadWrite.Directory on your own login, and only for orders that include Teams; the 365Posture app never receives that permission. The sign-in uses Microsoft Graph Explorer (a Microsoft app), so that approval stays recorded on your account as a Graph Explorer permission after the run; you can revoke it any time in My Apps or the Entra admin centre (Enterprise applications, Graph Explorer, Permissions). Only the settings the checks read are collected, policy names you chose are replaced with anonymous tokens before anything leaves your computer, and no message, chat, meeting or call content is read. If the role cannot be assigned, the Teams checks show as not assessed instead of failing.

Defender for M365 Assessment

27 controls — Defender for Endpoint coverage and protection settings (EDR block mode, antivirus and its readiness when another antivirus is the main one, network protection, attack surface reduction), exploitable vulnerabilities, Secure Score, alerts and incidents, attack simulation, and Safe Attachments, Safe Documents, Safe Links, anti-phishing, Teams protection and user reported messages.

Permission Why it's needed
Directory.Read.All READ Read tenant information and subscribed licences
DeviceManagementManagedDevices.Read.All READ List the Windows and macOS devices Intune manages (names are tokenised on your computer), to compare with the devices onboarded to Defender for Endpoint
DeviceManagementConfiguration.Read.All READ Read the Intune endpoint detection and response and attack surface reduction policies (assignment counts and the settings that matter; the exclusion folders, file types and processes are read on your computer and replaced with anonymous tokens before upload; never the onboarding package or group names)
SecurityEvents.Read.All READ Read Microsoft Secure Score and its improvement actions
SecurityIncident.Read.All READ Read security incident counts
SecurityAlert.Read.All READ Read high-severity alert counts
AttackSimulation.Read.All READ Read the status and launch date of attack simulation training
SecurityIdentitiesSensors.Read.All READ Read Defender for Identity sensor health (Microsoft Graph beta API)
Machine.Read.All (Defender for Endpoint API) READ Read device onboarding and health status and the device list (names are tokenised on your computer). Requested only if your tenant has the Defender for Endpoint service
Vulnerability.Read.All (Defender for Endpoint API) READ Read the secure configuration assessment (which devices have each protection on). Requested only if your tenant has the Defender for Endpoint service
Score.Read.All (Defender for Endpoint API) READ Read the exposure score. Requested only if your tenant has the Defender for Endpoint service
Exchange.ManageAsApp (Office 365 Exchange Online) READ Lets the 365Posture app open a read-only Exchange Online PowerShell session to read the Defender for Office 365 policies
Security Reader (Microsoft Entra role) READ Read-only directory role, assigned to the 365Posture app only for the duration of the Defender collection and removed automatically afterwards. The Defender for Office 365 policy settings are only available through Exchange Online PowerShell, and an app-only session takes its permissions from the Entra role the app holds; Security Reader is a read-only security role (it cannot change anything)
Note: Most Defender data comes from Microsoft Graph and from the Defender for Endpoint API, read-only. Alerts and incidents are reduced to counts. Device and domain controller names are shortened to the host name on your computer and replaced with anonymous tokens (device1, device2 ...) before upload, so your report can say which devices need attention; the token map that turns them back stays on your computer. No IP address, device id or user name is collected, and no alert title or alert file name. The exclusion folders, file types and processes in your Intune policies are replaced with anonymous tokens (exclusion1, exclusion2 ...) on your computer before upload, and the token map that turns them back stays on your computer. The Defender for Endpoint onboarding package is never read. The Defender for Office 365 policies (Safe Attachments, Safe Links, anti-phishing) are not available through Microsoft Graph, so the collector reads them with Exchange Online PowerShell (read-only Get- commands only). Security Reader is a read-only role: it can view security settings but cannot change anything, and it is not a mailbox or file permission. It is assigned to the 365Posture app, never to a person, and only for the duration of the Defender collection: setup removes it automatically as soon as the collection finishes (if the removal ever fails, setup prints the exact steps to remove it yourself). To assign and remove it, setup asks you (the signed-in administrator, once, in the browser sign-in) to approve RoleManagement.ReadWrite.Directory on your own login, and only for orders that include Defender; the 365Posture app never receives that permission. The sign-in uses Microsoft Graph Explorer (a Microsoft app), so that approval stays recorded on your account as a Graph Explorer permission after the run; you can revoke it any time in My Apps or the Entra admin centre (Enterprise applications, Graph Explorer, Permissions). The three Defender for Endpoint API permissions are requested only when your tenant has the Defender for Endpoint service; features your licences do not include are never requested and show as not licensed. Policy names you chose are replaced with anonymous tokens before anything leaves your computer. If the role cannot be assigned, the Defender for Office 365 checks show as not assessed instead of failing.

AI Exposure Assessment

12 controls — Third-party AI app exposure and Microsoft 365 Copilot readiness. Shows which AI apps can reach your mail, files, chats and calendars, how users and admins consent to apps, and how ready your tenant is for Copilot.

Permission Why it's needed
Directory.Read.All READ Read the app and consent inventory: enterprise apps, their permissions and consent grants. Also counts how Microsoft 365 Copilot licences are assigned (counts only)
Policy.Read.All READ Read the consent policies: user consent and the admin consent workflow
Reports.Read.All READ Read the Microsoft 365 Copilot usage counts (totals only, no per-user rows)
SharePointTenantSettings.Read.All READ Read the tenant sharing settings for SharePoint and OneDrive
InformationProtectionPolicy.Read.All READ Count the sensitivity labels (optional; label names are never read)
Note: The collector reads which apps have been allowed to reach company data. It never reads mail, files, chats or Copilot prompts, and the names of apps your own organisation registered are replaced with anonymous tokens on your machine before anything is uploaded. Third-party vendor app names, such as the product name of an AI note-taker, stay readable so the report can say which tool it is. The deeper data-protection settings that Copilot relies on are graded in the Purview and SharePoint assessments, not here. Not covered yet: AI agent identities (Entra Agent ID), Power Platform and Copilot Studio agents and connectors, and browser traffic to AI websites (finding shadow AI that way needs Defender for Cloud Apps).

All permissions listed above are application permissions (app-only, no user delegation); every one is read-only except the one marked write-capable on the SharePoint (full control) assessment. The two Exchange.ManageAsApp entries for Purview only let the app open the read-only Security & Compliance PowerShell session; the Global Reader role limits that session to viewing settings. Entries marked as a Microsoft Entra role (Purview, Teams) are read-only directory roles assigned to the 365Posture app, not to a person. The role is assigned only for the duration of that workload's collection and removed automatically afterwards.