Microsoft 365 Default Rechte

Jeder Administrator weiß, dass ein Domain Benutzer umfangreiche Lese-Rechte im lokalen Active Directory hat, bis zu 10 Computer in die Domäne aufnehmen kann und Daten umfangreich exportieren kann. Auf dieser Seite beschreibe ich die "Default Berechtigungen" eines "normalen" Office 365 Benutzern oder auch "Gast"-Benutzer in einem Office 365 Tenant.

Wussten sie, dass jeder AzureAD-Benutzer eine Liste aller Benutzer, Gruppen, Geräte, Lizenzen und mehr einfach so generieren kann? Die Admin-Portals sind zwar per Default nicht erreichbar aber per PowerShell ist es ganz einfach. Ein Blick hinter die Default Rechte im AzureAD

Administrative Rollen: On-Premises

Wer im Active Directory, AzureAD, Office365, Microsoft 365 u.a. Dienste etwas sehen oder verwalten will, benötigt die erforderlichen Berechtigungen. Die Windows Administratoren kennen aus ihrem lokalen Active Directory umfangreiche "Standard Rollen", die als Sicherheitsgruppe ausgeführt sind.

Auch ADSync, Exchange, Skype for Business etc addieren neue Sicherheitsgruppen, die mit Rechten versehen werden. So können Administratoren einfach die gewünschten Admin-Konten in die Gruppen aufnehmen und ersparen sich die Vergabe individueller Berechtigungen. Allerdings sind die Rollen-Gruppen vordefiniert und wenn Sie eigene abweichende Rollen benötigen, dann müssen Sie doch wieder selbst ran.

Rollen in Microsoft 365 und AzureAD

Auch in der Cloud gibt es vordefinierte Rollen. Sie finden Sie im Microsoft 365 Admin Center und im Azure Portal

Am 22. Jan 2021 habe ich allein in meinem Tenant folgende 63 RoleGroups gefunden:

Application administrator, Application developer, Attack payload author, Attack simulation administrator, Authentication administrator, Azure DevOps administrator, Azure Information Protection administrator, B2C IEF Keyset administrator, B2C IEF Policy administrator, Billing administrator, Cloud application administrator, Cloud device administrator, Compliance administrator, Compliance data administrator, Conditional Access administrator, Customer LockBox access approver, Desktop Analytics administrator, Directory readers, Directory writers, Dynamics 365 administrator, Exchange administrator, External ID user flow administrator, External ID user flow attribute administrator, External Identity Provider administrator, Global administrator, Global reader, Groups administrator, Guest inviter, Helpdesk administrator, Hybrid identity administrator, Insights administrator, Insights business leader, Intune administrator, Kaizala administrator, License administrator, Message center privacy reader, Message center reader, Network administrator, Office apps administrator, Password administrator, Power BI administrator, Power platform administrator, Printer administrator, Printer technician, Privileged authentication administrator, Privileged role administrator, Reports reader, Search administrator, Search editor, Security administrator, Security operator, Security reader, Service support administrator, SharePoint administrator, Skype for Business administrator, Teams Communications Administrator, Teams Communications Support Engineer, Teams Communications Support Specialist, Teams Devices Administrator, Teams Service Administrator, UpdateClientCert, Usage summary reports reader, User administrator
Quelle: https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RolesAndAdministrators

Im Microsoft 365 Portal werden wird eine Teilmenge davon angezeigt.

Message Center öffnet die Tür

Normale Anwender sind in der Regel in keiner dieser Role Groups und ein Gegenstück u "Domain User" oder "Domain Guest" aus dem lokalen Active Directory gibt es anscheinend nicht. Aber es gibt durchaus Standardrechte, wie ich bei der Arbeit um das Message Center festgestellt habe. Ich wollte, dass bestimme Personen aus einer Firma auch das Microsoft 365 MessageCenter unter https://admin.microsoft.com/#/MessageCenter öffnen können. Sehr schnell ist meine Wahl auf eine genau passende RoleGroup im AzureAD gefallen:

Ich habe die Berechtigung einen Benutzer zugewiesen und ihn auf die URL https://admin.microsoft.com/#/MessageCenter verwiesen. Er konnte das Message Center wie erwartet einsehen. Unerwartet war aber, dass er noch viel mehr Informationen einsehen konnte.

Das ist deutlich mehr, als ich erwartet hätte und auf jeden Fall nicht meine Intention. Bei Microsoft steht in der Anleitung:

Users in this role can monitor notifications and advisory health updates in Message center for their organization on configured services such as Exchange, Intune, and Microsoft Teams. Message Center Readers receive weekly email digests of posts, updates, and can share message center posts in Microsoft 365. In Azure AD, users assigned to this role will only have read-only access on Azure AD services such as users and groups. This role has no access to view, create, or manage support tickets.
Quelle: https://docs.microsoft.com/de-de/azure/active-directory/roles/permissions-reference#compliance-administrator-permissions

Hier wird zumindest auf die "Read"-Rechte auf Benutzer und Gruppen hingewiesen. Aber das beschreibt nur eine kleine Teilmenge.

Natürlich kann auch ein Domain Benutzer über LDAP im lokalen Active Directory sogar noch mehr Informationen über Benutzer und Gruppen auslesen.

Aber ein "Message Center Reader" muss nicht wirklich wissen, welche Cloud-Lizenzen welcher Benutzer hat oder welche globalen Organisationseinstellungen gerade aktiv sind. Da wollte ich dann schon mal wissen, was ein Benutzer denn noch so alles sehen darf.

Auf der Seite O365 Message Center beschreibe ich die Benutzung des Message Center und insbesondere die Funktion, die Informationen als Admin in einen "Planner" zu replizieren. So können auch  berechtigte Personen die Änderungen als Task nicht nur gefahrlos lesen sondern auch als Aufgaben untereinander zuweisen und nachverfolgen.

Default Rechte für Benutzer

Die Antwort auf meine Frage lag nur wenige Mausklicks entfernt. Über die Anzeige der Berechtigungen zum "Message Center Reader" sehen Sie alle weiteren Berechtigungen:

Unter den beiden Einträgen für die "Role permission" kommt eine sehr lange Liste mit den "basic read permissions".

Wenn Sie diese Rolle einem Gast oder Service Principal zuweisen, bekommt das Objekt auch die Rechte, die jeder normale Anwender sowieso auch hat.

Die Liste ist sehr umfangreich und ich gebe hier den Stand vom 22. Jan 2021 eines Standard EU-Tenant wieder:

Role Permission Description

microsoft.directory/administrativeUnits/standard/read

Read basic properties on administrativeUnits in Azure Active Directory.

microsoft.directory/administrativeUnits/members/read

Read administrativeUnits.members property in Azure Active Directory.

microsoft.directory/applications/standard/read

Read standard properties of applications.

microsoft.directory/applications/owners/read

Read owners on all types of applications.

microsoft.directory/applications/policies/read

Read applications.policies property in Azure Active Directory.

microsoft.directory/contacts/standard/read

Read basic properties on contacts in Azure Active Directory.

microsoft.directory/contacts/memberOf/read

Read contacts.memberOf property in Azure Active Directory.

microsoft.directory/contracts/standard/read

Read basic properties on contracts in Azure Active Directory.

microsoft.directory/devices/standard/read

Read basic properties on devices in Azure Active Directory.

microsoft.directory/devices/memberOf/read

Read devices.memberOf property in Azure Active Directory.

microsoft.directory/devices/registeredOwners/read

Read devices.registeredOwners property in Azure Active Directory.

microsoft.directory/devices/registeredUsers/read

Read devices.registeredUsers property in Azure Active Directory.

microsoft.directory/directoryRoles/standard/read

Read basic properties on directoryRoles in Azure Active Directory.

microsoft.directory/directoryRoles/eligibleMembers/read

Read directoryRoles.eligibleMembers property in Azure Active Directory.

microsoft.directory/directoryRoles/members/read

Read directoryRoles.members property in Azure Active Directory.

microsoft.directory/domains/standard/read

Read basic properties on domains in Azure Active Directory.

microsoft.directory/groups/standard/read

Read standard properties of Security groups and Microsoft 365 groups, including role-assignable groups.

microsoft.directory/groups/appRoleAssignments/read

microsoft.directory/groups/appRoleAssignments/read Read appRoleAssignments property in Azure Active Directory.

microsoft.directory/groups/memberOf/read

Read memberOf property of Security groups and Microsoft 365 groups, including role-assignable groups.

microsoft.directory/groups/members/read

Read members property of Security groups and Microsoft 365 groups, including role-assignable groups.

microsoft.directory/groups/owners/read

Read owners property of Security groups and Microsoft 365 groups, including role-assignable groups.

microsoft.directory/groups/settings/read

Read groups.settings property in Azure Active Directory.

microsoft.directory/groupSettings/standard/read

Read basic properties on groupSettings in Azure Active Directory.

microsoft.directory/groupSettingTemplates/standard/read

Read basic properties on groupSettingTemplates in Azure Active Directory.

microsoft.directory/oAuth2PermissionGrants/standard/read

Read basic properties on oAuth2PermissionGrants in Azure Active Directory.

microsoft.directory/organization/standard/read

Read basic properties on organization in Azure Active Directory.

microsoft.directory/organization/trustedCAsForPasswordlessAuth/read

Read organization.trustedCAsForPasswordlessAuth property in Azure Active Directory.

microsoft.directory/applicationPolicies/standard/read

Read standard properties of application policies.

microsoft.directory/roleAssignments/standard/read

Read basic properties on roleAssignments in Azure Active Directory.

microsoft.directory/roleDefinitions/standard/read

Read basic properties on roleDefinitions in Azure Active Directory.

microsoft.directory/servicePrincipals/appRoleAssignedTo/read

Read service principal role assignments.

microsoft.directory/servicePrincipals/appRoleAssignments/read

Read role assignments assigned to service principals.

microsoft.directory/servicePrincipals/standard/read

Read standard properties of service principals.

microsoft.directory/servicePrincipals/memberOf/read

Read servicePrincipals.memberOf property in Azure Active Directory.

microsoft.directory/servicePrincipals/oAuth2PermissionGrants/read

Read delegated permission grants on service principals.

microsoft.directory/servicePrincipals/owners/read

Read owners on service principals.

microsoft.directory/servicePrincipals/ownedObjects/read

Read servicePrincipals.ownedObjects property in Azure Active Directory.

microsoft.directory/servicePrincipals/policies/read

Read policies on service principals.

microsoft.directory/subscribedSkus/standard/read

Read basic properties on subscribedSkus in Azure Active Directory.

microsoft.directory/users/standard/read

Read basic properties on users in Azure Active Directory.

microsoft.directory/users/appRoleAssignments/read

Read users.appRoleAssignments property in Azure Active Directory.

microsoft.directory/users/directReports/read

Read users.directReports property in Azure Active Directory.

microsoft.directory/users/manager/read

Read users.manager property in Azure Active Directory.

microsoft.directory/users/memberOf/read

Read users.memberOf property in Azure Active Directory.

microsoft.directory/users/oAuth2PermissionGrants/read

Read delegated permission grants on users.

microsoft.directory/users/ownedDevices/read

Read users.ownedDevices property in Azure Active Directory.

microsoft.directory/users/ownedObjects/read

Read users.ownedObjects property in Azure Active Directory.

microsoft.directory/users/registeredDevices/read

Read users.registeredDevices property in Azure Active Directory.

Ich kann mir aktuell keinen Reim drauf machen, warum normale Anwender oder sogar Gäste solch umfangreiche Berechtigungen haben sollten. Es ist zwar "nur" ein Read-Recht und die meisten Benutzer kommen allein mit diesen Berechtigungen nicht an die beiden Admin-Portale heran. Aber das ist doch kein echter Schutz, denn es kann doch durchaus "erwartet" sein, dass auch ein normales Konto über Rollenzuweisungen ausgewählte Leserechte bekommt.

Zumindest erwarte ich nicht, dass ein Anwender mit "Message Center Reader" über das Portal gleich alle anderen Dinge ganz einfach per Mail einsehen kann.

AzureAD per PowerShell?

Ich habe dann einen "normalen Anwender" genutzt, der nie Administrator war und sicher 100% "Standard" ist. Nach der Installation der Microsoft Online PowerShell konnte ich mich problemlos am Tenant als Benutzer anmelden. Die zur Verfügung stehenden Commandlets entsprachen den Berechtigungen. ich konnte mit...

  • Get-MsolAccountSku die Lizenzen und Anzahl ermitteln.
  • Get-MsolRole und Get-MsolRoleMember die Adminrollen und zugewiesenen Benutzer auslesen
  • Get-MsolDevice -ALL eine Liste aller Geräte und deren grundlegenden Eigenschaften ermitteln
  • Get-MsolAdministrativeUnit und Get-MsolAdministrativeUnitMember die AdminOUs einsehen
  • Get-MsolCompanyInformation die Firmendaten samt Kontaktnummer des Administrators, Dienstkonto des DirSync-Kontos u.a.auslesen
  • Get-MsolContact eine Liste aller Kontakte generieren
  • Get-MsolPartnerContract liefert eine Liste der TenantIDs, bei denen mein Tenant als Partner/Admin hinterlegt ist
  • Get-MsolDirSyncProvisioningError und Get-MsolHasObjectsWithDirSyncProvisioningErrors zeigen den Status des DirSync an
  • Get-MsolCompanyAllowedDataLocation wurde aber mit "No Permission" quittiert.

Das ist ganz schön viel und zeigt mir, dass diese Informationen nicht nur per Browser über das Webportal erreichbar sind, und auch nicht von einer Rolle wie "Message Center Reader" anhängig sind, um diese Daten zu erhalten. Sie brauchen einfach nur ein gültiges Office 365 Konto.

Das öffnet natürlich die Tür, wenn nur ein Benutzer seine Zugangsdaten "verliert" und damit eine nicht berechtigte Person von überall in der Welt diese Daten auslesen kann. Aus meiner Sicht ist das ein weiterer Grund, über AzureAD P1 nachzudenken und den Zugang zu bestimmten Schnittstellen auf bekannte Endgeräte und Benutzer zu beschränken.

Exchange Online

Nun war ich natürlich neugierig geworden und habe mich mit meinem "normalen Userkonto" auch an die anderen Online-Dienste verbunden.

PS C:\> Connect-ExchangeOnline

PS C:\> get-mailbox

Name                Alias           Database                  ProhibitSendQuota
----                -----           --------                  -----------------
Carius, Frank       fc              EURPR04DG045-db080        99 GB (106,300,44...

PS C:\> Get-MobileDevice | ft Friendlyname,DeviceOS,ismanaged,iscompliant

FriendlyName               DeviceOS         IsManaged IsCompliant
------------               --------         --------- -----------
                           iOS 14.3             False       False
iPhone 11                  iOS 14.4 18D52       False       False
iPhone SE (1st generation) iOS 13.5.1 17F80     False       False

Ich kann mich per Default mit der PowerShell verbinden und sogar Commandlets aufrufen. Allerdings beziehen sie die meisten Commandlets nur auf mein eigenes Konto. Ich sehe also keine Daten zu anderen Postfächern oder anderen Mobilgeräten. Allerdings kann ich eine komplette Liste der Empfänger abrufen

PS C:\> Get-Recipient| group recipienttypedetails -NoElement

Count Name
----- ----
  3171 UserMailbox
   119 MailUniversalSecurityG...
   334 MailUniversalDistribut...
  1174 GroupMailbox
    13 PublicFolder
   121 SharedMailbox
   221 MailUser
    89 RoomMailbox
    23 TeamMailbox
   329 MailContact
    12 SchedulingMailbox
     2 RoomList

Ein "Sicherheitsloch" würde ich das nicht bezeichnen, denn im lokalen Active Directory kann ich das per LDAP auch und über die OutlookAPI kann ich ja auch das Adressbuch auslesen. Allerdings kann ich so auch "unsichtbare" Empfänger ermitteln. Auch die Ausgabe der Daten als "Objekt" macht es natürlich sehr viel einfacher. Die meisten Eigenschaften kann ich nicht schreiben:

PS C:\> set-mailbox fcarius -DisplayName "FC"
Ein Azure Active Directory-Aufruf wurde ausgeführt, um die Synchronisierung eines Objekts zwischen Azure Active
Directory und Exchange Online aufrechtzuerhalten. Dabei ist jedoch ein Fehler aufgetreten. Detaillierte Fehlermeldung:
        Unable to update the specified properties for On-Premises mastered Directory Sync objects or objects currently
undergoing migration.

Auf der anderen Seite gibt es bei Set-CASMailbox schon die ein oder andere Überraschung.

PS C:> get-casmailbox fc

Name                ActiveSyncEnabled OWAEnabled PopEnabled ImapEnabled MapiEnabled SmtpClientAuthenticationDisabled
----                ----------------- ---------- ---------- ----------- ----------- --------------------------------
Carius, Frank       True              True       True       True        True

PS C:\> get-casmailbox fc | fl PopSuppressReadReceipt

PopSuppressReadReceipt : False

PS C:\> set-casmailbox fc -PopSuppressReadReceipt:$true
PS C:\> get-casmailbox fc | fl PopSuppressReadReceipt

PopSuppressReadReceipt : True

PS C:\> set-casmailbox fc -PopSuppressReadReceipt:$false

PopSuppressReadReceipt : False

Das hat mich dann schon etwas überrascht, dass ich wenige, aber nicht alle, CAS-Einstellungen meiner Mailbox so anpassen kann. Auch Auswertungen kann ich als Anwender auf mein eigenes Postfach anstellen.

PS C:\> Get-MailboxFolder -Recurse | ft folderpath

FolderPath
----------
{}
{Archiv}
{Aufgaben}
{Aufgezeichnete Unterhaltungen}
{Entwürfe}
{Gelöschte Elemente}
{Gesendete Elemente}
{Journal}
{Junk-E-Mail}
{Kalender}
{Kontakte}
{Notizen}
{Posteingang}
{Posteingang, _Beispiele}
{Posteingang, _Beispiele, NDR-Archiv}
{Posteingang, _Beispiele, OCS/UM}
{Posteingang, _Beispiele, Phishing/Spam/Virus}

Auch die Funktion "Get-MailboxFolderPermissions" ist möglich aber nicht "Get-MailboxFolderStatistics". Aber ich konnte Rechte in meinem Postfach berichten und aufräumen.

PS C:\> get-mailboxfolder -Recurse | Get-MailboxFolderPermission -User "otheruser@msxfaq.de"

PS C:\>  get-mailboxfolder -Recurse | % {Remove-MailboxFolderPermission -identity $_.identity -User "otheruser@msxfaq.de" -Confirm:$false}

Aber das ist natürlich nicht der Regelfall.

Das eröffnet natürlich diversen 3rd Party Tools, z.B. als Anwender ausführlichere Reports zu generieren.

Tipp: Als Administrator können Sie bei den Benutzern den Zugriff per PowerShell unterbinden. Das geht per Conditional Access (Azure AD P1)

Teams, SharePoint, OneDrive, Graph u.a.

Die weiteren PowerShell-Schnittstellen habe ich noch nicht weiter untersucht.

Zugang per Gast?

In der Beschreibung von Microsoft steht auch, dass die Rechte sogar "Gastbenutzern" offen stehen.

Also habe ich eine weitere PowerShell gestartet und versucht, mich an einem anderen Tenant mit meinem Gastkonto anzumeldeb. Der Anmeldename als Gast in einem anderen Tenant ist ja vom Aufbau her einfach zu ermitteln.

userpart_domainpart#EXT#@tenantdomain.onmicrosoft.com

Ein einfacher "Connect-MsolService" war mit diesem Benutzername aber nicht möglich. Im Zieltenant wurde das auch protokolliert:

Die Cloud hat also schon den Gastbenutzer mit dem übermittelten Benutzernamen erkannt und dem Tenant zugeordnet. Allerdings wurde das Kennwort nicht akzeptiert, obwohl es nachweislich korrekt war.

Insofern kann ich zumindest nicht per PowerShell als Gast so einfach in einem anderen Tenant wildern.
Es kann aber schon sein, dass eine andere Schnittstelle hier kooperativer ist. Das wäre noch einmal nachzustellen, welche Rechte ein Gast im Tenant tatsächlich ausüben kann.

Allerdings möchte ich in dem Zuge noch auf eine weitere Einstellungen zu Gästen und AzureAD hinweisen. Unter der URL "https://portal.azure.com/#blade/Microsoft_AAD_IAM/UsersManagementMenuBlade/UserSettings" können Sie weitere Einschränkungen aktivieren.

Der erste "Learn More"-Links verweist auf:

Dort steht dann:

Guest users are set to a limited permission level by default in Azure AD, while the default for member users is the full set of default user permissions:
Quelle https://docs.microsoft.com/en-us/azure/active-directory/enterprise-users/users-restrict-guest-permissions

Eine weitere Quelle beschreibt

Guest users have restricted directory permissions. They can manage their own profile, change their own password and retrieve some information about other users, groups and apps, however, they cannot read all directory information. For example, guest users cannot enumerate the list of all users, groups and other directory objects...
Quelle: https://docs.microsoft.com/en-us/azure/active-directory/fundamentals/users-default-permissions

Das ist aber noch keine Aussage, warum meine Anmeldung per PowerShell überhaupt nicht funktioniert hat und ob es vielleicht andere APIs wie z.B. die Graph API gibt, die hier doch einen Zugriff erlaubt.

Weitere Link