Für das neulich beschriebene ErWiN-Projekt stand die Frage im Raum, wie ich dafür Benutzerstatistiken mit Matomo erhalten könnte. Diese sollten möglichst wenig störend sein und trotzdem natürlich DSGVO-konform.

Ich hatte mich auf der Website der Employees for Future zuletzt für einen Consent-Layer im WordPress entschieden, allerdings ist so ein Layer letztlich natürlich trotzdem irgendwie nervig und ein Teil der Nutzer wird sich auf Grund der Funktionsweise gegen einen Opt-In entscheiden, was die Menge an auswertbaren Daten natürlich verringert.

Gibt es da vielleicht noch einen besseren Weg? Ja, gibt es, aber auch der hat seinen Preis. Warum ich ihn trotzdem gut finde, beschreibe ich in diesem Artikel.

Rechtlicher Hintergrund

Vorab ein Disclaimer: Ich bin kein Jurist, hab also keine Ausbildung in diesem Bereich und alles was ich hierzu sage, basiert auf dem, was ich mir aus Gesetzestexten, diversen Blogs und meinem halbwegs gesunden Menschenverstand herleiten kann. Wenn du sicher gehen willst, frag einen Anwalt. Oder mehrere :)

Nachdem das geklärt ist, versuche ich mal den rechtlichen Hauptzusammenhang abzubilden. In der EU ist die aktuell gültige Rechtsnorm für den Datenschutz die sogenannte europäische Datenschutzgrundverordnung (kurz DSGVO). Diese besagt im Grunde, dass die Verarbeitung von Daten, konkreter “personenbezogenen Daten” nur unter bestimmten Bedingungen erlaubt ist. Die möglichen Bedingungen sind in Artikel 6 der DSGVO relativ verständlich nachzulesen:

a) Die betroffene Person hat ihre Einwilligung zu der Verarbeitung der sie betreffenden personenbezogenen Daten für einen oder mehrere bestimmte Zwecke gegeben;

b) die Verarbeitung ist für die Erfüllung eines Vertrags, dessen Vertragspartei die betroffene Person ist, oder zur Durchführung vorvertraglicher Maßnahmen erforderlich, die auf Anfrage der betroffenen Person erfolgen;

c) die Verarbeitung ist zur Erfüllung einer rechtlichen Verpflichtung erforderlich, der der Verantwortliche unterliegt;

d) die Verarbeitung ist erforderlich, um lebenswichtige Interessen der betroffenen Person oder einer anderen natürlichen Person zu schützen;

e) die Verarbeitung ist für die Wahrnehmung einer Aufgabe erforderlich, die im öffentlichen Interesse liegt oder in Ausübung öffentlicher Gewalt erfolgt, die dem Verantwortlichen übertragen wurde;

f) die Verarbeitung ist zur Wahrung der berechtigten Interessen des Verantwortlichen oder eines Dritten erforderlich, sofern nicht die Interessen oder Grundrechte und Grundfreiheiten der betroffenen Person, die den Schutz personenbezogener Daten erfordern, überwiegen, insbesondere dann, wenn es sich bei der betroffenen Person um ein Kind handelt.

Da es nur diese sechs möglichen Szenarien gibt und viele bei näherer Betrachtung für die Erfassung von Statistiken per Matomo nicht in Frage kommen, bleiben letztlich nur zwei sinnvolle Optionen:

  • a) der Benutzer gibt seine Einwilligung (Opt-In) für die Datenerfassung
  • f) die Erfassung der Daten liegt im berechtigten Interesse des Betreibers und dieses überwiegt den Schutz des Benutzers, insbesondere wenn es sich um Kinder handelt

Und hier beginnt der eigentlich schwierige Teil. Während a) relativ eindeutig durch ein Consent-Layer nachgewiesen werden kann, ist f) eine Abwägungsfrage, weil man im Zweifel nicht weiß, ob das berechtigte Interesse überwiegt bzw. was überhaupt als berechtigtes Interesse anerkannt wird. In letzter Instanz entscheidet sowas ein Richter und bis jetzt gibt es nach meiner Kenntnis keine eindeutige Rechtsauffassung hierzu.

Insofern begibt man sich mit der Wahl einer Datenerfassung ohne Consent in ein gewisses Risiko, solange es hierzu keine höchstrichterliche Entscheidung – quasi einen Präzedenzfall gibt.

Alles hat seinen Preis..

Nutzer consentloser Matomo-Statistiken

Aber ähnlich wie bei Ebay Kleinanzeigen (“Was letzte Preis?”) kann man sein potenzielles Risiko natürlich reduzieren, wenn man die Grundfreiheiten des Besuchers respektiert und z.B. nur ein Mindestmaß an Daten erhebt sowie natürlich die Möglichkeit anbietet der Datenerfassung zu widersprechen.

Matomo und die DSGVO

Als Anbieter einer weitverbreiteten Open Source Lösung zur Erfassung von Benutzerstatistiken kommt Matomo an dem Thema DSGVO natürlich auch nicht vorbei und hat dazu an verschiedenen Stellen auf der Website Informationen hinterlegt:

Besonders der dritte Link ist für die weitere Betrachtung hier relevant, denn er beschreibt, welche Anforderungen alle erfüllt sein müssen, damit auf ein Consent verzichtet werden kann.

Demnach muss Matomo so konfiguriert werden, dass es keine Tracking-Cookies mehr speichert. Außerdem muss man die IP-Adressen anonymisieren und sicherstellen, dass Seiten- und Referrer-URLs keinen persönlichen Daten enthalten und auch keine benutzerspezifischen Eigenschaften im Tracking auftauchen.

Und natürlich darf man die Daten nur für sich selbst nutzen und keinesfalls anderweitig weitergeben. Zudem muss man die Erfassung in der Datenschutzerklärung offenbaren und ein Opt-Out anbieten.

Dann – so die Auffassung von Matomo – darf man Statistiken auf Grund seines berechtigten Interesses erheben, weil man das Grundrecht des Besuchers auf Schutz seiner Identität ausreichend achtet.

Wie gesagt, ob das auch vor einem Gericht standhalten wird, kann aktuell noch niemand genau sagen, aber in jedem Fall ist diese Lösung besser als die bisherige reine Opt-Out-Lösung, die nach heutigem Stand nicht mehr datenschutzkonform ist.

Zumindest wurde der hier beschriebene Weg Matomo ohne Consent-Layer einzusetzen von verschiedenen Rechtsexperten als konform betrachtet.

Die Praxis: Matomo und MediaWiki

Ok, genug der Theorie. Wir gehen nunmehr davon aus, dass die Angaben von Matomo korrekt sind und wollen diese in der Praxis umsetzen. Im konkreten Fall handelt es sich hier – wie bereits oben angedeutet – um das ErWiN-Projekt, welches auf MediaWiki, also der Software hinter Wikipedia beruht.

Für die Integration in das Projekt braucht es zunächst erst einmal eine Matomo-Instanz. Anders als z.B. bei WordPress gibt es hierfür keine fertige Extension von Matomo direkt, daher habe ich im ersten Schritt erstmal eine solche Instanz frisch neu aufgesetzt. Das ist nicht weiter kompliziert: einfach runterladen, installieren und den Installationsprozess im Browser ausführen.

Zur Einbindung in MediaWiki stehen zwei Extensions bereit. Zum einen eine etwas schlechter gepflegte Extension mit schlichtem Namen “Matomo” sowie eine besser gepflegte Extension “MatomoAnalytics” die auch einfache Statistiken auf einer Spezialseite von Matomo bietet.

Hinsichtlich meiner Anforderungen oben, bieten beide die erforderliche Möglichkeit die Cookies zu deaktivieren. Dass MatomoAnalytics allerdings Statistiken im Frontend anzeigt, finde ich eher weniger schön, weil m.E. unnötig und zudem potenziell auch für Dritte erreichbar. Zudem benötigt diese Extension dafür auch Zugriff auf den API-Token, den ich für eine einfache Einbindung des Trackings nicht im MediaWiki haben möchte.

Also entscheide ich mich für die etwas schlechter gepflegte Extension und schau mal, wie weit ich damit komme. Erstmal gilt es ohnehin an einer anderen Stelle noch für die Einhaltung der Anforderungen zu sorgen.

DSGVO-konforme Konfiguration

Viele der oben genannten Anforderungen an das Tracking werden nicht in der Einbindung, sondern direkt im Backend von Matomo konfiguriert. Mit dem jüngst konfigurierten SuperAdmin-User sind die Einstellungen leicht durchführbar.

Die passenden Einstellungen findet man in der Matomo Administration unterhalb von Privatsphäre > Daten anonymisieren:

Schritt 1: IP anonymisieren

Mit diesen Einstellungen wird die IP-Adresse vollständig anonymisiert. Grundsätzlich reicht laut Matomo eine teilweise Maskierung der IP aus, ich habe mich aber für eine vollständige Anonymisierung entschieden, da ich diese Daten nicht benötige und somit noch mehr Privatsphäre gewährleistet werden kann.

Hinweis: durch diese Einstellungen ist eine regionale Zuordnung der Besucher nicht mehr möglich, da diese auf der IP und passenden IP-Datenbanken beruht. Da die Qualität dieser Erkennung aber schon bei halber Maskierung nicht mehr sehr hoch ist und ich diese Daten ebenfalls nicht detailliert benötige, ist das für mich kein Problem. Matomo wechselt bei voller Anonymisierung auf eine Erkennung des Landes anhand der gewählten Browsersprache, was m.E. völlig ausreichend ist.

Schritt 2: Tracking ohne Cookies konfigurieren

Durch das cookie-lose Tracking werden keine Tracking-Cookies mehr gesetzt, was bedeutet, dass Matomo den Besucher nicht über mehrere Besuche hinweg wieder erkennen kann. Dadurch verliert man leider alle Auswertungen hinsichtlich wiederkehrender Besucher, aber das erscheint mir ein geringer Preis, wenn ich dafür auf das Consent-Layer verzichten kann.

Schritt 3: Referrer URLs filtern

Auch in Referrer URLs können sich personenbezogene Daten verstecken. Durch diese Einstellung werden Referrer URLs auf die Domain beschnitten und somit bietet sie einen guten Deal zwischen Kenntnis der Herkunft und dem Schutz persönlicher Daten. Laut Doku werden dadurch auch die Suchworte von Suchmaschinen gefiltert, aber diese kann man bei Bedarf ja in der Google Search Console nachschlagen.

Schritt 4: Daten nach 18 Monaten bereinigen

Zusätzlich zu den vorgenannten Einstellungen habe ich mich entschieden Daten grundsätzlich nur für 18 Monate zu speichern. Zum einen ist dieser Zeitraum ausreichend um Auswertungen zu fahren und zum anderen ist damit von Anfang an ein Löschzeitpunkt für die Daten vorhanden, was ein unbegrenztes Anwachsen der Datenmenge verhindert.

Schritt 5: Berichte nach 18 Monaten bereinigen

Die gleiche Einstellung habe ich dann auch auf die Berichte übernommen und alle Häkchen bestimmte Teildaten zu behalten ebenfalls entfernt. Im Internet sind 18 Monate eine lange Zeit und in aller Regel interessiert man sich sowieso nur für die aktuellen Daten und ggf. einen Jahresvergleich. Dafür reichen 18 Monate in meinen Augen aus.

Eine weitere wichtige Einstellung findet sich noch unter Privatsphäre > Benutzer Opt-Out:

Schritt 6: Do-Not-Track berücksichtigen

Mit dieser Einstellung weist man Matomo an Nutzer, die die “Do-not-Track”-Option in ihrem Browser gesetzt haben, ebenfalls vom Tracking auszunehmen. Es handelt sich also um eine weitere Form des Opt-Outs, die wir natürlich respektieren wollen.

Um mir diese Einstellungen nicht merken zu müssen und sie auch leicht bei Bedarf setzen zu können, hab ich für den ErWiN ein kleines MySQL-Script geschrieben, welches die passenden Einträge in der Datenbank automatisch setzt. Dieses werde ich voraussichtlich auch weiterhin pflegen z.B. bei neuen Optionen oder Anpassung der Rechtslage, selbst wenn dieser Artikel schon wieder in Vergessenheit geraten ist :)

Ok, damit ist Matomo nun bereit für die ersten Trackingdaten. Wie oben schon beschrieben, stütze ich mich dabei auf die MediaWiki Extension “Matomo”.

MediaWiki-Extension: Matomo

Die Installation der Erweiterung ist nicht weiter komplex und auf der Extension-Seite bei MediaWiki beschrieben. Mein Start mit der Extension war soweit relativ gut, allerdings sind mir ein paar Schwächen aufgefallen, die mir nicht gefallen haben, weswegen ich mich letztlich entschlossen habe, selbst Hand anzulegen und die Extension weiterzuentwickeln.

Mein Hauptanliegen war es die Opt-Out Funktion über einen Parser Tag im MediaWiki abzubilden. Dabei handelt es sich um bestimmte Tags, die in den Wikicode eingefügt werden können und dann an dieser ein bestimmtes Element anzeigen.

Zunächst dachte ich hier an das bekannte Opt-Out-iFrame, welches auch in der Matomo Administation als Code angeboten wird. Diese Lösung ist ansich sehr elegant, da sie Out-of-the-Box funktioniert, allerdings finde ich iFrames in modernen Webseiten nicht so praktikabel und habe spontan eine wesentlich cleverere Lösung gefunden.

Endlich ein eleganter Weg für’s Matomo Opt-Out

Dafür nutze ich ein relativ simples HTML-Markup:

<html>
  <p>
    <input type="checkbox" id="matomo-optout" />
    <label for="matomo-optout"><strong></strong></label>
  </p>
</html>

sowie ein kleines JavaScript, welches per Listener bei einem Klick auf das Element matomo-optout die aktuell gewählte Option umschaltet und im Matomo die betreffende Funktion ausführt sowie einen passenden Text anzeigt.

Auf eine Konfiguration der Sprache habe ich erstmal verzichtet, damit die Lösung möglichst gut Out-of-the-Box funktioniert. Die Texte werden statt dessen automatisch an die Browsersprache angepasst, so dass mit hoher Wahrscheinlichkeit der betreffende Text auch vom Benutzer verstanden werden kann.

Dadurch, dass es wirklich nur das Script sowie eine passende Checkbox braucht, ist die Lösung sehr leicht auch außerhalb von MediaWiki nutzbar und wird sicherlich in Zukunft in weiteren Projekten ebenfalls zum Einsatz kommen. Sehr gern dürft ihr das ebenfalls für eure Projekte nutzen:

MatomoOptOut.js – Matomo Opt-Out ohne iFrame

Und ja, ich bin ein klein wenig stolz, dass ich trotz meiner begrenzten JavaScript-Kenntnisse auf diese elegante Lösung gestoßen bin :)

Neben dem Parser Tag für das Opt-Out habe ich zudem einige Probleme der bestehenden Erweiterung behoben und den Code überarbeitet, damit er eine höhere Lesbarkeit sowie eine bessere Dokumentation aufweist. Dabei sind auch offensichtlich veraltete Teile entfernt worden und ich habe die Pfad-Konfiguration aus meiner Sicht deutlich nachvollziehbarer gestaltet.

Bitte verlassen Sie diesen Raum so, wie Sie ihn vorfinden möchten.

Hinweisschild

Vereinfacht ausgedrückt, habe ich die Extension gründlich aufgeräumt, damit mögliche Nachkommenden es etwas leichter haben sich da reinzufinden. Meinen Fortschritt habe ich dann auch dem Maintainer mitgeteilt, der sich aber leider noch nicht gemeldet hat. Überrascht mich jetzt nicht mehr so sehr, denn über den Fluch und Segen von Open Source hatte ich ja im letzten Artikel schon etwas geschrieben.

Insofern ist meine Version der Matomo Extension für MediaWiki nicht die offizielle, aber ich würde mich natürlich trotzdem freuen, wenn sie von anderen MediaWiki-Betreibern als Weiterentwicklung anerkannt und genutzt wird. Aus meiner Sicht ist sie zu 100% abwärtskompatibel und ich stelle mich auch gern möglichem Feedback.

Fazit & Danksagung

Wow, wieder ein langer Artikel. Was bleibt denn abschließend festzustellen?

Zunächst einmal habe ich gezeigt, wie man Matomo ohne Consent-Layer konform zur DSGVO einsetzen kann und wie das im besonderen mit MediaWiki und der von mir erweiterten Extension Matomo funktioniert.

Zugegebenermaßen ist diese Lösung relativ stark auf meine Bedürfnisse im ErWiN-Projekt zugeschnitten, gerade auch die Opt-Out-Lösung, aber ich hoffe, dass sie auch einen Mehrwert für andere bieten kann, sei es als konkrete Lösung oder als Anregung für eine eigene Lösung.

An dieser Stelle möchte ich daher auch Danke sagen an die verschiedenen freiwilligen Entwickler bei MediaWiki und Matomo, auf deren Schultern ich stehe und von deren Arbeit ich mir viel abschauen konnte. Das macht es mir erst möglich und zu einer Freude auch etwas an die Community zurückzugeben.