Directory Writers
Attack path
Directory Writers has broad rights to update directory objects, including some service-principal application-role assignments. An attacker could use these rights to assign a controlled identity to a privileged role exposed by an enterprise application or identity-governance service. If that application holds powerful Microsoft Graph permissions or controls access in another cloud, the new assignment may provide an indirect route to changing users and groups, reading protected data, or gaining administrative access outside Entra ID.
Description
Can read and write basic directory information. For granting access to applications, not intended for users.
Details
Users in this role can read and update basic information of users, groups, and service principals. Assign this role only to applications that don't support the Consent Framework. It should not be assigned to any users.
Directory Actions42
| Action | Condition |
|---|---|
microsoft.directory/applications/extensionProperties/update | null |
microsoft.directory/contacts/create | null |
microsoft.directory/groups/assignedLabels/update | null |
microsoft.directory/groups/assignLicense | null |
microsoft.directory/groups/basic/update | null |
microsoft.directory/groups/classification/update | null |
microsoft.directory/groups/create | null |
microsoft.directory/groups/dynamicMembershipRule/update | null |
microsoft.directory/groupSettings/basic/update | null |
microsoft.directory/groupSettings/create | null |
microsoft.directory/groupSettings/delete | null |
microsoft.directory/groups/groupType/update | null |
microsoft.directory/groups/members/update | null |
microsoft.directory/groups/onPremWriteBack/update | null |
microsoft.directory/groups/owners/update | null |
microsoft.directory/groups/reprocessLicenseAssignment | null |
microsoft.directory/groups/settings/update | null |
microsoft.directory/groups/visibility/update | null |
microsoft.directory/oAuth2PermissionGrants/basic/update | null |
microsoft.directory/oAuth2PermissionGrants/create | null |
microsoft.directory/servicePrincipals/appRoleAssignedTo/update | null |
microsoft.directory/servicePrincipals/synchronization.cloudTenantToCloudTenant/credentials/manage | null |
microsoft.directory/servicePrincipals/synchronization.cloudTenantToCloudTenant/jobs/manage | null |
microsoft.directory/servicePrincipals/synchronization.cloudTenantToCloudTenant/schema/manage | null |
microsoft.directory/servicePrincipals/synchronization.cloudTenantToExternalSystem/credentials/manage | null |
microsoft.directory/servicePrincipals/synchronization.cloudTenantToExternalSystem/jobs/manage | null |
microsoft.directory/servicePrincipals/synchronization.cloudTenantToExternalSystem/schema/manage | null |
microsoft.directory/servicePrincipals/synchronizationCredentials/manage | null |
microsoft.directory/servicePrincipals/synchronizationJobs/manage | null |
microsoft.directory/servicePrincipals/synchronizationSchema/manage | null |
microsoft.directory/users/assignLicense | null |
microsoft.directory/users/basic/update | null |
microsoft.directory/users/create | null |
microsoft.directory/users/disable | null |
microsoft.directory/users/enable | null |
microsoft.directory/users/invalidateAllRefreshTokens | null |
microsoft.directory/users/inviteGuest | null |
microsoft.directory/users/manager/update | null |
microsoft.directory/users/photo/update | null |
microsoft.directory/users/reprocessLicenseAssignment | null |
microsoft.directory/users/sponsors/update | null |
microsoft.directory/users/userPrincipalName/update | null |
Graph API Permissions43
Microsoft do not provide a direct mapping between Directory actions and Graph API permissions, despite this being necessary for delegated (interactive) access. MSAdminRoles.com has meticulously compiled a list of the Graph API permissions that each built-in admin role enables you to utilise. Please note this listing is not 100% accurate. Graph API permissions and Entra RBAC operate as two independent authorisation planes and do not map to each other on a one-to-one basis.
Application.Read.AllApplication.ReadUpdate.AllApplication.ReadWrite.AllAppRoleAssignment.ReadWrite.AllDelegatedPermissionGrant.Read.AllDelegatedPermissionGrant.ReadWrite.AllDirectory.Read.AllGroup.Read.AllGroup.ReadWrite.AllGroupMember.Read.AllGroupMember.ReadWrite.AllGroupSettings.Read.AllGroupSettings.ReadWrite.AllLicenseAssignment.Read.AllLicenseAssignment.ReadWrite.AllOrgContact.Read.AllPolicy.Read.PermissionGrantPolicy.ReadWrite.PermissionGrantServicePrincipalEndpoint.Read.AllServicePrincipalEndpoint.ReadWrite.AllSignInIdentifier.Read.AllSignInIdentifier.ReadWrite.AllUser-ConvertToInternal.ReadWrite.AllUser-LifeCycleInfo.Read.AllUser-LifeCycleInfo.ReadWrite.AllUser-Mail.ReadWrite.AllUser-OnPremisesSyncBehavior.ReadWrite.AllUser-PasswordProfile.ReadWrite.AllUser.CreateUser.DeleteRestore.AllUser.EnableDisableAccount.AllUser.Export.AllUser.Invite.AllUser.ManageIdentities.AllUser.Read.AllUser.ReadBasic.AllUser.ReadWrite.AllUser.RevokeSessions.AllUserAuthenticationMethod.Read.AllUserAuthenticationMethod.ReadWrite.AllUserAuthMethod-External.ReadWrite.AllUserAuthMethod-HardwareOATH.ReadWrite.AllUserAuthMethod-TAP.ReadWrite.All