Row-Level-Security in Google Data Studio mit Filter by Email

In einem unserer älteren Blogartikel haben wir ein Konzept für Row-Level-Security in Google BigQuery vorgestellt. Dies funktioniert zwar unabhängig vom Reporting Tool, allerdings ist es wichtig, dass die Daten mit dem Account des Users bei Google BigQuery abgefragt werden.

Durch Row-Level-Security haben wir die Möglichkeit Daten zentral in einer Tabelle zu speichern, während wir den Zugriff auf die Daten in dieser Tabelle zeilenbasiert bestimmen können. Dadurch können wir nicht nur die Anzahl der Tabellen reduzieren, sondern auch flexibel neue Entitäten hinzufügen. Kommt in unserem späteren Beispiel ein Land (country_code) hinzu, so braucht es nicht eine neue Tabelle, sondern es werden lediglich neue Zeilen in die bestehende, zentrale Tabelle eingefügt und die nötigen Berechtigungen für die User eingetragen.

Google Data Studio bietet eine Möglichkeit, unabhängig von der Datenbank und davon welche/r Nutzer am Ende die Datenabfrage ausführt, die Daten in einer Quelle zeilenbasiert zu filtern. Dadurch lässt sich die Anzahl der Nutzer, die Zugriff auf die Datenbank bekommen, reduzieren und der Zugriff wird rein über den Report in Google Data Studio gesteuert. Hierbei ist es wichtig, dass der Nutzende eingeloggt ist und die jeweilige E-Mail Adresse in der Datenquelle hinterlegt ist, sodass auf diese gefiltert werden kann.

Daten vorbereiten

In den Daten ist es wichtig, dass die E-Mail-Adresse des Users, der Zugriff auf die Zeile haben soll, auch der Zeile als Spalte zugeordnet ist. Bleiben wir bei unserem vorherigen Beispiel: In unserem Data-Warehouse haben wir eine Tabelle sales, die unsere weltweiten Bestellungen (orders) beinhaltet. 

country_codeorders
DE1000
FR2000
Tabelle sales

Zudem besitzen wir eine Fakten-Tabelle countries_employees, in der unsere MitarbeiterInnen pro Land hinterlegt sind. 

country_codeemployee_email
DEmax@global.com
FRjuliette@global.com
Tabelle countries_employees

Mit dieser Tabelle können wir uns nun eine View sales_employees erstellen, die die E-Mail-Adresse der MitarbeiterInnen an die sales aus dem jeweiligen Land joined, auf die wir später filtern können. Diese View fragen wir später in unserer Data Studio Data Source ab.

SELECT 
  sales.country_code, 
  sales.orders, 
  countries_employees.employee_email
FROM sales
LEFT JOIN countries_employees
ON sales.country_code = countries_employees.country_code
country_codeordersemployee_email
DE1000max@global.com
FR2000juliette@global.com
View sales_employees

Data Studio Data Source konfigurieren

Wenn wir nun die View sales_employees als neue Data Source bei Data Studio hinzufügen, müssen wir auf “FILTER BY EMAIL” klicken

Google Data Studio „FILTER BY EMAIL“

Und hier den Haken bei “Filter data by viewer email” setzen und anschließend das Feld wählen, in dem die E-Mail-Adresse hinterlegt ist (in unserem Beispiel: employee_email

Google Data Studio „Filter data by viewer email“

Ergebnis

Absofort wird bei einer Abfrage dieses Feld auf die E-Mail-Adresse des eingeloggten Users gefiltert. In unserem Fall konkret:

Schaut max@global.com sich die Daten an, sieht er folgende Tabelle:

country_codeordersemployee_email
DE1000max@global.com
Ergebnis für max@global.com

Während juliette@global.com eine andere Tabelle sieht:

country_codeordersemployee_email
FR2000juliette@global.com
Ergebnis für juliette@global.com

Hier etwas ausführlicher in der offiziellen Dokumentation von Google: https://support.google.com/datastudio/answer/9713766?hl=de. Dort findet ihr ebenfalls ein Beispiel mit Google Sheets.