Ein Leser dieser Seite fragte, ob es möglich ist, dass bestimmte Benutzer für die Organisation Kontakte anlegen und verwalten können. Mit wenig Aufwand lässt sich dazu eine eigene RBAC (Role Based Access Control) Rolle verwenden. Eine entsprechende Rolle, welche nur Kontakte in einer bestimmten Organisationseinheit erstellen und bearbeiten kann, lässt sich mit wenig Aufwand erstellen. Mitglieder der Rolle können dann via Exchange Admin Center Kontakte verwalten.
Damit das Erstellen und Verwalten von Kontakten delegiert werden kann, müssen zunächst zwei neue Management Rollen erstellt werden. Die neuen Management Rollen basieren dabei auf den schon vorhanden Rollen (in diesem Fall „Mail Recipients“ und „Mail Recipient Creation“:
New-ManagementRole -Parent "Mail Recipients" -Name Contacts
New-ManagementRole -Parent "Mail Recipient Creation" -Name ContactCreation
Aus den neu angelegten Management Rollen werden nun alle Befehle entfernt, die nicht für das Anlegen von Kontakten erforderlich sind, dies geschieht mit den folgenden beiden Befehlen:
Get-ManagementRoleEntry -Identity "Contacts\*" | where {$_.Name -notlike "*MailContact"} | Remove-ManagementRoleEntry -confirm:$false
Get-ManagementRoleEntry -Identity "ContactCreation\*" | where {$_.Name -notlike "*MailContact"} | Remove-ManagementRoleEntry -confirm:$false
Die beiden oberen Befehle haben aus den neuen Managemant Rollen alle Befehle entfernt, welche nicht „MailContact“ im Namen haben. Für das Erstellen und Verwalten von Kontakten werden allerdings noch weitere Befehle benötigt. Die weiteren nötigen Befehle müssen daher wieder hinzugefügt werden:
Add-ManagementRoleEntry -Identity "Contacts\Get-User"
Add-ManagementRoleEntry -Identity "Contacts\Get-Recipient"
Add-ManagementRoleEntry -Identity "Contacts\Set-Contact"
Add-ManagementRoleEntry -Identity "Contacts\Get-Contact"
Add-ManagementRoleEntry -Identity "ContactCreation\Get-OrganizationalUnit"
Add-ManagementRoleEntry -Identity "ContactCreation\Get-User"
Add-ManagementRoleEntry -Identity "ContactCreation\Get-Recipient"
Die beiden Management Rollen sind nun fertig. Im Active Directory kann nun eine neue Organisationseinheit für die Kontakte angelegt werden, die Benutzer erhalten später nur die Berechtigung innerhalb dieser Organisationseinheit Kontakte zu erstellen:
Im Exchange Admin Center wird jetzt eine neue Administratorrolle angelegt:
Die neue Administratorrolle bekommt nun den Namen „Contact Management“, der Schreibbereich wird erst nach dem Speichern der Rolle eingetragen (es kommt sonst zu einer Fehlermeldung). Des weiteren werden die zuvor angelegten Management Rollen hinzugefügt und die Mitglieder der Administrator Rolle festgelegt:
Nachdem die Administrator Rolle gespeichert wurde, lässt sich auch der Schreibbereich anpassen. Hier kann nun der Canonical Name der Organisationseinheit eingetragen werden:
Das Eintragen der Organisationseinheit verhindert das Kontakte in anderen Organisationseinheiten angelegt werden können:
Mitglieder der Administratorrolle „Contact Management“ können sich jetzt am Exchange Admin Center anmelden und haben nur noch die Berechtigung Kontakte anzulegen und zu bearbeiten:
Es sind nur wenige Angaben erforderlich um einen neuen Kontakt zu erstellen, mit einer kleinen Einweisung sollte dies kein Problem darstellen. Mitglieder der Rolle müssen allerdings immer den Alias und die Organisationseinheit auswählen. Wird die Organisationseinheit frei gelassen oder eine OU ausserhalb des Schreibbereichs ausgewählt, kommt es zu einer Fehlermeldung:
Wenn gewünscht, kann noch eine neue Adressliste erstellt werden, welche die neuen Kontakte enthält:
Hallo,
ich habe das mit Exchange online versucht und bekomme bei „Get-ManagementRoleEntry -Identity „Contacts\*“ | where {$_.Name -notlike „*MailContact“} | Remove-ManagementRoleEntry -confirm:$false“
folgenden Fehler
Write-ErrorMessage : Cannot process argument transformation on parameter ‚Identity‘. Cannot convert value „Contacts“ to type
„Microsoft.Exchange.Configuration.Tasks.RoleEntryIdParameter“. Error: „Das Format des in den Parameter
Microsoft.Exchange.Configuration.Tasks.RoleEntryIdParameter eingegebenen Werts ist ungültig. Prüfen Sie den Wert, und versuchen Sie
es erneut.
Parameter name: identity“
In C:\Users\RRo\AppData\Local\Temp\tmpEXO_01qgvmyh.5dr\tmpEXO_01qgvmyh.5dr.psm1:1190 Zeichen:13
+ Write-ErrorMessage $ErrorObject
Wir haben eine hybride Umgebung, d.h. Exchange Online ist ebenfalls beteiligt, somit musste der Befehl umgebaut werden:
Get-ManagementRoleEntry „Contacts\*“ | where {$_.Name -notlike ‚*MailContact‘} | foreach {Remove-ManagementRoleEntry -Identity „$($_.id)\$($_.name)“ -confirm:$false}
siehe dazu auch „Beispiel 2“ hier:
https://learn.microsoft.com/de-de/powershell/module/exchange/remove-managementroleentry?view=exchange-ps#beispiel-2
Hallo Frank,
vielen Dank für diese hilfreiche Anleitung. Nun möchte ich, dass die eingeschränkten User auch die Adresslisten anlegen und die Kontakte und Exchange-User den Adresslisten hinzufügen können. Welche ManagementRoleEntry muss ich dafür den 2 Gruppen noch zuweisen?
Viele Grüße
Michael
Servus,
gibt es auch die Möglichkeit, der Rolle noch die Berechtigung zu geben, Gruppen zu erstellen/bearbeiten?
Gruß Oli
Grundsätzlich ja, aber da gibts halt keine ous. ;)
Hallo Frank,
Coole Lösung. Funktioniert das auch mit Exchange Online?
Viele Grüße