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.