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) |
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 |
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 |
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 |
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) |
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) |
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) |
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.