Permission transparency

What the connector asks for

This is the complete list of application permissions the auto-managed Microsoft connector requests when your Global Admin consents — every one, what it is for, whether it reads or writes, and the two that deserve a plain-language explanation. It is generated from the same registry the provisioning code uses, and a test fails if the two ever differ.

Permissions

30

across 4 Microsoft resource APIs

Read-only

20

classified by documented effect, not by name

Write-capable

10

2 of which can escalate to tenant admin

Monitor-only subset

23

everything except response actions; zero escalation paths

Required

Ingestion and detection (16)

Read the directory, sign-ins, audit logs, risk signals, security alerts and the Office 365 activity feed. Every detection, posture check and report is built on these.

PermissionResource APIWhy ITDR needs itClass
User.Read.AllMicrosoft GraphUser inventoryRead
Directory.Read.AllMicrosoft GraphDirectory enumeration (groups, roles, org)Read
Organization.Read.AllMicrosoft GraphTenant metadataRead
Device.Read.AllMicrosoft GraphDevice inventoryRead
AuditLog.Read.AllMicrosoft GraphDirectory audit + sign-in logsRead
Reports.Read.AllMicrosoft GraphReports API (license usage etc.)Read
Policy.Read.AllMicrosoft GraphConditional Access posture + auth methodsRead
IdentityRiskEvent.Read.AllMicrosoft GraphRisk detectionsRead
IdentityRiskyUser.Read.AllMicrosoft GraphRisky usersRead
SecurityAlert.Read.AllMicrosoft GraphDefender alertsRead
SecurityIncident.Read.AllMicrosoft GraphDefender incidentsRead
SecurityEvents.Read.AllMicrosoft GraphSecure Score readsRead
RoleManagement.Read.DirectoryMicrosoft GraphIdentity risk checks: permanent vs PIM (JIT) role assignmentsRead
ActivityFeed.ReadOffice 365 Management APIsIngestion: O365 audit activity feed subscriptions + contentRead
ActivityFeed.ReadDlpOffice 365 Management APIsIngestion: DLP policy events on the audit feedRead
ServiceHealth.ReadOffice 365 Management APIsIngestion: M365 service health for the customer tenantRead

Only if you want ITDR to act

Response actions (7)

Disable an account, revoke sessions, remove a group member, revoke an application's credentials or grants, lock or wipe a device. These are the only write permissions that touch users, and the only two that can escalate are here.

PermissionResource APIWhy ITDR needs itClass
User.EnableDisableAccount.AllMicrosoft GraphDisable user response actionWrite
User.RevokeSessions.AllMicrosoft GraphRevoke sessions response actionWrite
GroupMember.ReadWrite.AllMicrosoft GraphRemove user from group response actionWrite
Application.ReadWrite.AllMicrosoft GraphApplication revocation: disable SP, remove credentials, remove role assignments, remove delegated grantsWrite · can escalate
AppRoleAssignment.ReadWrite.AllMicrosoft GraphResponse action: Remove app role assignmentWrite · can escalate
DelegatedPermissionGrant.ReadWrite.AllMicrosoft GraphResponse action: Remove OAuth consent and remove delegated permission grantWrite
DeviceManagementManagedDevices.PrivilegedOperations.AllMicrosoft GraphResponse action: Lock / Wipe / Retire Intune-managed deviceWrite

Configuration reads

Posture checks (6)

Read tenant settings for the Microsoft 365 posture scan: hybrid sync state, SharePoint settings, Defender for Identity health, Exchange and Teams configuration.

PermissionResource APIWhy ITDR needs itClass
OnPremDirectorySynchronization.Read.AllMicrosoft GraphPosture: hybrid identity sync stateRead
SharePointTenantSettings.Read.AllMicrosoft GraphPosture: SharePoint tenant settingsRead
SecurityIdentitiesHealth.Read.AllMicrosoft GraphPosture: Defender for Identity healthRead
SecurityIdentitiesSensors.Read.AllMicrosoft GraphPosture: Defender for Identity sensorsRead
Exchange.ManageAsAppOffice 365 Exchange OnlinePosture: Exchange-as-application readWrite
application_accessSkype and Teams Tenant Admin APIPosture: Teams admin module accessWrite

Scoped to itself

Credential self-rotation (1)

Lets the connector mint its own replacement secret before expiry. OwnedBy, not All: it can only touch applications it owns, which is only itself.

PermissionResource APIWhy ITDR needs itClass
Application.ReadWrite.OwnedByMicrosoft GraphSelf-rotation of own credential (managed by platform rotation worker)Write

Read this part

Two permissions that can take over a tenant

Both are in the response-actions group. Neither reads as dangerous on Microsoft's consent screen, and most products in this category request them. We would rather you heard it from us.

Application.ReadWrite.All

What we use it for. Revoking a malicious application: disabling its service principal and removing its credentials and grants.

Why it matters. It can add a password or certificate to any application or service principal in the tenant, including ones that already hold administrative roles. Whoever holds it can therefore become any app in the tenant.

AppRoleAssignment.ReadWrite.All

What we use it for. Removing an app role assignment from a compromised or over-privileged application.

Why it matters. App role assignments are how application permissions are granted. Holding this permission means being able to grant any permission to any service principal, including oneself. Microsoft's own reference notes that it lets an app grant itself additional privileges.

What we do about it

How the exposure is limited

The app lives in your tenant, not ours

Auto-managed setup creates a dedicated app registration inside your Entra tenant with its own credential. There is no single shared credential across our customers, so a compromise of another customer's connector cannot reach you, and a compromise of our infrastructure is bounded by the per-tenant secrets it holds.

You can revoke us unilaterally

Delete the app registration, disable its service principal, or remove its credential in the Entra portal. It takes effect immediately, needs nothing from us, and there is nothing we could do to prevent it.

Everything is attributed in your audit log

Every call the connector makes is recorded in your own Entra audit log against that service principal. You can see exactly what ITDR did and when, without asking us.

The secret rotates itself, narrowly

A daily job replaces the secret when it is within 30 days of expiry using Application.ReadWrite.OwnedBy — scoped to apps the connector owns, which is only itself. No Global Admin session is needed after setup.

Failed setup leaves nothing behind

If any step of provisioning fails, the half-created app is deleted so an orphaned privileged identity is never left in your tenant.

Stored encrypted

Connector secrets are encrypted at rest with a key held separately from the database.

What it does not solve

Honest limits

  • The per-tenant model reduces blast radius; it does not reduce the privilege held inside your tenant. The connector is capable of full tenant control, because two of the response permissions are. If you will never use response actions you should be able to decline them, and today you cannot: every auto-managed connector receives the full set. A monitor-only tier is on the roadmap; until it ships, a bring-your-own app-only connector is the way to grant only what you want.
  • Some connectors provisioned before auto-managed mode existed run on a shared platform credential rather than a per-tenant one. The connector page in the app shows which mode each connector uses.
  • We do not measure detection precision yet. Nothing on this page, or elsewhere on this site, claims a false-positive rate.

The full analysis, including a method for auditing any vendor's permission footprint the same way, is in our technical paper on tenant privilege footprints. Ask us for it.