Budujesz jeden raport dla całej firmy – od prezesa po handlowca terenowego. Problem: jeden link URL i każdy widzi wszystko. Tworzenie osobnych raportów per osoba to absurd administracyjny. Rozwiązanie: Row-Level Security (RLS) – jeden raport, każdy widzi tylko swoje dane, na podstawie adresu e-mail zalogowanego użytkownika.

Jak działa RLS w Data Studio

Data Studio potrafi odczytać adres e-mail zalogowanego użytkownika i porównać go z kolumną w źródle danych. Jeśli w tabeli z danymi masz kolumnę owner_email, możesz skonfigurować źródło tak, aby każdy widział tylko wiersze gdzie owner_email = email_zalogowanego_użytkownika.

Mechanizm działa na poziomie źródła danych w Data Studio – filtr jest nakładany przez platformę przed wyświetleniem jakichkolwiek danych na wykresie. Użytkownik nie ma dostępu do surowych danych.

Konfiguracja krok po kroku

Krok 1: Dodaj kolumnę z emailami do tabeli. W Google Sheets lub BigQuery dodaj kolumnę owner_email z adresami właścicieli poszczególnych wierszy:

region przychod owner_email
Warszawa 120 000 krzysztof@firma.pl
Kraków 95 000 monika@firma.pl
Gdańsk 78 000 tomasz@firma.pl

Krok 2: Włącz filtrowanie w Data Studio. W edytorze raportu: Zasób → Zarządzaj dodanymi źródłami danych → Edytuj → przewiń do sekcji „Bezpieczeństwo na poziomie wiersza" (Row-level security). Zaznacz pole i wybierz kolumnę owner_email jako pole uwierzytelniające.

Krok 3: Zarządzaj wyjątkami. Dla użytkowników z dostępem do wszystkich danych (np. zarząd) – dodaj ich adresy e-mail na listę wyjątków w tym samym panelu. Oni zobaczą pełny raport.

RLS na poziomie BigQuery – autoryzowany widok

RLS w samym Data Studio ma słabość: zaawansowany użytkownik może skopiować źródło danych i usunąć filtr. Prawdziwe zabezpieczenie to RLS na poziomie BigQuery – widok autoryzowany (Authorized View), który sam zwraca tylko dane dla zalogowanego użytkownika:

-- BigQuery: Authorized View z RLS po emailu
CREATE OR REPLACE VIEW `projekt.analytics.sprzedaz_rls` AS
SELECT
  region,
  przychod,
  data_transakcji,
  owner_email
FROM `projekt.raw.sprzedaz`
WHERE
  owner_email = SESSION_USER()  -- BigQuery zwraca email zalogowanego użytkownika
  OR SESSION_USER() IN (
    SELECT email FROM `projekt.config.admins`  -- lista adminów widzi wszystko
  )

Data Studio łączy się z tym widokiem. Gdy Krzysztof otwiera raport, BigQuery automatycznie filtruje WHERE owner_email = 'krzysztof@firma.pl'. Gdy próbuje skopiować źródło – widzi tylko swoje dane, bo ograniczenie jest w bazie, nie w raporcie. Błąd 403 pojawi się przy każdej próbie obejścia warstwy Data Studio.

Typowe scenariusze: kto widzi co

Użytkownik Widzi Konfiguracja
Handlowiec Krzysztof Tylko dane Warszawy (owner_email = jego email) Standardowy RLS
Regionalny Manager Dane wszystkich handlowców z jego regionu owner_email = email managera dla całego regionu
Zarząd Wszystkie dane, wszystkie regiony Email na liście wyjątków / tabela admins w BQ
Klient zewnętrzny Tylko jego własne dane (np. z CRM) RLS po email klienta + konto Google wymagane

Ograniczenia i pułapki

  • RLS w Data Studio wymaga konta Google: odbiorca musi być zalogowany. Nie działa dla raportów udostępnionych publicznie (bez logowania).
  • Cache danych: Data Studio może cache'ować dane. Jeśli zmienisz uprawnienia, poprzedni widok może być widoczny przez czas trwania cache. Wyłącz cache dla raportów RLS w ustawieniach źródła.
  • Bez BigQuery Authorized View – RLS jest bypassowalny: zaawansowany użytkownik może skopiować raport i zedytować źródło. Zawsze sparuj RLS w Data Studio z Authorized View w BigQuery dla danych wrażliwych.
  • Data Studio Pro oferuje dodatkowe opcje zarządzania dostępem przez Team Workspaces – dla organizacji z wieloma raportami i grupami użytkowników.
RLS w samym Data Studio to blokada na drzwiach. Authorized View w BigQuery to blokada w ścianie. Tylko kombinacja obu tworzy bezpieczną architekturę – raport, do którego każdy ma link, ale każdy widzi tylko swoje dane.