MS365 Entra ID | Enterprise Apps - User Consent deaktivieren & Audit per PowerShell ⏱ 4 min read

MS365 Entra ID | Enterprise Apps - User Consent deaktivieren & Audit per PowerShell

„Sign in with Microsoft“ – so bequem es für Nutzer ist, so schnell wird es für Administratoren zum Albtraum. Im Laufe der Jahre sammeln sich in fast jedem Microsoft 365 Tenant unzählige „Enterprise Applications“ an. Oft wissen wir gar nicht mehr, woher sie kommen oder welche Berechtigungen sie eigentlich haben.

In diesem Artikel zeige ich dir, warum das freie Hinzufügen von Apps durch Nutzer (und sogar durch Admins im falschen Kontext) eine schlechte Idee ist und wie du die Kontrolle zurückgewinnst.

Das Problem: Der Klick im Vorbeigehen

Vielleicht kennst du das: Du testest ein neues KI-Tool oder ein Add-in, klickst schnell auf „Akzeptieren“, weil die angeforderten Berechtigungen harmlos aussehen, und vergisst die App fünf Minuten später wieder.

Die drei Todsünden bei Enterprise Apps

An diesem Beispiel lassen sich drei grundlegende Sicherheitsfehler ableiten, die in vielen Umgebungen täglich passieren:

  1. Mangelnde Sorgfalt: Apps werden oft ohne tiefergehende Prüfung der Notwendigkeit hinzugefügt.
  2. Unverifizierte Herausgeber: Oft stammen diese Apps von „Unverified Publishers“. Das bedeutet, Microsoft hat die Identität des Herausgebers nicht validiert. Ein unnötiges Sicherheitsrisiko.
  3. Admin-Privilegien missbraucht: Wenn du solche Apps mit deinem Global Admin oder einem anderen hoch privilegierten Account hinzufügst, umgehst du oft Sicherheitsmechanismen, die für normale User (hoffentlich) gelten.

Der wichtigste Schritt, um Wildwuchs und Schatten-IT zu verhindern, ist die Deaktivierung der Option, dass Benutzer eigenständig Apps consenten (zustimmen) dürfen.

Warum? Wenn ein normaler User versucht, eine App hinzuzufügen, sollte er blockiert werden. Stattdessen greift der Admin Consent Workflow. Der User muss eine Begründung eingeben, und du als Administrator erhältst eine Anfrage (z. B. per Mail oder im Admin Center).

Das hat zwei entscheidende Vorteile:

  • Vier-Augen-Prinzip: Selbst wenn du die Anfrage stellst, zwingt dich der Prozess kurz zum Nachdenken: „Brauche ich das wirklich?“ und „Ist diese Redirect-URL vertrauenswürdig?“.
  • Zentrale Kontrolle: Du kannst prüfen, ob die App verifiziert ist und ob die angeforderten Berechtigungen (Scopes) verhältnismäßig sind.

Mehr Details zur Einrichtung findest du in unserem Artikel:
Einwilligung und Berechtigungen


Praxis: Analyse & Bereinigung mit PowerShell

Um Licht ins Dunkel zu bringen, helfen dir zwei konkrete Skripte. Voraussetzung ist, dass du die entsprechenden Module installiert hast.

1. Wer hat was hinzugefügt? (Audit Log)

Wenn du dich fragst, woher eine bestimmte App kommt, hilft ein Blick ins Unified Audit Log. Da die Suche im Compliance Center oft träge ist, geht es per PowerShell schneller.

Dieses Skript sucht nach dem Vorgang „Add service principal“ der letzten 90 Tage:

# Voraussetzung: ExchangeOnlineManagement Modul
Connect-ExchangeOnline

# Zeitraum definieren (z. B. letzte 90 Tage)
$StartDate = (Get-Date).AddDays(-90)
$EndDate = (Get-Date)

Write-Host "Durchsuche Audit Logs..." -ForegroundColor Cyan

# Suche nach dem Event "Add service principal"
$Events = Search-UnifiedAuditLog -StartDate $StartDate -EndDate $EndDate -Operations "Add service principal" -ResultSize 5000

# Ergebnis aufbereiten
$Results = $Events | Select-Object CreationTime, @{N='User';E={$_.UserIds}}, @{N='AppName';E={($_.AuditData | ConvertFrom-Json).Target[3].ID}}

# Ausgabe in GridView zur schnellen Filterung
$Results | Out-GridView -Title "Hinzugefügte Enterprise Apps (Letzte 90 Tage)"

2. Bestandsaufnahme: Welche Apps habe ich überhaupt?

Einen schnellen Überblick über alle Drittanbieter-Apps in deinem Tenant (ohne die Microsoft-eigenen Dienste) bekommst du am besten über Microsoft Graph.

Hinweis: Achte besonders auf Einträge, bei denen PublisherName leer ist oder „Unverified“ enthält. Das sind die ersten Kandidaten für eine Prüfung oder Löschung.

# Voraussetzung: Microsoft.Graph Modul
Connect-MgGraph -Scopes "Application.Read.All"

Write-Host "Lade Service Principals..." -ForegroundColor Cyan

# Alle Service Principals abrufen
$AllApps = Get-MgServicePrincipal -All 

# Filtern: Wir wollen keine Microsoft-First-Party Apps, sondern "echte" Enterprise Apps
# Hinweis: Das Filtern nach "nicht Microsoft" ist komplex, oft hilft der Check auf leere Tags oder Publisher.
# Hier ein Ansatz, um neuere Apps zu finden:

$RecentApps = $AllApps | Where-Object { $_.CreatedDateTime -gt (Get-Date).AddDays(-180) } | Select-Object DisplayName, AppId, PublisherName, CreatedDateTime, AccountEnabled

# Tabelle ausgeben, sortiert nach Datum (neueste zuerst)
$RecentApps | Sort-Object CreatedDateTime -Descending | Format-Table -AutoSize

Fazit & Checkliste

Neben der Prävention ist die regelmäßige Hygiene im Tenant essenziell. Dank des verbesserten Microsoft Graph PowerShell SDK ist es mittlerweile deutlich einfacher, Berichte über alle Enterprise Apps, deren Nutzung und Berechtigungen zu ziehen.

Mein Tipp:
Verlasse dich nicht darauf, dass deine User (oder deine Kollegen) sicherheitsbewusst handeln.

[ ] Deaktiviere den User Consent für Apps.
[ ] Aktiviere den Admin Consent Workflow.
[ ] Prüfe regelmäßig via Script / Entra ID Portal, welche Service Principals neu sind und entferne Leichen.

Wir lernen alle aus Fehlern – am besten ist es aber, wenn das System uns davor bewahrt, sie überhaupt zu machen.


PhinIT.DE Interner Artikel mit mehr Details:
UNTERNEHMENSANWENDUNGEN – Einwilligung und Berechtigungen

Teilen:
Noch keine Kommentare

Sei der Erste und starte die Diskussion mit einem hilfreichen Beitrag.

Kommentar hinterlassen

Dein Beitrag wird vor der Veröffentlichung kurz geprüft — fachlich, respektvoll und auf den Punkt ist hier genau richtig.

E-Mail Adresse wird nicht veröffentlicht.