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

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.

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

Teams Backend

Persönliches Postfach, Exchange Mailbox beim User

1:1 Dateien

Teams Backend

Persönliches OneDrive

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

Team

Teams Backend

SharePoint Site

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

Channel Chat

Teams Backend

Office Groups

Channel Wiki

Teams Backend

SharePoint Site des Team

Channel Dateien/OneNote

Teams Backend

SharePoint Site des Team

Channel Webseiten

Direkt

Webseite

Meeting Recording

Teams Backend

Streams

Konferenz MCU

Teams Backend

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

Voice Mail

Teams Backend

Exchange Postfach des Anwenders

Missed Call Meldung

Teams Backend

Exchange Postfach des Anwenders

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.

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.

Desktop Client: Cache

Der Teams Client spricht aber nicht nur mit dem Server sondern nutzt auch einen lokalen Cache. Anders als bei Unterwegs mit Outlook: Offline und Replikation, haben Sie als Anwender aber keinen direkten Einfluss auf diesen Cache. Der Teams Client replizierte Informationen, die aus seiner Sicht "sinnvoll" sind. Er weiß ja, in welchem Teams und Channel sie unterwegs sind und holt die entsprechenden Informationen schon vorab und löscht sie auch nicht gleich wieder. So kann der Teams Client sogar "offline" arbeiten und höhere Latenzzeiten im Übertragungsnetzwerk werden kaschiert. Der Windows Client nutzt dazu folgende Verzeichnisse

Verzeichnis ca. Größe Beschreibung

%LocalAppData%\Microsoft\Teams

800 MB

Installationsverzeichnis von Teams mit der aktuellen und vorherigen Version

%LocalAppData%\Microsoft\TeamsMeetingAddin

40 MB

Meeting-AddIn für den Browser

%AppData%\Microsoft\Teams

500 MB

Cache- und Datenverzeichnisse

%LocalAppData%\SquirrelTemp

160MB

Temp-Verzeichnisse für den Teams Updater

Browser Client: Cache

Aber auch Teams im Browser ist nicht untätig und als moderne Applikation hat er ebenfalls die Möglichkeit zum Caching. Die Exchange Administratoren kennen das ja schon vom "Offline-Mode" in Outlook Web Access. Der Browser stellt der Applikation entsprechende Bereiche bereit, die Sie per "F12" im Browser Debugger auch einsehen können:

Hier können Sie sogar in die verschiedenen Datenbanken rein schauen und z.B. die Provisioning-Konfiguration des Clients einsehen. Diese Konfiguration zeigt einen Client im produktiven "Public Ring".

Aber auch die verschiedenen URLs für die unterschiedlichen Backend-Services sind in der Konfiguration zu finden. Die meisten enden auf "teams.microsoft.com" aber es gibt auch URLs, die auf "skype.com" enden.

Mobil Client: Cache

Was dem Browser und der Windows App recht ist, ist für Mobile-Client erst recht interessant. Über Mobilfunknetze ist die Latenzzeit meist deutlich höher und Sparsamkeit bei Datenmengen ist geboten. Dazu zählt natürlich erst recht, dass einmal übertragene Informationen möglichst nicht erneut übertragen werden.

Aus meiner Erfahrung arbeitet der mobile Client schon sehr viel länger aktiv mit einem lokalen Cache. Das merken Sie am ehesten, wenn Sie wirklich "offline" sind und dann mit Teams arbeiten. Sie können mit dem Teams Client auch dann ziemlich gut arbeiten und sogar neue Informationen lesen, die der Client anscheinend während der Online-Zeit im Hintergrund schon geladen hat.

Hier mal die Anzeige auf einem IPhone

Auf Android-Geräten dürfte es ähnlich aussehen.

Machen Sie doch mal den Test, indem Sie ihr Smartphone in den "Flugzeug-mode" versetzen und schauen, was sie mit Teams auf dem Smartphone noch machen können.

Weitere Links