azureblog.co.uk
← cd ~/roles
// roles/entra · privileged

Helpdesk AdministratorMicrosoft Entra built-in role

Can reset passwords for non-administrators and Helpdesk Administrators.

Role ID729827e3-9c14-49f7-bb1b-9608f156bbb8
PrivilegedYes. Microsoft marks this role as privileged.
Permissions9

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

PermissionWhat it allows
microsoft.azure.serviceHealth/allEntities/allTasksRead and configure Azure Service Health
microsoft.azure.supportTickets/allEntities/allTasksCreate and manage Azure support tickets
microsoft.directory/bitlockerKeys/key/readRead bitlocker metadata and key on devices
microsoft.directory/deviceLocalCredentials/standard/readRead all properties of the backed up local administrator account credentials for Microsoft Entra joined devices, except the password
microsoft.directory/users/invalidateAllRefreshTokensForce sign-out by invalidating user refresh tokens
microsoft.directory/users/password/updateReset passwords for all users
microsoft.office365.serviceHealth/allEntities/allTasksRead and configure Service Health in the Microsoft 365 admin center
microsoft.office365.supportTickets/allEntities/allTasksCreate and manage Microsoft 365 service requests
microsoft.office365.webPortal/allEntities/standard/readRead 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:

powershell13 lines
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?

powershell3 lines
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

Find the smallest role for a task →