Blog JSystems - uwalniamy wiedzę!
Blog JSystems - uwalniamy wiedzę!
Power BI - Bezpieczeństwo: RLS, OLS i etykiety poufności
Użytkownik w dwóch rolach RLS widzi dane obu ról naraz
Dwie role RLS dla jednej osoby to częsty pomysł, gdy ktoś ma widzieć region i dodatkowo jeden sklep albo region bez marży. W Power BI efekt bywa zaskakujący: zamiast części wspólnej użytkownik widzi wszystko, co dają obie role razem, a w niektórych układach dostaje błąd. Pokazujemy na modelu Nordvelli, jak role się łączą, i jak zaprojektować je tak, żeby się nie nakładały.
W lekcji 21 zaznaczyliśmy w oknie Wyświetl jako role dwie role naraz: Region Południe i Sklep Warszawa. Pasek pokazał obie role, a raport 306 mln zł, 71 tys. transakcji i siedem sklepów. Tak samo działa przypisanie jednej osoby do dwóch ról w usłudze Power BI. Zapytanie z warunkami obu ról połączonymi operatorem lub dało na modelu 306 278 725,18 zł, 7 sklepów i 71 315 transakcji: trzy sklepy Regionu Południe, trzy salony warszawskie i sklep internetowy Nordvella Online, który w danych ma miasto Warszawa.
Osoba, która miała zobaczyć tylko część danych, widzi więc więcej niż w każdej z ról osobno. Gdy jedna z ról ma OLS, a druga filtr wierszy, objaw jest inny: Desktop odmawia podglądu komunikatem „Wybrana kombinacja ról nie jest obsługiwana, ponieważ nie można łączyć zabezpieczeń na poziomie wiersza i zabezpieczeń na poziomie obiektu z różnych ról” (w angielskiej wersji: „The selected combination of roles is not supported because row-level and object-level security cannot be combined from different roles”).

Zobacz też: Szkolenie Power BI - Desktop, DAX i Online + Copilot
Według dokumentacji Microsoft role RLS są addytywne: osoba w dwóch rolach widzi wiersze z obu. Dokumentacja dodaje, że znana z uprawnień w bazach SQL Server zasada, według której raz odebrany dostęp zostaje odebrany (po angielsku once denied always denied), tu nie obowiązuje. Rola z regułą FALSE () i rola z regułą TRUE () dają razem dostęp do wszystkich wierszy, w Nordvelli do 15 sklepów. Filtry ról łączą się operatorem lub. Gdyby łączyły się przez i, raport byłby pusty: warunki [Region] = "Południe" i [Miasto] = "Warszawa" połączone przez && zostawiły 0 sklepów, bo żaden sklep nie leży jednocześnie w Warszawie i w Regionie Południe.
Suma nie zawsze rośnie. Rola dynamiczna Manager sklepu dla Anny Wiśniewskiej (sklep Warszawa Centrum, 34 740 655,15 zł) razem z Region Południe dała 118 201 085,40 zł, a dla Piotra Nowaka 83 460 430,25 zł, tyle co sam region, bo jego sklep w Krakowie leży w Regionie Południe. Jedna osoba w zespole może więc nie zauważyć problemu, który drugiej otwiera dane innego miasta. Członkostwo w roli przychodzi też przez grupy zabezpieczeń, więc ktoś może trafić do dwóch ról, choć nikt nie przypisał go wprost. Gdy szerszy dostęp wynika z roli w obszarze roboczym, a nie z ról RLS, zajrzyj do posta o administratorze obszaru, który widzi wszystko.
DimSklepy, zamiast przypisywać ją do dwóch ról. Reguła poniżej wycina sklep internetowy, który w danych ma miasto Warszawa. Zostawia 6 sklepów i 164 505 876,59 zł. Dokumentacja Microsoft zaleca jedną rolę, która daje komplet uprawnień danej osoby.[Region] = "Południe"
|| ( [Miasto] = "Warszawa" && [Typ] <> "E-commerce" )&&. Reguła poniżej zostawia dwa sklepy, Kraków Stare Miasto i Katowice, razem 64 526 603,27 zł. Dwie osobne role, Region Południe i rola salonów flagowych, dałyby sumę: 6 sklepów i 176 187 100,71 zł, z Gdańskiem, Wrocławiem i Warszawą Centrum.[Region] = "Południe" && [Typ] = "Flagship"
DimSklepy taką jak Region Południe i OLS na tych samych czterech kolumnach co rola Sprzedawca: pokazała 83 mln zł regionu, a karta marży i tabela pokazały błąd. Szczegóły OLS opisujemy w poście o ukryciu kolumny i OLS.Naprawione, gdy każda osoba jest w jednej roli, a Testuj jako rola dla tej osoby pokazuje dokładnie jej zakres. W Nordvelli rola z reguły z kroku 3 ma dać 6 sklepów, a z reguły z kroku 4 dwa sklepy, Kraków Stare Miasto i Katowice. Patrz na sumę w tabeli albo na karcie: przy dwóch rolach pokazywała 306 278 725 zł zamiast oczekiwanej kwoty.
Nazywaj role od zakresu osoby, a nie od pojedynczego warunku, prowadź listę, kto jest w której roli, i przypisuj grupy zabezpieczeń, których członkowie nie nakładają się między rolami. Gdy osoba potrzebuje też zablokowanych kolumn, łączysz wszystko w jednej roli, jak w lekcji o etykietach poufności i OLS.
Zachowanie programu sprawdziliśmy w Power BI Desktop 2.157 (wydanie z sierpnia 2026 r.) z polskim interfejsem, a przykłady na modelu sieci Nordvella z bezpłatnego kursu Power BI. Microsoft wydaje nową wersję Power BI Desktop co miesiąc, więc nazwy przycisków i limity usługi mogą się zmieniać. Aktualne wartości podaje dokumentacja Microsoft Learn.
Wróć do listy: 131 najczęstszych pytań i problemów związanych z Power BI
Komentarze (0)
Brak komentarzy...