← cd ~/roles
// roles/entra · privileged
Helpdesk AdministratorMicrosoft Entra built-in role
Can reset passwords for non-administrators and Helpdesk Administrators.
| Role ID | 729827e3-9c14-49f7-bb1b-9608f156bbb8 |
|---|---|
| Privileged | Yes. Microsoft marks this role as privileged. |
| Permissions | 9 |
Before you assign it
Microsoft labels this a privileged role, so make it eligible through PIM rather than permanent, require phishing-resistant MFA to activate it, and review who has it regularly.
What it can do
| Permission | What it allows |
|---|---|
microsoft.azure.serviceHealth/allEntities/allTasks | Read and configure Azure Service Health |
microsoft.azure.supportTickets/allEntities/allTasks | Create and manage Azure support tickets |
microsoft.directory/bitlockerKeys/key/read | Read bitlocker metadata and key on devices |
microsoft.directory/deviceLocalCredentials/standard/read | Read all properties of the backed up local administrator account credentials for Microsoft Entra joined devices, except the password |
microsoft.directory/users/invalidateAllRefreshTokens | Force sign-out by invalidating user refresh tokens |
microsoft.directory/users/password/update | Reset passwords for all users |
microsoft.office365.serviceHealth/allEntities/allTasks | Read and configure Service Health in the Microsoft 365 admin center |
microsoft.office365.supportTickets/allEntities/allTasks | Create and manage Microsoft 365 service requests |
microsoft.office365.webPortal/allEntities/standard/read | Read basic properties on all resources in the Microsoft 365 admin center |
Assign it
The role ID is the same in every tenant, so these work as they are. Make it eligible through PIM:
Connect-MgGraph -Scopes "RoleEligibilitySchedule.ReadWrite.Directory"
$user = Get-MgUser -UserId "jane.doe@contoso.com"
New-MgRoleManagementDirectoryRoleEligibilityScheduleRequest -BodyParameter @{
Action = "AdminAssign"
Justification = "Needs Helpdesk Administrator for <reason>"
RoleDefinitionId = "729827e3-9c14-49f7-bb1b-9608f156bbb8"
DirectoryScopeId = "/"
PrincipalId = $user.Id
ScheduleInfo = @{
StartDateTime = (Get-Date).ToUniversalTime().ToString("o")
Expiration = @{ Type = "afterDuration"; Duration = "P180D" }
}
}Who already has it?
Connect-MgGraph -Scopes "RoleManagement.Read.Directory"
Get-MgRoleManagementDirectoryRoleAssignment -Filter "roleDefinitionId eq '729827e3-9c14-49f7-bb1b-9608f156bbb8'" -ExpandProperty Principal |
ForEach-Object { $_.Principal.AdditionalProperties.displayName }Related roles
- Identity Governance Administrator · 10 permissions · privileged
- Conditional Access Administrator · 13 permissions · privileged
- Entra SOC Identity Responder · 4 permissions · privileged
- Application Developer · 3 permissions · privileged
- Domain Name Administrator · 3 permissions · privileged
- Lifecycle Workflows Administrator · 3 permissions · privileged
- Attribute Provisioning Administrator · 2 permissions · privileged
- External Identity Provider Administrator · 2 permissions · privileged