So fügen Sie delegierte, zugestimmte Berechtigungen mit PowerShell hinzu oder entfernen sie

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

  1. 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.All und DelegatedPermissionGrant.ReadWrite.All).
  2. Anpassen des Skripts:
    • Ersetzen Sie YOUR_APP_ID durch die Anwendungs-ID der App, die Sie verwalten möchten.
    • Ändern Sie die Arrays $AddPermissions und $RemovePermissions so, dass sie die Berechtigungen enthalten, die Sie hinzufügen oder entfernen möchten.
  3. Benutzer- vs. Anwendungsberechtigungen:
    • Wenn Sie Berechtigungen für einen bestimmten Benutzer ändern, entfernen Sie die Auskommentierung und legen Sie $UserId auf die E-Mail-Adresse des Benutzers fest.
    • Wenn Sie Berechtigungen für alle Benutzer verwalten, lassen Sie $UserId auskommentiert.
  4. 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.Read hinzu, 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.

Kommentar hinterlassen