Kapitoly kurzu
1. Licencování a režimy připojení 2. Sdílené pracovní prostory 3. Power BI Apps, Audiences a RLS 4. Gateway a aktualizace dat 5. Kapacita, pipelines, verzování 6. Sémantické modely, Dataflows, OneLake 7. Administrace a monitoring
Cvičení
8. Cvičení 1: Workspaces a sdílení 9. Cvičení 2: App a RLS 10. Cvičení 3: Sdílený model 11. Cvičení 4: Životní cyklus obsahu
🏠 Rozcestník kurzu
GOC686 · Cvičení

Cvičení 2: Power BI App a RLS

RLS role, test pohledem role, přiřazení členů a aplikace s audiences
🧪 Cvičení

Cíle kapitoly

  • Definovat RLS role ve web modelingu a otestovat je přes Test as role
  • Přiřadit uživatele do role a ověřit, že RLS skutečně omezuje data — i to, kdy ji naopak obchází
  • Publikovat Power BI App s Audiences a distribuovat přes ni různý obsah různým skupinám
  • Vysvětlit rozdíl mezi RLS a Object-level security (OLS)
9.1

Úvod — vstupní stav

Navazuješ na cvičení 1: v GOC686-StudentXX máš semantic model GOC686-Starter, report Prodeje podle regionu - StudentXX a soused je nasdílený na report přímo (Share) a ve workspace je jako Viewer.

Člen workspace Contributor a výš Write permission na modelu → RLS obchází Vidí všechna data Viewer / přímé sdílení Bez práva zápisu RLS role → DAX filtr se vynutí Vidí jen svůj region Uživatel App Audience omezí obsah RLS role zároveň omezí řádky dat Vidí jen svůj report a region
Vztah mezi rolí ve workspace, přímým sdílením a App: RLS reálně filtruje data jen tomu, kdo nemá write permission na model, App navíc přidává výběr obsahu podle Audience.
⚠️
Pozor: Pokud soused v tvém workspace omylem zůstal jako Contributor, Member nebo Admin, RLS se na něj neuplatní — tyhle role mají write permission na modelu a RLS obchází stejně jako ty. Než začneš, zkontroluj v Manage access, že soused je opravdu Viewer.
9.2

Krok 1 — Definice RLS rolí (web modeling)

  1. V GOC686-StudentXX klikni na … u semantic modelu GOC686-Starter → Open semantic model (editace modelu přímo v prohlížeči) → přepni z Viewing do Editing.
  2. V liště klikni Manage roles → New.
  3. Pojmenuj roli Severni Amerika, vyber tabulku DimSalesTerritory, klikni Switch to DAX editor a zadej filtr:
DAX
[SalesTerritoryGroup] = "North America"
  1. Klikni Save.
  2. Přidej druhou roli Evropa se stejným postupem (včetně Switch to DAX editor) a filtrem:
DAX
[SalesTerritoryGroup] = "Europe"
  1. Klikni Save.
ℹ️
Poznámka: Stránka Security v nastavení semantic modelu role jen přiřazuje uživatelům — nedefinuje je. Role s DAX filtrem se definují buď v Power BI Desktopu (Modeling → Manage roles), nebo přímo ve službě přes Open semantic model, jak to děláš teď. Ta druhá cesta vyžaduje zapnutý tenant setting Users can edit semantic models in the Power BI service — u kurzu je zapnutý.
✓
Ověření: V Manage roles (nebo na stránce Security semantic modelu) vidíš dvě role: Severni Amerika a Evropa.
9.3

Krok 2 — Otestování role (Test as role)

  1. Ve workspace GOC686-StudentXX u semantic modelu GOC686-Starter klikni … → Security, pak u role Severni Amerika klikni … → Test as role.
  2. Otevře se výchozí report GOC686-Starter (karta [Prodeje], graf po měsících) — ten tabulku regionů nemá. V hlavičce přes Viewing přepni na report Prodeje podle regionu - StudentXX.
  3. Podívej se na tabulku regionů — North America má ukázat Northwest, Northeast, Central, Southwest, Southeast, Canada.
  4. Přepni přes Now viewing as na roli Evropa — má zůstat jen France, Germany, United Kingdom.
  5. Zpátky do normálního zobrazení se vrátíš přes Back to Row-Level Security (ne „Back to normal view" — ta volba v UI není).
⚠️
Pozor: Pacific (Austrálie) je samostatná SalesTerritoryGroup, ne součást North America. Pokud bys v roli Severni Amerika viděl i Austrálii, je chyba ve filtru role, ne v očekávání.
⚠️
Pozor: Report GOC686-Starter ve službě neupravuj ani neukládej — automaticky by se převedl na formát PBIR a v cvičení 4 by ho deployment pipeline nenasadila (PBIR reporty tam podporované nejsou).
✓
Ověření: Na reportu Prodeje podle regionu role Severni Amerika ukazuje jen severoamerické regiony (bez Pacific), role Evropa jen tři evropské země.
9.4

Krok 3 — Přiřazení uživatele do role a kontrola RLS

  1. Vrať se do workspace → … u semantic modelu → Security.
  2. Klikni na roli Evropa.
  3. Do pole Add people zadej e-mail souseda → Add → Save.
  4. Soused (přes report nasdílený v cvičení 1) otevře report a ověří, co vidí.
  5. Odeber souseda z role Evropa a ulož. Soused zkusí report otevřít znovu.
  6. Vrať souseda zpátky do role Evropa.
Co soused po odebrání z role uvidí?▼

Řešení pro kontrolu: Bez členství v žádné RLS roli uvidí soused chybu ve vizuálech, nebo prázdná data — podle typu vizuálu. V každém případě nedostane žádné řádky. Tohle je záměrné chování, ne bug: dokud uživatele nezařadíš do role, nemá k datům přístup, ne že by je viděl „vynulovaná".

✓
Ověření: Soused v roli Evropa vidí jen Francii, Německo a UK, i když ty bez role vidíš vše. Po odebrání z role nevidí žádná data (chyba nebo prázdný vizuál), po vrácení zase jen evropská data.
9.5

Krok 4 — Odebrání souseda z workspace (kontrolní bod)

Než vytvoříš App, odeber souseda z Manage access tvého workspace úplně.

  1. Workspace settings → Manage access → najdi souseda → Remove.
⚠️
Pozor: Tohle je kritický kontrolní bod pro zbytek cvičení. Problém není primárně v RLS — je v tom, že člen workspace vidí veškerý obsah workspace bez ohledu na Audience, takže test App by nic neprokázal. Pokud by soused zůstal ve workspace jako Contributor a výš, navíc by obešel i RLS (Viewer v roli by pod RLS zůstal, ale test Audience by stejně byl zbytečný). Od teď má přístup k tvému obsahu jen přes App.
✓
Ověření: Soused už není v seznamu Manage access tvého workspace.
9.6

Krok 5 — Vytvoření Power BI App s Audiences

  1. V GOC686-StudentXX klikni Create app (tlačítko vpravo nahoře).
  2. Setup: App name Prodeje StudentXX.
  3. Content: přidej oba reporty — GOC686-Starter i Prodeje podle regionu - StudentXX.
  4. Audience: výchozí audience (typicky Audience 1) přejmenuj na Vedení a nech ji vidět oba reporty. Klikni + New audience, pojmenuj Obchod a u reportu GOC686-Starter ho skryj ikonou oka — audience Obchod tak uvidí jen Prodeje podle regionu - StudentXX.
  5. V audience Obchod klikni Manage audience access → přidej e-mail souseda.
  6. Klikni Publish app.
💡
Tip: Na workspace GOC686-StudentXX jde publikovat jen jedna klasická workspace app najednou — pokud ji později budeš upravovat, použiješ Update app, ne novou publikaci.
⚠️
Pozor: Report GOC686-Starter jen přidáváš do Content — v editoru reportu ho neotvírej ani v něm nic neukládej. Uložením ve službě by se převedl na formát PBIR a v cvičení 4 by ho deployment pipeline nenasadila.
✓
Ověření: Soused otevře odkaz na aplikaci, který mu po Publish zkopíruješ (případně Apps → Get apps → Organizational apps — přesný popisek neověřeno), a app si nainstaluje — bez instalace ji v Apps nenajde. Vidí jen report Prodeje podle regionu - StudentXX z audience Obchod, a v něm díky RLS jen evropská data, protože je pořád členem role Evropa na modelu.
9.7

Bonus: Org apps

Org apps jsou novější typ položky Fabric (preview, dostupnost závisí na tenant settingu Users can discover and create org apps (preview)), který na rozdíl od klasické workspace app umožňuje víc aplikací na jeden workspace. Tvrzení, že se změny projeví bez kroku Update app, přesný stav ověřte v dokumentaci.

  1. Ve workspace klikni + New item a vyhledej Org app.
  2. Porovnej se svou klasickou app: počet aplikací povolených na jeden workspace, způsob publikace změn, přímý přístup k jednotlivým položkám bez nutnosti procházet navigaci app.
ℹ️
Poznámka: Dostupnost položky Org app v učebně závisí na zapnutém tenant settingu a je neověřeno — pokud v seznamu + New item nenajdeš Org app, přeskoč tento bonus a probereme rozdíl jen teoreticky.
9.8

Diskuze: RLS vs. Object-level security (OLS)

RLS filtruje řádky — co když chci skrýt celou tabulku nebo sloupec?▼

Řešení pro kontrolu: RLS omezuje, které řádky dat uživatel uvidí — tabulky a sloupce zůstávají viditelné, jen s odfiltrovanými daty. Pokud chceš skrýt celý objekt (např. sloupec s marží, kterou nemá vidět obchod), potřebuješ Object-level security (OLS). OLS se nastavuje přes TMDL view přímo v Power BI Desktopu nebo přes Tabular Editor / XMLA endpoint — ne ve webovém UI service. Nevýhoda OLS je stejná jako u RLS: platí jen pro roli Viewer, Admin/Member/Contributor ji obchází stejně jako RLS.

9.9

Shrnutí a reference

✓
Shrnutí: Máš definované a otestované RLS role a publikovanou App se dvěma audiences. Víš, že RLS platí pro roli Viewer, pro přímé sdílení i pro App, a proč soused nesmí zůstat ve workspace jako Contributor — ne kvůli tomu, že by unikl RLS jako Viewer, ale protože by jako člen workspace viděl veškerý obsah bez ohledu na Audience. Soused je od kroku 4 mimo tvůj workspace — vstupní stav pro cvičení 3 je „Viewer + Build" v GOC686-Sdileny, který ti nastaví lektor.
📚 Do hloubky na Learn: Row-level security (RLS) (EN) · Create and distribute apps (EN) · Org apps (EN)