Teams Datenablage

Wussten sie schon, dass Microsoft Teams selbst gar keine eigene Datenbank zum Speichern hat, sondern eigentlich nur die vorhandenen Dienste von AzureAD, Exchange Online, SharePoint Online nutzt? Nur für den Präsenzstatus und die Meetings gibt es neue Infrastrukturen, die diese temporären Daten bereithalten. Daher hat mich interessiert, wo die Daten tatsächlich liegen und wie Teams darauf zugreift.

Quellen bei Microsoft

Ehe ich mich an eine Seite mache, schaue ich schon herum, welche Informationen öffentlich sind und ob sich der Aufwand lohnt. Ich habe dazu auch zwei PowerPoint-Folien gefunden. Beide Folien zeigen die verschiedenen Komponenten, die irgendwie damit zusammenhängen.


Quelle Foundations of Microsoft Teams  https://www.youtube.com/watch?v=xJBvJTDiQqg


Quelle Foundations of Microsoft Teams  https://www.youtube.com/watch?v=xJBvJTDiQqg


Quelle: Net at Work

Aber eine klare Aussage, welche Daten nun wo liegen, konnte ich da noch nicht auslesen. Also habe ich mich selbst auf die Suche gemacht.

Analyse

Ich habe mir daher den Teams Client genauer angeschaut und die Kommunikation mit Fiddler analysiert. Anders als Skype for Business,, wo der Client sich mit Exchange, Skype, Outlook u.a. Diensten verbindet, nutzt Teams einen anderen Weg: Der Teams Client (Windows, Mobile, Web) spricht mit wenigen Ausnahmen nur mit seinem Teams Service, der dann auf die Daten in anderen Quellen zugreift. Das macht es für einen Entwickler des Clients deutlich einfacher, wenn er nur eine Schnittstelle und eine Authentifizierung bedienen muss. Da die ganze "komplizierte Logik" im Service ist, kann Microsoft hier natürlich auch viel einfacher das Verhalten optimieren.

Achtung: Das Bild ist nicht ganz korrekt. Einige Zugriffe des Clients gehen an der Teams Middleware vorbei direkt zu SharePoint Online/OneDrive Business. Auch 3rd-Party Apps gehen am Teams Backend vorbei zu ihren eigenen Diensten

Ich habe daher auf meinem Client zuerst einmal per Fiddler dem Teams-Client auf die Finger geschaut und habe eigentlich erwartet, dass er einzig zur URL teams.microsoft.com geht. So konnte ich recht gut erkennen, welchen "Backend" der Teams Client nutzt. Hier zuerst eine tabellarische Übersicht, zu der ich dann weitere Abschnitte je Datenbereich beschreibe:

Daten Zugriff Ablageort

Identity und Authentifizierung

Teams Backend

AzureAD, TeamsAD

Präsenzstatus

Teams Backend

Azure-Blob, SfB/Azure Personendokument

Buddy-Liste/ Kontakte

Teams Backend

Exchange Postfach des Benutzers

1:1 Chats,
individuell geplante Meetingchats

Teams Backend

Persönliches Postfach, Exchange Mailbox beim User, CosmosDB, wenn Benutzer keine Exchange Online Lizenz hat.

1:1 Dateien

OneDrive

Persönliches OneDrive

https://netatwork-my.sharepoint.com/personal/frank_carius_netatwork_de/Documents/Microsoft%20Teams-Chatdateien/dateiname

Team

SharePoint

SharePoint Site

https://netatwork.sharepoint.com/sites/T-NAWModernWorkplace/Shared%20Documents/General

Channel Chat

Teams Backend

Office Groups

Channel Wiki

SharePoint

SharePoint Site des Team

Channel Dateien/OneNote

SharePoint

SharePoint Site des Team

Channel Whiteboard

SharePoint

SharePoint Site des Team

Channel Webseiten

Direkt

Webseite

Meeting Recording

OnDrive
SharePoint

Früher Streams, nun OneDrive bei individuellen Meetings oder das Teams-Onedrive

Konferenz MCU

Teams MCU

Die MCU leitet eingehende Pakete direkt an die Konferenzteilnehmer weiter. Hier gibt es ausnahmsweise keinen Speicher

Voice Mail

Exchange Online

Exchange Postfach des Anwenders über eine Beta API Siehe Teams Voicemail

Missed Call Meldung

Teams Backend

Exchange Postfach des Anwenders über eine Beta API Siehe Teams Voicemail

Sie sehen schon ,dass Teams selbst eigentlich nur einen kleinen Bereich in einem eigenen Speicher ablegt und für die große Menge der Daten sich SharePoint Bibliotheken und Exchange Gruppenpostfächer und Exchange Benutzerpostfächern bedient. Das macht aber auch Sinn, da beide Plattform bewährt und skalierbar sind und auch vorhandene Lösungen für Compliance, Reporting etc. mit genutzt werden.

Die meiste Kommunikation geht dabei über das Teams Backend unter "teams.microsoft.com". Damit unterscheidet sich Teams von Skype for Business und anderen Produkten, die auf dem Client die Daten zusammenführen. Das macht es auf dem Client viel einfacher. Skype for Business hat sich ja per SIP, EWS, MAPI, RTP, HTTP mit unterschiedlichen Backend-Systemen verbunden.

Eine gute Quelle ist dabei auf die Seite Informationen zur Aufbewahrung für Microsoft Teams https://docs.microsoft.com/de-de/microsoft-365/compliance/retention-policies-teams?view=o365-worldwide

Teams verwendet einen Azure-unterstützten Chatdienst als primären Speicher für alle Nachrichten (Chats und Kanalnachrichten).
...
Daten von Teams-Chats werden in einem verborgenen Ordner im Postfach jedes Benutzers gespeichert, der am Chat teilnimmt. Ein ähnlicher verborgener Ordner im Gruppenpostfach wird für Teams-Kanalnachrichten genutzt. Diese ausgeblendeten Ordner sind nicht für den direkten Zugriff von Benutzern oder Administratoren gedacht, ...
...
UserMailbox: In diesen Postfächern werden Nachrichtendaten für cloudbasierte Teams-Benutzer gespeichert.
MailUser: In diesen Postfächern werden Nachrichtendaten für lokale Teams-Benutzer gespeichert.
GroupMailbox: In diesen Postfächern werden Nachrichtendaten für Teams-Kanäle gespeichert.
...
Teams verwendet einen Azure-unterstützten Chatdienst als primären Speicher für alle Nachrichten (Chats und Kanalnachrichten). Wenn Sie aus Compliance-Gründen Teams-Nachrichten löschen müssen, können Aufbewahrungsrichtlinien für Teams die Nachrichten nach einem bestimmten Zeitraum löschen, je nachdem, wann sie erstellt wurden. Nachrichten werden dann sowohl aus den Exchange-Postfächern, in denen sie für Compliancevorgänge gespeichert wurden, als auch aus dem primären Speicher gelöscht, der vom zugrunde liegenden Azure-unterstützten Chatdienst verwendet wird.

Allerdings ist das Bild so nicht ganz korrekt, denn in Teams können ja durchaus noch andere Quellen eingebunden werden, die dann von Client direkt angesprochen werden, z.B. externe Webseiten etc.

Identity und Authentifizierung

Jeder Teams Benutzer muss natürlich dem System bekannt sein, eine SIP-Adresse haben und sich anmelden können. Diese Funktion wird durch das klassische AzureAD bereit gestellt, in dem Sie als Administrator manuell oder besser noch per AADConnect die Personen verwalten.

Da Microsoft aber das AzureAD mit den Konten nicht noch mit weiteren Diensten überladen will, hat Teams genau wie Exchange Online noch ein eigenes Directory, in dem die Identitäten übertragen werden. Siehe dazu auch Azure AD - Ein Verzeichnisdienst, oder zwei oder mehr.

Allerdings wertet Teams fast keine Informationen aus ihrem lokalen Active Directory aus, da es lokal keine Schemaerweiterung für Teams bedarf und ADSync so auch nichts abgleichen kann. Das Provisioning muss daher direkt gegen AzureAD und Teams in der Cloud erfolgen.

1:1 Chat

Anders als bei Skype sind diese Unterhaltungen "beständig", d.h. bleiben erhalten und damit müssen Sie auch irgendwo gespeichert werden. Teams legt diese Informationen in einem versteckten Ordner im Postfach ab.

Wenn ein Anwender kein Exchange Online Postfach hat, bekommt er für Teams dennoch ein "verstecktes" Postfach nur für Teams. Teams legt die Informationen also nicht auf einem OnPremise Postfach ab.

1:1 Dateien

Wenn ich in dem Bereich auch mit Dateien arbeite, dann landen diese aber nicht im Postfach sondern in meinem persönlichen OneDrive, auf den auch andere Personen zugreifen können

Team Basis

Ein Team ist nur der Container für verschiedene Channels, in denen sich letztlich das Leben abspielt. Daher legt das Teams Backend für ein neu eingerichtete Team direkt eine eigenständige SharePoint Site im Tenant mit an. Zudem gibt es auch noch eine Group Mailbox in Exchange Online. Dies beiden Standspeicher sind für das Team die zentrale Ablage.

Team:Channel:Chat

Ein Team ist nur der Container für verschiedene Channels, in denen sich letztlich das Leben abspielt. Wenn Sie in einem Channel eine Unterhaltung führen, dann ist auch diese "persistent". Sie wird ein einer "Exchange Group Mailbox" abgelegt.

Team:Channel:Wiki, Dateien und OneNote

In jedem neuen Channel legt Teams auch immer eine Karteikarte "Wiki" und "Dateien" an. Diese Daten landen auch im SharePoint des Teams

Team:Meeting:Recording

Anwender können sowohl individuell ein persönliches Meeting starten als auch in einem Channel ein Meeting anberaumen. Ein klassischen Meeting dem Chat-Bereich vor allem aus Audio und Video-Übertragungen, Präsentationen und Desktop-Freigaben. Diese Informationen werden über SRTP als "Echtzeitdaten" übertragen und landen erst einmal nicht als Datei in einem Speicher. Nur die Chat-Nachrichten befinden Sie im normalen Chat-Bereich

Aber die Konferenzteilnehmer können bei entsprechender Berechtigung eine Aufzeichnung der Besprechung aktivieren. Anders als bei Skype for Business ist hier aber nicht ein Client für die Aufzeichnung zuständig, da dies bei einem Teams Client im Browser oder Mobil-Client gar nicht so einfach und erst recht nicht sinnvoll wäre. Das Teams Backend übernimmt in dem Zuge die Aufzeichnung und speichert die Daten dann in Office Streams. Die Information liegt also weder im OneDrive, der SharePoint Library oder dem Exchange Postfach. Im Chat-Verlauf wird aber die Aufzeichnung verlinkt.

Bei der Wiedergabe bezieht der Betrachter die Daten direkt vom Azure Media Netzwerk. Streams kümmert sich um all die Funktionen wie Vor/Zurück-Spulen, Anhalten etc.

Weitere Links