Affectez des utilisateurs et des groupes à une application

Cet article vous montre comment attribuer des utilisateurs et des groupes à une application d’entreprise dans Azure Active Directory (Azure AD) à l’aide de PowerShell. Lorsque vous attribuez un utilisateur à une application, celle-ci apparaît dans le portail Mes applications de l’utilisateur pour en faciliter l’accès. Si l’application expose des rôles d’application, vous pouvez également en attribuer un spécifique à l’utilisateur.

Lorsque vous affectez un groupe à une application, seuls les utilisateurs du groupe y ont accès. L’affectation n’est pas en cascade vers les groupes imbriqués.

L’attribution basée sur le groupe requiert Azure Active Directory Premium édition P1 ou P2. L’attribution basée sur le groupe est uniquement prise en charge pour les groupes de sécurité. Les appartenances aux groupes imbriqués et aux groupes Microsoft 365 ne sont pas prises en charge actuellement. Pour d’autres conditions de gestion des licences relatives aux composants traités dans le présent article, consultez la page sur la tarification d’Azure Active Directory.

Pour un meilleur contrôle, vous pouvez configurer certains types d’applications d’entreprise pour exiger l’affectation d’utilisateur. Pour plus d’informations sur l’obligation d’affecter un utilisateur à une application, consultez Gérer l’accès à une application.

Prérequis

Pour attribuer des utilisateurs à une application à l’aide de PowerShell, vous avez besoin des éléments suivants :

  • Compte Azure avec un abonnement actif. Si vous n’en avez pas encore, vous pouvez créer un compte gratuitement.
  • Un des rôles suivants : Administrateur général, Administrateur d’application cloud, Administrateur d’application ou propriétaire du principal de service.
  • Si vous n’avez pas encore installé le module AzureAD (utilisez la commande Install-Module -Name AzureAD). Si vous êtes invité à installer un module NuGet ou le nouveau module Azure Active Directory V2 PowerShell, tapez O et appuyez sur Entrée.
  • Azure Active Directory Premium P1 ou P2 pour l’attribution basée sur le groupe. Pour d’autres conditions de gestion des licences relatives aux composants traités dans le présent article, consultez la page sur la tarification d’Azure Active Directory.

Attribuer des utilisateurs et des groupes à une application à l’aide de PowerShell

  1. Ouvrez une invite de commandes Windows PowerShell avec des privilèges élevés.

  2. Exécutez Connect-AzureAD et connectez-vous avec un compte d’utilisateur Administrateur général.

  3. Pour affecter un utilisateur et un rôle à une application, utilisez le script suivant :

    # Assign the values to the variables
    $username = "<Your user's UPN>"
    $app_name = "<Your App's display name>"
    $app_role_name = "<App role display name>"
    
    # Get the user to assign, and the service principal for the app to assign to
    $user = Get-AzureADUser -ObjectId "$username"
    $sp = Get-AzureADServicePrincipal -Filter "displayName eq '$app_name'"
    $appRole = $sp.AppRoles | Where-Object { $_.DisplayName -eq $app_role_name }
    
    # Assign the user to the app role
    New-AzureADUserAppRoleAssignment -ObjectId $user.ObjectId -PrincipalId $user.ObjectId -ResourceId $sp.ObjectId -Id $appRole.Id
    

Pour affecter un groupe à une application d’entreprise, vous devez remplacer Get-AzureADUser par Get-AzureADGroup, et New-AzureADUserAppRoleAssignment par New-AzureADGroupAppRoleAssignment.

Pour plus d’informations sur la façon d’affecter un groupe à un rôle d’application, consultez la documentation de New-AzureADGroupAppRoleAssignment.

Exemple

Cet exemple affecte l’utilisateur Britta Simon à l’application Microsoft Workplace Analytics à l’aide de PowerShell.

  1. Dans PowerShell, affectez les valeurs correspondantes aux variables $username, $app_name et $app_role_name.

    # Assign the values to the variables
    $username = "britta.simon@contoso.com"
    $app_name = "Workplace Analytics"
    
  2. Dans cet exemple, nous ignorons le nom exact du rôle d’application à attribuer à Britta Simon. Exécutez les commandes suivantes pour obtenir l’utilisateur ($user) et le principal du service ($sp) à l’aide de l’UPN de l’utilisateur et du nom complet du principal du service.

    # Get the user to assign, and the service principal for the app to assign to
    $user = Get-AzureADUser -ObjectId "$username"
    $sp = Get-AzureADServicePrincipal -Filter "displayName eq '$app_name'"
    
  3. Exécutez la commande $sp.AppRoles afin d’afficher les rôles disponibles pour l’application Workplace Analytics. Dans cet exemple, vous souhaitez affecter à Britta Simon le rôle Analyst (Limited access). Présente les rôles disponibles pour un utilisateur à l’aide du rôle Workplace Analytics

  4. Affectez le nom de rôle à la variable $app_role_name.

    # Assign the values to the variables
    $app_role_name = "Analyst (Limited access)"
    $appRole = $sp.AppRoles | Where-Object { $_.DisplayName -eq $app_role_name }
    
  5. Exécutez la commande suivante pour affecter l’utilisateur au rôle d’application :

    # Assign the user to the app role
    New-AzureADUserAppRoleAssignment -ObjectId $user.ObjectId -PrincipalId $user.ObjectId -ResourceId $sp.ObjectId -Id $appRole.Id
    

Désattribuer des utilisateurs et des groupes d’une application à l’aide de PowerShell

  1. Ouvrez une invite de commandes Windows PowerShell avec des privilèges élevés.

  2. Exécutez Connect-AzureAD et connectez-vous avec un compte d’utilisateur Administrateur général. Pour supprimer un utilisateur et un rôle d’une application, utilisez le script suivant :

    # Store the proper parameters
    $user = get-azureaduser -ObjectId <objectId>
    $spo = Get-AzureADServicePrincipal -ObjectId <objectId>
    
    #Get the ID of role assignment 
    $assignments = Get-AzureADServiceAppRoleAssignment -ObjectId $spo.ObjectId | Where {$_.PrincipalDisplayName -eq $user.DisplayName}
    
    #if you run the following, it will show you what is assigned what
    $assignments | Select *
    
    #To remove the App role assignment run the following command.
    Remove-AzureADServiceAppRoleAssignment -ObjectId $spo.ObjectId -AppRoleAssignmentId $assignments[assignment #].ObjectId
    

Supprimez tous les utilisateurs affectés à l’application.

#Retrieve the service principal object ID.
$app_name = "<Your App's display name>"
$sp = Get-AzureADServicePrincipal -Filter "displayName eq '$app_name'"
$sp.ObjectId

# Get Service Principal using objectId
$sp = Get-AzureADServicePrincipal -ObjectId "<ServicePrincipal objectID>"

# Get Azure AD App role assignments using objectId of the Service Principal
$assignments = Get-AzureADServiceAppRoleAssignment -ObjectId $sp.ObjectId -All $true

# Remove all users and groups assigned to the application
$assignments | ForEach-Object {
    if ($_.PrincipalType -eq "User") {
        Remove-AzureADUserAppRoleAssignment -ObjectId $_.PrincipalId -AppRoleAssignmentId $_.ObjectId
    } elseif ($_.PrincipalType -eq "Group") {
        Remove-AzureADGroupAppRoleAssignment -ObjectId $_.PrincipalId -AppRoleAssignmentId $_.ObjectId
    }
}

Étapes suivantes