Row Level Security (RLS) w Power BI

Row Level Security (RLS) w Power BI

Uups Twoi handlowcy zobaczyli wzajemnie swoje dane, których nie powinni?

Chcesz udostępnić raport tylko z cząstką danych komuś z organizacji? Sprawdź jak działa RLS czyli Row Level Security w Power BI.

Częsty scenariusz biznesowy, który obserwuje u klientów – tworzony jest raport na podstawie danych z całej organizacji (załóżmy, że dział analiz przygotowuje raporty pokazujące sprzedaż handlowców). Zarząd lubi przeglądać raport całościowo patrząc na dane i wyniki handlowców (są nagrody i pochwały dla najlepszych 😊 ). Co jednak jeśli chcielibyśmy udostępnić raport naszym handlowcom? Oczywiście są firmy, które pozwolą sobie w swojej kulturze organizacyjnej na udostępnienie raportów całym zespołom, jednak częściej spotykanym scenariuszem jest jednak przekazanie raportów danemu handlowcowi z jego danymi.

Z pomocą przychodzi RLS czyli Row Level Security.

Popatrzmy na gotowy ultra prosty model w Power BI.

Model danych w Power BI
Prosty model danych Power BI

Składa się on w naszym przypadku z 3 tabel połączonych relacjami. Tabela dat jest zapewne oczywista, przyjrzyjmy się co kryje się w poszczególnych tabelach.

Tabela handlowcy

Przechowuje informacje o ID_Handlowcy, jego nazwisku, dacie zatrudnienia, podstawie wynagrodzenia i co dla nas istotne – stawce prowizji jaką otrzyma handlowiec przy każdej transakcji.

Widok tabeli z danymi handlowców

Tabela zamówienia

Mamy w niej informacje dotyczące zamówień obsłużonych przez handlowców. Wiemy zatem kiedy była dokonana transakcja, jaka była jej kwota oraz w kolumnie obliczeniowej mamy stworzoną formułę:

Prowizja od sprzedaży = ‚Zamówienia'[Kwota zamówienia]*RELATED(Handlowcy[Prowizja])

Tabela zamówień w Power BI Desktop z funkcją RELATED

Formuła oblicza prowizję dla każdej transakcji z wykorzystaniem funkcji RELATED.

W pliku Power BI mamy również banalny raport pokazujący jak wyglądała prowizja danego handlowca w poszczególnych dniach. Raport umożliwia nam takie filtrowanie, aby możliwe było pokazanie danych jednego handlowca.

Obrazek pokazujący jak zmienia się wygląd raportu dla poszczególnych handlowców

I tutaj leży całe sedno naszego raportu 😊 Chcielibyśmy udostępnić raport handlowcom u nas w firmie (zakładamy, że każdy posiada konto Power BI Pro). Jednak powinniśmy te raporty udostępnić w taki sposób aby Brzęczyszczykiewicz zobaczył jedynie swoje wyniki, analogicznie Nowakowski i pozostali handlowcy.

W jaki sposób możemy tego dokonać? Z pomocą przychodzi nam właśnie RLS a więc Row Level Security (Zabezpieczenia na poziomie wiersza). Jest to mechanizm pozwalający określić wyrażeniem DAX, które dane zostaną zwrócone w datasecie dla danej roli (a stąd już o krok do powiązania z handlowcem).

Przechodzimy zatem do polecenia Zarządzaj rolami w głównym oknie Power BI Desktop.

Zarządzanie rolami z poziomu Power BI Desktop

Określamy pierwszą rolę – będzie to rola dla handlowca o nazwisku Brzęczyszczykiewicz (jego ID w naszym modelu = 4). Możemy zatem skonstruować następujące wyrażenie:

Tworzenie roli z wykorzystaniem formuły DAX

Analogiczną rolę tworzymy dla kolejnego handlowca – Nowakowskiego:

Tworzenie roli dla kolejnego handlowca

Super – co teraz 😊? Przechodzimy do usługi powerbi.com i logujemy się na nasze dane (nie na żadnego z handlowców 😉 ).

Utworzymy teraz obszar roboczy, który pozwoli nam podzielić się naszym raportem z innymi użytkownikami Power Bi.

Tworzenie obszaru roboczego aplikacji po stronie powerbi.comTworzymy obszar roboczy o nazwie Handlowcy i przypisujemy do niego następujących handlowców:

Dodawanie użytkowników usługi powerbi.com do obszaru roboczego.

W naszej organizacji Brzęczyszczykiewicz dostał konto w Power BI o nazwie jeden, Nowakowski zaś o nazwie Dwa.

Potwierdzamy dodanie użytkowników do obszaru roboczego i zapisujemy obszar roboczy.

Pamiętajmy, że nasz raport i tym samym zestaw danych nie został jeszcze opublikowany do usługi powerbi.com dlatego wracamy do Power BI Desktop i publikujemy go w nowoutworzonym obszarze roboczym (psst – docelowo lepiej najpierw określić zabezpieczenia a dopiero później zaprosić uczestników do obszaru roboczego 😉 ).

Publikowanie raportu z Power BI Desktop do wskazanego obszaru roboczego

Po opublikowaniu raportu przechodzimy do opcji Zestawu danych o nazwie ZABEZPIECZENIA.Zabezpieczenia zestawu danychNa tym etapie musimy połączyć rolę utworzoną w Power BI Desktop z użytkownikiem usługi powerbi.com.  Do roli o nazwie Brzęczyszczykiewicz dodajemy użytkownika o nazwie jeden, do Nowakowskiego o nazwie Dwa. Zwróć uwagę na tytuł okna – Zabezpieczenia na poziomie wiersza (Row Level Security!).

Dodawanie użytkownika do roli RLS Row-Level Security

Rezultatem naszych działań powinno być:

Widok użytkowników dodanych do poszczególnych ról.

Czy to już wszystko? Pozostaje nam sprawdzić co rzeczywiście zobaczą nasi handlowcy. Po zalogowaniu się na dane Brzęczyszczykiewicza (w powerbi.com konto: jeden) zobaczymy raport z możliwością wyboru tylko jednego handlowca (pozostała część listy będzie pusta):

Widok Brzęczyszczykiewicza

Po przelogowaniu się na Nowakowskiego zobaczymy jego statystykę prowizji:

Widok raportu dla handlowca = Nowakowski

Voila!

Powyższy przykład jest bardzo prostym wprowadzeniem w świat RLS (Row Level Security). Ograniczaliśmy wiersze przyporządkowane do handlowca bardzo prostym wyrażeniem DAX – jednak za pomocą RLS możesz budować znacznie bardziej skomplikowane formuły/warunki.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *