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

Application DeveloperMicrosoft Entra built-in role

Can create application registrations independent of the 'Users can register applications' setting.

Role IDcf1c38e5-3621-4004-a7cb-879624dced7c
PrivilegedYes. Microsoft marks this role as privileged.
Permissions3

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.directory/applications/createAsOwnerCreate all types of applications, and creator is added as the first owner
microsoft.directory/oAuth2PermissionGrants/createAsOwnerCreate OAuth 2.0 permission grants, with creator as the first owner
microsoft.directory/servicePrincipals/createAsOwnerCreate service principals, with creator as the first owner

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 Application Developer for <reason>"
    RoleDefinitionId = "cf1c38e5-3621-4004-a7cb-879624dced7c"
    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 'cf1c38e5-3621-4004-a7cb-879624dced7c'" -ExpandProperty Principal |
    ForEach-Object { $_.Principal.AdditionalProperties.displayName }

Related roles

Find the smallest role for a task →