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

Reports ReaderMicrosoft Entra built-in role

Can read sign-in and audit reports.

Role ID4a5d8f65-41da-4de4-8968-e035b65339cf
PrivilegedNo
Permissions7

What it can do

PermissionWhat it allows
microsoft.azure.serviceHealth/allEntities/allTasksRead and configure Azure Service Health
microsoft.directory/auditLogs/allProperties/readRead all properties on audit logs, excluding custom security attributes audit logs
microsoft.directory/provisioningLogs/allProperties/readRead all properties of provisioning logs
microsoft.directory/signInReports/allProperties/readRead all properties on sign-in reports, including privileged properties
microsoft.office365.network/performance/allProperties/readRead all network performance properties in the Microsoft 365 admin center
microsoft.office365.usageReports/allEntities/allProperties/readRead Office 365 usage reports
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 Reports Reader for <reason>"
    RoleDefinitionId = "4a5d8f65-41da-4de4-8968-e035b65339cf"
    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 '4a5d8f65-41da-4de4-8968-e035b65339cf'" -ExpandProperty Principal |
    ForEach-Object { $_.Principal.AdditionalProperties.displayName }

Related roles

Find the smallest role for a task →