-
Start
-
Exchange Server
-
Exchange Hybrid
-
Exchange Online
-
- Artikel in Kürze
-
- Artikel in Kürze
Zugriff für Applikationen auf Exchange Online – mit App RBAC
Nicht nur Benutzer können auf Exchange Online zugreifen. Auch Applikationen und Systeme können für diverse Zwecke einen Zugriff erhalten. Typische Beispiele sind:
- Ticketsystem, das eingehende Mails verarbeitet und daraus Tickets erstellt
- Drucker, die eingescannte Dokumente per Mail an Benutzer versenden
- Applikationen, die Informationsmails an interne und externe Empfänger versenden (No Reply)
Allerdings werden die der App-Registrierung zugewiesenen Berechtigungen standardmäßig für ALLE (!) Postfächer erteilt. Aus diesem Grund sind noch zusätzliche Schritte in Exchange Online erforderlich, um den Zugriff auf das bzw. die vorgesehenen Postfächer einzuschränken.
Das bisherige Verfahren: Applikationszugriffsrichtlinie
Bisher konnte eine sogenannte Applikationszugriffsrichtlinie verwendet werden, um den Zugriff einer App-Registrierung auf Exchange Online bedarfsgerecht einzuschränken.
Die Konfiguration gliedert sich in die folgenden Schritte:
- App-Registrierung wie vorgegeben anlegen und Berechtigungen vergeben
- E-Mail-aktivierte Sicherheitsgruppe in Exchange Online anlegen und Postfach/Postfächer hinzufügen, auf das/die zugegriffen werden darf
- Exchange Online PowerShell starten und Richtlinie mit gewünschten Einstellungen hinzufügen
Das neue Verfahren: rollenbasierter Zugriff
Manche Berechtigungen für Exchange Online lassen sich über Microsoft Graph nicht oder nicht auf granularer Basis vergeben. Dies führt üblicherweise dazu, dass Hersteller sehr viel höhere Rechte wie Exchange.ManageAsApp anfordern, die im Prinzip einen Vollzugriff erlaubt.
Anstatt nun Microsoft Graph in diese Richtung zu erweitern, hat Microsoft ein neues Rollenmodell in Exchange Online entwickelt. Dieses ist speziell für den Zugriff durch Applikationen (und Systeme) vorgesehen.
Die grundlegende Vorgehensweise ist genauso wie beim vorherigen Verfahren. Es kommen allerdings noch ein paar Schritte hinzu, die eine granulare Konfiguration in Exchange Online erlauben. Da die meisten Schritte ausschließlich per PowerShell ausgeführt werden können, wird der Einfachheit halber das gesamte Verfahren in den folgenden Kapiteln mittels PowerShell umgesetzt.
Einrichtung/Anpassung der App-Registrierung
Die in Entra ID notwendige App-Registrierung wird wie bisher gemäß den Vorgaben des Applikationsherstellers hinzugefügt und konfiguriert. Allerdings dürfen hier die vom Hersteller angegebenen Berechtigungen (API permissions) nicht hinzugefügt werden, dieser Schritt entfällt.
# Connect to Microsoft Graph
Connect-MgGraph -Scopes 'Application.ReadWrite.All'
# Create app registration
$AppName = Read-Host 'Please provide app registration name'
New-MgApplication -DisplayName $AppName `
-Description 'This app is used to provide Graph-based access to Exchange Online' `
-SignInAudience AzureADMyOrg
# Get necessary IDs
$AppId = (Get-MgServicePrincipal -Filter "DisplayName eq '$AppName'").AppId
$ObjectId = (Get-MgServicePrincipal -Filter "DisplayName eq '$AppName'").Id
# Disconnect from Microsoft Graph
Disconnect-MgGraph
Das Skript liest die notwendigen Daten der App-Registrierung aus, welche für die nächsten Schritte benötigt werden.
Erstellung einer e-Mail-aktivierten Sicherheitsgruppe
Um den Zugriff auf bestimmte Postfächer einzuschränken, ist eine e-Mail-aktivierte Sicherheitsgruppe zu erstellen. Alle anderen Gruppentypen können nicht verwendet werden.
Die Gruppe ist entsprechend zu benennen, so dass erkennbar ist, dass sie für eine Zugriffseinschränkung verwendet wird, beispielhaft:
RES-EXO-APP-RST-Jira Mailboxes
(Ressource-Dienst-Funktion-Beschreibung)
Anschließend kann das bzw. können die Postfächer der Gruppe hinzugefügt werden, auf die die App-Registrierung zugreifen können soll.
# Zu Exchange Online verbinden
Connect-ExchangeOnline -ShowBanner:$False
# Neue Sicherheitsgruppe erstellen
$GroupName = Read-Host 'Please enter name of security group' -ForegroundColor Yellow
New-DistributionGroup -DisplayName $GroupName -Type Security
# Mitglieder für Gruppe auswählen
$DGMembers = Get-Mailbox -ResultSize Unlimited | Out-GridView `
-Title 'Please select members for security group' -OutputMode:Single
# Alle Mitglieder hinzufügen
ForEach ($Member in $DGMembers){Add-DistributionGroupMember -Identity $GroupName -Member `
$Member.DistinguishedName}
Der Gruppenname wird in einer Variable gespeichert, da dieser für die weiteren Schritte benötigt wird.
Erstellung eines Verwaltungsbereichs
Damit Exchange Online Berechtigungen auf eine bestimmte Gruppe einschränken kann, wird ein sogenannter Verwaltungsbereich benötigt. Hierfür gibt es zwei Möglichkeiten:
- Verwaltungsbereich in Entra ID
Verwaltungsbereich in Exchange Online (nur PowerShell)
Funktional bestehen zwischen den Möglichkeiten zunächst keine Unterschiede. Eine Verwaltungseinheit ist in der GUI (Entra ID) sichtbar, ein Verwaltungsbereich kann nur mittels PowerShell angezeigt werden.
# Kanonischen Namen für Gruppe ermitteln
$CN = (Get-Group -Identity $GroupName).DistinguishedName
# Vrwaltungsbereich erstellen
$ManagementScopeName = Read-Host 'Please provide name for management scope'
New-ManagementScope -Name $ManagementScopeName -RecipientRestrictionFilter "MemberOfGroup -eq '$CN'"
Der Name des Verwaltungsbereichs wird in einer Variable gespeichert, da dieser für die weiteren Schritte benötigt wird.
Erstellung eines Dienstprinzipals
Um die App-Registrierung mittels einer Rollenzuweisung in Exchange Online berechtigen zu können, muss ein Dienstprinzipal erstellt werden. Exchange Online kann nicht direkt auf Dienstprinzipale in Entra ID zugreifen, so dass ein weiteres Prinzipal als “Verweis” benötigt wird.
Für die Erstellung werden die Applikations-ID und die Objekt-ID der Unternehmens-Anwendung aus Entra ID benötigt (NICHT der App-Registrierung, diese zeigt andere Werte an!; jede App-Registrierung existiert auch als Unternehmensanwendung).
Hierfür werden die in den Variablen gespeicherten Daten verwendet.
# Referenz-Dienstprinzipal erstellen
New-ServicePrincipal -AppId $AppId -ObjectId $ObjectId -DisplayName $AppName
Erstellung einer Rollenzuweisung
Als letztes muss das Referenz-Dienstprinzipal dem Verwaltungsbereich zugewiesen und mit den notwendigen Berechtigungen versehen werden. Die verfügbaren Berechtigungen sind im Artikel aufgeführt: Rollenbasierte Access Control für Anwendungen in Exchange Online | Microsoft Learn
# Benötigte Rolle(n) auswählen
$Roles = Get-ManagementRole | Where-Object {$_.Name -like 'Application *'} | `
Out-GridView -Title 'Please select role(s)' -OutputMode:Multiple
# Verwaltungsrollenzuweisung für alle ausgewählten Rollen erstellen
ForEach ($Role in $Roles){New-ManagementRoleAssignment -App $ObjectId `
-Role $Role.Name -CustomResourceScope $ManagementScopeName}
Funktionstest
Mithilfe des folgenden Befehls kann getestet werden, ob die Einrichtung korrekt durchgeführt wurde:
# Create management role assignment
ForEach ($Member in $DGMembers){Test-ServicePrincipalAuthorization -Resource $Member.PrimarySmtpAddress `
-Identity $AppName | Format-Table}
Migration von Applikationszugriffsrichtlinie zu App RBAC
Das Verfahren zur Migration von einer bestehenden Applikationszugriffsrichtlinie zum neuen App-RBAC-Modell wird im offiziellen Artikel beschrieben:
Rollenbasierte Access Control für Anwendungen in Exchange Online | Microsoft Learn
Die Schritte sind zusammengefasst wie folgt:
Aufbau der RBAC-Rolle gemäß den o.g. Schritten (Weiterverwendung der existierenden Gruppe)
Funktionstest
Entfernung der Berechtigungen aus der App-Registrierung in Entra ID
Entfernung der Applikationszugriffsrichtlinie:
# Zu Exchange Online verbinden
Connect-ExchangeOnline -ShowBanner:$False `
-Command Get-ApplicationAccessPolicy,Remove-ApplicationAccessPolicy
# Zu entfernende Richtlinie auswählen
$Selection = (Get-ApplicationAccessPolicy | Out-GridView `
'Bitte zu entfernende Richtlinie auswählen' -OutputMode:Single).Identity
# Richtlinie entfernen
Remove-ApplicationAccessPolicy -Identity $Identity