La gestion des autorisations déléguées des applications dans les environnements Microsoft est une tâche essentielle pour les administrateurs. Ce guide fournit un script Microsoft Graph PowerShell pour vous aider à ajouter ou supprimer des autorisations déléguées avec plus de granularité et de contrôle.
Pourquoi modifier les autorisations déléguées ?
Les autorisations déléguées permettent à une application d’agir au nom d’un utilisateur connecté. Il existe toutefois des situations où vous devrez peut-être ajuster ces autorisations :
- Pour supprimer les autorisations inutiles ou excessives à des fins de sécurité.
- Pour ajouter de nouvelles autorisations requises pour le fonctionnement de l’application.
- Pour résoudre les problèmes d’accès à l’API.
Remarque : Le script fourni ici offre un contrôle précis des autorisations et convient parfaitement aux scénarios avancés.
Script PowerShell : ajouter ou supprimer des autorisations déléguées
Voici le script PowerShell complet pour gérer les autorisations déléguées :
Section de configuration
# CONFIGURATION
# Application ID of app
$appId= "YOUR_APP_ID"
# Uncomment below line if you want to modify user consent
# $UserId = [email protected]
# Microsoft Graph App ID (DO NOT CHANGE)
# AAD Graph App Id: "00000002-0000-0000-c000-000000000000"
# MS Graph App Id: "00000003-0000-0000-c000-000000000000"
$resourceId= "00000003-0000-0000-c000-000000000000"
# Delegated Permissions you want on this service principal
$AddPermissions = @(
"User.Read"
)
$RemovePermissions = @(
"Mail.Send",
"Group.ReadWrite.All"
)
Script principal
# Connect to Microsoft Graph PowerShell
Connect-MgGraph -Scopes "Directory.Read.All DelegatedPermissionGrant.ReadWrite.All"
$appPrincipal = Get-MgServicePrincipal -Filter "appId eq '$($appId)'"
$ResourceServicePrincipal = Get-MgServicePrincipal -Filter "appId eq '$($resourceId)'"
$UserPrincipal = Get-MgUser -UserId $UserId
# Find grant if one already exists
if($UserId) {
$grants = Get-MgOauth2PermissionGrant -Filter "clientId eq '$($appPrincipal.id)' and resourceId eq '$($ResourceServicePrincipal.id)' and principalId eq '$($UserPrincipal.id)'"
} else {
$grants = Get-MgOauth2PermissionGrant -Filter "clientId eq '$($appPrincipal.id)' and resourceId eq '$($ResourceServicePrincipal.id)'"
}
# Update existing grant
$RemovePermissions += $AddPermissions
foreach($grant in $grants) {
# Remove permissions from grant
foreach($permission in $RemovePermissions) {
Write-Host "Removing: $($permission)"
# Remove permission from grant
$grant.scope = $grant.scope.Replace($permission, "")
}
# Add permissions to grant
foreach($permission in $AddPermissions) {
$grant.scope += $permission + " "
}
# Update existing Grant
Update-MgOauth2PermissionGrant -Oauth2PermissionGrantId $grant.id -Scope $grant.scope.Trim()
}
# Create grant if none exists
if(!$grants) {
$ScopeString = $AddPermissions -join " "
if($UserId) {
New-MgOauth2PermissionGrant -ClientId $appPrincipal.id -ResourceId $ResourceServicePrincipal.id -Scope $ScopeString -ConsentType Principal -PrincipalId $UserPrincipal.id
} else {
New-MgOauth2PermissionGrant -ClientId $appPrincipal.id -ResourceId $ResourceServicePrincipal.id -Scope $ScopeString -ConsentType AllPrincipals
}
}
Notes importantes pour les administrateurs
- Prérequis :
- Installez la dernière version du Microsoft Graph PowerShell SDK.
- Assurez-vous de disposer des autorisations requises pour gérer les autorisations déléguées (
Directory.Read.AlletDelegatedPermissionGrant.ReadWrite.All).
- Personnalisation du script :
- Remplacez
YOUR_APP_IDpar l’ID d’application de l’application que vous souhaitez gérer. - Modifiez les tableaux
$AddPermissionset$RemovePermissionsafin d’y inclure les autorisations que vous souhaitez ajouter ou supprimer.
- Remplacez
- Autorisations utilisateur et autorisations d’application :
- Si vous modifiez les autorisations d’un utilisateur précis, décommentez et définissez
$UserIdsur l’adresse e-mail de l’utilisateur. - Si vous gérez les autorisations de tous les utilisateurs, laissez
$UserIden commentaire.
- Si vous modifiez les autorisations d’un utilisateur précis, décommentez et définissez
- Test du script :
- Avant d’exécuter le script en production, testez-le dans un environnement hors production pour vous assurer qu’il fonctionne comme prévu.
Exemples de cas d’usage
- Ajout d’autorisations : Ajoutez
User.Readpour permettre à l’application d’accéder aux informations de base du profil utilisateur. - Suppression d’autorisations : Supprimez
Mail.Sendpour empêcher l’application d’envoyer des e-mails au nom des utilisateurs. - Contrôle granulaire : Combinez l’ajout et la suppression d’autorisations dans un seul script pour une gestion efficace.