Dokumentace
Centrum nápovědyBezpečnostRBAC model
docs/cs/04-security/rbac-model.md

RBAC model

Tento dokument definuje tenant-scoped role-based access control (RBAC) model vhodný pro multi-tenant B2B SaaS prostředí OPORA.

Ověřeno proti implementaci 6. 9. 2026. Zdrojem statických oprávnění je authorization.ts v aplikační vrstvě; konkrétní akce přidávají další kontroly. Popis role není oprávněním obejít stav projektu, technické schválení, kvalifikaci, MFA ani předplatné.

Principy

Detailní permission matici pro členy, pozvánky, explicitní přijetí a kapacitu definuje ../03-application/team-invitations-and-seat-management.md.

  • Tenant-scoped: role platí v rámci Organizace, ne globálně.
  • Least privilege: uživatelé mají mít minimum potřebných oprávnění.
  • Action-based: oprávnění gateují akce (create/edit/export/manage), ne pouze viditelnost stránek.

Role (základ)

Owner

  • Plná kontrola tenant settings a billing.
  • Může spravovat členy a role.
  • Má projektová a exportní oprávnění včetně archivace/obnovy. Každá akce stále podléhá svým validačním, technickým a tarifním podmínkám.
  • Může spravovat existující přístupy i bez aktivního předplatného; nové pozvánky vyžadují aktivní týmový tarif a volné místo.

Admin

  • Spravuje projekty a sklad; může archivovat/obnovit projekt při splnění jeho podmínek.
  • Může spravovat členy jen pokud je zapnutá organizační politika allowAdminMemberManagement, je dostupný entitlement rbac_collaboration a předplatné je ACTIVE. Samotná role ADMIN nestačí.
  • Nemá vlastnictví billingu.

Engineer

  • Může vytvářet a editovat Projekty.
  • Může spouštět výpočty a prohlížet výsledky.
  • export_results a export_internal_pricing. Může exportovat výsledky při splnění podmínek konkrétního exportu; PDF/XLSX navíc vyžadují aktivní předplatné a advanced_exports.
  • Může vytvářet návrhy dokumentů, nahrávat je a odesílat ke kontrole (submit_document_review). Nemá approve_document, issue_document ani manage_document_shares; export výsledků není schválení/vydání dokumentu.
  • Může pracovat s provozním workflow lešení podle jeho dalších kontrol. Nemůže archivovat/obnovit projekt ani spravovat členy nebo billing.

Viewer

  • view_results, view_documents a view_warehouse v rámci organizace.
  • Nemá editační, výpočetní, exportní ani schvalovací oprávnění; změna tarifu sama žádné z těchto rolových oprávnění nepřidává.

Skupiny oprávnění (příklady)

  • Správa organizace
  • správa nastavení organizace
  • správa členů/rolí
  • správa billingu
  • Projektové akce
  • vytvořit projekt
  • editovat vstupy
  • spustit výpočet
  • prohlížet výsledky
  • exportovat výsledky
  • revize dokumentů: návrh a odeslání ke kontrole; zvlášť schválení a vydání
  • správa sdílení dokumentů (Owner/Admin, navíc podmínky konkrétní akce)
  • Přístup k modulům
  • čtení skladu pro všechny čtyři role
  • změny skladu pro Owner/Admin; dostupnost modulu neurčuje rozsah pilotní přejímky

Enforcement body

  • Server-side guardy pro všechny /app/* routy (data loadery) a server actions.
  • Tenant scope a oprávnění se kontrolují na serveru před zpřístupněním dat nebo provedením změny. Pořadí se mezi routami liší; samotné ID zdroje není přístup.
  • UI může skrývat akce, ale skrývání v UI není bezpečnost.

Interakce se subscription

RBAC odpovídá “smí to uživatel udělat?”, zatímco subscription gating odpovídá “je tato funkce dostupná?”.

Pro gated akce (např. pokročilé exporty) musí projít obě:

  • export akce na /app/projects/[projectId]/results:
  • základní CSV export vyžaduje export_results a platný, exportovatelný výsledek
  • nový pokročilý PDF/XLSX export vyžaduje export_results, aktivní předplatné, advanced_exports a splnění projektových/technických kontrol

Ani Owner/Admin nemohou pouhou rolí schválit vlastní revizi dokumentu nebo obejít požadovanou kvalifikaci. Podmínky konkrétní revize, nezávislého schválení a odborných/provozních kroků se vyhodnocují odděleně od této základní RBAC vrstvy.