Assigner des rôles personnalisés avec une étendue de ressources à l’aide de PowerShell dans Microsoft Entra ID

Cet article explique comment créer une attribution de rôle à l’échelle de l’organisation dans Microsoft Entra ID. L’attribution d’un rôle à l’échelle de l’organisation accorde l’accès à l’ensemble de l’organisation Microsoft Entra. Pour créer une attribution de rôle avec une étendue d’une unique ressource Microsoft Entra, consultez Créer et attribuer un rôle personnalisé dans Microsoft Entra ID. Cet article utilise le module Microsoft Graph PowerShell SDK.

Pour plus d’informations sur les rôles Microsoft Entra, consultez Rôles intégrés Microsoft Entra.

Prérequis

  • Licence Microsoft Entra ID P1 ou P2
  • Administrateur de rôle privilégié
  • Module Microsoft Graph PowerShell lors de l'utilisation de PowerShell

Pour plus d’informations, consultez Prérequis pour utiliser PowerShell ou l’Afficheur Graph.

Affecter un rôle d’annuaire à un utilisateur ou à un principal de service avec une étendue de ressource

  1. Chargez le module Microsoft Graph PowerShell.

  2. Connectez-vous en exécutant la commande Connect-MgGraph.

  3. Créez un nouveau rôle à l’aide du script PowerShell suivant.

    ## Assign a role to a user or service principal with resource scope
    # Get the user and role definition you want to link
    $user = Get-MgUser -Filter "UserPrincipalName eq 'cburl@f128.info'"
    $roleDefinition = Get-MgRoleManagementDirectoryRoleDefinition -Filter "DisplayName eq 'Application Support Administrator'"
    
    # Get app registration and construct resource scope for assignment.
    $appRegistration = Get-MgApplication -Filter "displayName eq 'f/128 Filter Photos'"
    $directoryScope = '/' + $appRegistration.Id
    
    # Create a scoped role assignment
    $roleAssignment = New-MgRoleManagementDirectoryRoleAssignment -DirectoryScopeId $directoryScope `
       -RoleDefinitionId $roleDefinition.Id -PrincipalId $user.Id
    

Pour attribuer le rôle à un principal du service au lieu d’un utilisateur, utilisez la cmdlet Get-MgServicePrincipal.

Définitions de rôles

Les objets de définition de rôle contiennent la définition du rôle intégré ou personnalisé, ainsi que les autorisations octroyées par cette attribution de rôle. Cette ressource affiche à la fois les définitions de rôle personnalisées et les rôles d’annuaire intégrés (qui sont affichés sous une forme équivalente à roleDefinition). Pour plus d’informations sur le nombre maximal de rôles personnalisés qui peuvent être créés dans une organisation Microsoft Entra, consultez Restrictions et limites du service Microsoft Entra.

Créer une définition de rôle

# Basic information
$description = "Can manage credentials of application registrations"
$displayName = "Application Registration Credential Administrator"
$templateId = (New-Guid).Guid

# Set of actions to include
$rolePermissions = @{
    "allowedResourceActions" = @(
        "microsoft.directory/applications/standard/read",
        "microsoft.directory/applications/credentials/update"
    )
}

# Create new custom directory role
$customAdmin = New-MgRoleManagementDirectoryRoleDefinition -RolePermissions $rolePermissions `
   -DisplayName $displayName -Description $description -TemplateId $templateId -IsEnabled:$true

Lire et répertorier les définitions de rôles

# Get all role definitions
Get-MgRoleManagementDirectoryRoleDefinition

# Get single role definition by ID
Get-MgRoleManagementDirectoryRoleDefinition -UnifiedRoleDefinitionId 00000000-0000-0000-0000-000000000000

# Get single role definition by templateId
Get-MgRoleManagementDirectoryRoleDefinition -Filter "TemplateId eq 'c4e39bd9-1100-46d3-8c65-fb160da0071f'"

Mettre à jour une définition de rôle

# Update role definition
# This works for any writable property on role definition. You can replace display name with other
# valid properties.
Update-MgRoleManagementDirectoryRoleDefinition -UnifiedRoleDefinitionId c4e39bd9-1100-46d3-8c65-fb160da0071f `
   -DisplayName "Updated DisplayName"

Supprimer une définition de rôle

# Delete role definition
Remove-MgRoleManagementDirectoryRoleDefinition -UnifiedRoleDefinitionId c4e39bd9-1100-46d3-8c65-fb160da0071f

Attributions de rôles

Les attributions de rôles contiennent des informations qui lient une entité de sécurité donnée (un principal de service d’utilisateur ou d’application) à une définition de rôle. Si nécessaire, vous pouvez ajouter une étendue d’une ressource de Microsoft Entra unique pour les autorisations affectées. La restriction de l’étendue d’une attribution de rôle est prise en charge pour les rôles intégrés et personnalisés.

Création d'une affectation de rôle

# Get the user and role definition you want to link
$user = Get-MgUser -Filter "userPrincipalName eq 'cburl@f128.info'"
$roleDefinition = Get-MgRoleManagementDirectoryRoleDefinition -Filter "DisplayName eq 'Application Support Administrator'"

# Get app registration and construct resource scope for assignment.
$appRegistration = Get-MgApplication -Filter "displayName eq 'f/128 Filter Photos'"
$directoryScope = '/' + $appRegistration.Id

# Create a scoped role assignment
$roleAssignment = New-MgRoleManagementDirectoryRoleAssignment -DirectoryScopeId $directoryScope `
   -RoleDefinitionId $roleDefinition.Id -PrincipalId $user.Id

Lire et répertorier les attributions de rôles.

# Get role assignments for a given principal
Get-MgRoleManagementDirectoryRoleAssignment -Filter "PrincipalId eq 'aaaaaaaa-bbbb-cccc-1111-222222222222'"

# Get role assignments for a given role definition 
Get-MgRoleManagementDirectoryRoleAssignment -Filter "RoleDefinitionId eq '00000000-0000-0000-0000-000000000000'"

Supprimer une attribution de rôle

# Remove role assignment
Remove-MgRoleManagementDirectoryRoleAssignment -UnifiedRoleAssignmentId 'aB1cD2eF3gH4iJ5kL6-mN7oP8qR-1'

Étapes suivantes