Das Verwalten delegierter Berechtigungen für Anwendungen in Microsoft-Umgebungen ist eine wichtige Aufgabe für Administratoren. Diese Anleitung stellt ein Microsoft Graph PowerShell-Skript bereit, mit dem Sie delegierte Berechtigungen mit größerer Granularität und Kontrolle hinzufügen oder entfernen können.
Warum delegierte Berechtigungen ändern?
Delegierte Berechtigungen ermöglichen es einer Anwendung, im Namen eines angemeldeten Benutzers zu handeln. Es gibt jedoch Szenarien, in denen Sie diese Berechtigungen anpassen müssen:
- Um unnötige oder übermäßige Berechtigungen aus Sicherheitsgründen zu entfernen.
- Um neue Berechtigungen hinzuzufügen, die für die Anwendungsfunktionalität erforderlich sind.
- Um Probleme mit dem API-Zugriff zu beheben.
Hinweis: Das hier bereitgestellte Skript ermöglicht eine fein abgestufte Kontrolle über Berechtigungen und ist ideal für fortgeschrittene Szenarien.
PowerShell-Skript: Delegierte Berechtigungen hinzufügen oder entfernen
Hier ist das vollständige PowerShell-Skript zum Verwalten delegierter Berechtigungen:
Konfigurationsabschnitt
# 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"
)
Hauptskript
# 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
}
}
Wichtige Hinweise für Administratoren
- Voraussetzungen:
- Installieren Sie die neueste Version des Microsoft Graph PowerShell SDK.
- Stellen Sie sicher, dass Sie über die erforderlichen Berechtigungen zum Verwalten delegierter Berechtigungen verfügen (
Directory.Read.AllundDelegatedPermissionGrant.ReadWrite.All).
- Anpassen des Skripts:
- Ersetzen Sie
YOUR_APP_IDdurch die Anwendungs-ID der App, die Sie verwalten möchten. - Ändern Sie die Arrays
$AddPermissionsund$RemovePermissionsso, dass sie die Berechtigungen enthalten, die Sie hinzufügen oder entfernen möchten.
- Ersetzen Sie
- Benutzer- vs. Anwendungsberechtigungen:
- Wenn Sie Berechtigungen für einen bestimmten Benutzer ändern, entfernen Sie die Auskommentierung und legen Sie
$UserIdauf die E-Mail-Adresse des Benutzers fest. - Wenn Sie Berechtigungen für alle Benutzer verwalten, lassen Sie
$UserIdauskommentiert.
- Wenn Sie Berechtigungen für einen bestimmten Benutzer ändern, entfernen Sie die Auskommentierung und legen Sie
- Testen des Skripts:
- Testen Sie das Skript vor dem Einsatz in der Produktion in einer Nicht-Produktionsumgebung, um sicherzustellen, dass es wie erwartet funktioniert.
Beispielhafte Anwendungsfälle
- Berechtigungen hinzufügen: Fügen Sie
User.Readhinzu, damit die App auf grundlegende Benutzerprofilinformationen zugreifen kann. - Berechtigungen entfernen: Entfernen Sie
Mail.Send, damit die App keine E-Mails im Namen von Benutzern senden kann. - Granulare Kontrolle: Kombinieren Sie das Hinzufügen und Entfernen von Berechtigungen in einem Skript für eine effiziente Verwaltung.