Lekce 10 - Objekty systému ObjectGears - Role a řízení přístupu
V minulé lekci, Aplikační katalog a Konfigurační databáze CMDB v ObjectGears, jsem se podívali na Aplikační katalog jako ukázku využití dat z Konfigurační databáze CMDB a zobrazení pro uživatele mimo IT.
V dnešním ObjectGears tutoriálu si ukážeme vlastnosti
objektu Role
a způsob řízení přístupu
uživatelů. Zároveň si popíšeme základní tři druhy
uživatelů.
Nedílnou součástí každého systému musí být řízení přístupu uživatelů k datům. Ten umožňuje uživatelům zobrazit jen ty záznamy a stránky, na které mají oprávnění. Má je i systém ObjectGears a v tomto článku si vysvětlíme, jak to celé funguje.
Práva na jednotlivé části systému ObjectGears (data ve třídách a dotazech, přístupy na stránky…) se uživatelům nepřidělují přímo, ale pomocí rolí. To umožňuje lepší zaměnitelnost uživatelů. Pokud je uživatel přidělen na novou práci, pak stačí přiřadit mu požadované role a není nutné zjišťovat, které objekty by měl vidět na čtení či zápis. Při odchodu uživatele opět jen postačí role odebrat.
Uživatel má přidělené role a to přímo v ObjectGears nebo pomocí externího systému, např. ActiveDirectory. Tyto role jsou následně přiděleny k objektům (např. třídám) s konkrétní operací. U třídy se jedná o operace pro čtení, zápis, mazání, hromadné operace a další.
Na obrázku vidíme přidělení oprávnění k určitým operacím pro role
IT Architect
a
Všichni autentizovaní uživatelé
:
Druhy uživatelů
Systém ObjectGears rozlišuje tří druhy uživatelů:
- Administrátor – má plná práva na správu systému. Jediné co nemůže, je pracovat s daty a formuláři. Nicméně si může přidělit příslušné role, či vyčíst data pomocí skriptů.
- IT vlastník – má práva jako administrátor, ale jen pro konkrétní model, kde je přiřazen. Na objekty správy mimo modely nemá přístup (např. joby, role…).
- Uživatel – má práva jen na objekty, které mu byly přiděleny pomocí rolí.
Optimálně budeme mít 1-3 administrátory (kvůli zástupnosti), několik IT vlastníků, kteří budou rozvíjet jim přidělené modely a pak běžné uživatele. Při menším IT oddělení mohou být všichni lidé z IT týmu nastaveni jako administrátoři a rozvíjet všechny naše modely.
Pokud se mezi uživateli najde zkušený člověk s logickým myšlením a menší znalostí programování, je dobré jej zahrnout do tvorby modelů. Stačí jej nastavit jako IT vlastníka modelu a nechat jej samostatně model rozvíjet. Složitější skriptování, či úpravy v databázi si může vyžádat od IT týmu.
Tím docílíme většího zapojení business uživatelů a odlehčíme IT týmu. Zároveň tak uživatelé lépe přijmou celý systém ObjectGears s modely, protože se na rozvoji budou sami aktivně podílet. Hromada zlepšovacích návrhů, které si částečně mohou udělat i sami, je jen třešničkou na dortu
Role
Základem všeho jsou role. Při vytváření rolí je vhodné dopředu rozmyslet, jaké typy uživatelů budou mít do modelu přístup a podle toho vytvořit role. Např. do modelu bude mít přístup manager, který ale potřebuje jen práva na čtení. Dále operátor, který bude záznamy vytvářet a měnit. Můžeme vytvořit i roli pro správce modelu, který bude mít práva na všechny záznamy včetně číselníkových tříd.
Není vhodné vytvářet role typu Model_čtení
,
Model_insert
, Model_update
, protože požadovaný
přístup většiny typů uživatelů k objektům se nedá jednoduše rozdělit
na čtení, vkládání,
změna.
Na obrazovku se seznamem rolí se dostaneme pomocí levého menu Správa => Řízení přístupu => Role:
U každé role v seznamu je zobrazen její kód, název a zda je povolena. Kliknutím na její ID v prvním sloupci si zobrazíme detailní informace o roli.
Kliknutím na tlačítko Nový se zobrazí prázdný formulář pro zadání nové role:
Popis vlastností role je následující:
- Kód – slouží pro práci s rolí pomocí skriptování,
- Název – lokalizovaný název role, který se v systému zobrazuje při přiřazení k jiným objektům,
- Externí skupina – název role v externím poskytovateli rolí, např. ActiveDirectory. Podle tohoto názvu se role přiřazená uživatelům napáruje s rolí v systému Objectgears a uživatel tak získá práva na objekty v systému Objectgears,
- Povoleno – příznak umožňuje rychle zapnout/vypnout roli v celém systému,
- Ihned přiřadit uživateli – při zaškrtnutí je role ihned při přihlášení uživatele přiřazena. V opačném případě má uživatel na roli nárok, ale musí si ji explicitně sám povolit (viz. dále).
Nastavení Ihned přiřadit uživateli umožňuje uživatelům si zakázat roli, pokud by k ní byla navázána činnost, kterou nechtějí omylem spustit. Například pokud jednou za měsíc spouštíme kontrolu, schvalujeme, expedujeme a nechceme danou funkcionalitu spustit omylem, pak roli takto označíme. Před vlastním spuštěním funkcionality si uživatel zobrazí svůj profil, roli si povolí, provede danou funkcionalitu a roli si opět zakáže. Celé to slouží pro zvýšení bezpečnosti či zamezení chybného spuštění funkcionality.
V sekci Použití role je zobrazeno, k jakému modelu je role přiřazena. Pokud je přiřazování rolí řízeno systémem ObjectGears, pak je zobrazen i seznam uživatelů s danou rolí.
Přiřazení role
Role jsou uživatelům přiřazovány dvěma způsoby:
- Přímo v systému ObjectGears. V detailu uživatele administrátor jednotlivým uživatelům přiřazuje požadované role. Toto nastavení je vhodné při nasazení na veřejný hosting mimo firemní doménu.
- Přiřazení rolí uživatelům se přebírá z externího systému, např ActiveDirectory. Přiřazování rolí je tak ve firmě řízeno centrálně pro všechny aplikace.
Volba nastavení se provádí pomocí konfiguračního
parametru AssignRoleToUser
v souboru web.config
.
Systémové role
V systému existuje několik systémových rolí, které nelze smazat, ale umožňují vybrat specifickou skupinu uživatelů:
- Všichni uživatelé – tuto roli mají automaticky všichni uživatelé,
- Všichni autentizovaní uživatelé – tuto roli mají přihlášení uživatelé,
- Všichni nepřihlášení uživatelé – tuto roli mají nepřihlášení uživatelé,
- Tvorba reportů - tato role umožnuje uživatelům vytvářet a měnit uživatelské reporty.
Přiřazení rolí k objektům
Po vytvoření role je potřeba ji přiřadit ke konkrétním objektům (třídy, dotazy, stránky, tlačítka…). V prvním kroku je nutné roli povolit na daném modelu. Pak je možné v daném modelu roli používat.
V detailu modelu si zobrazíme záložku Role a zobrazení. Vybereme požadovanou roli ze seznamu a klikneme na tlačítko Přidat. Po přidání rolí celý model uložíme pomocí tlačítka Uložit.
Na obrázku vidíme, že pro model EasyTask
, jsou vybrány role
IT Architect
a
Všichni autentizovaní uživatelé
:
V detailu třídy již můžeme roli přidat na záložce Role a zobrazení. Ve výběru Role vybereme roli, zaškrtneme jednu nebo několik operací, které chceme s rolí povolit a klikneme na tlačítko Přidat.
Po přidání všech požadovaných rolí třídu uložíme pomocí tlačítka Uložit:
Roli můžeme povolit pro všechny operace na třídě nebo můžete použít více rolí pro různé kombinace operací. Jednu na čtení, druhou na aktualizaci, další na hromadné mazání.
Podobně jako u třídy se nastavují role u dotazu, stránek, tlačítek, importů a exportů. Jen mají trochu odlišné operace.
Povolení a zakazování rolí
Díky hierarchii přiřazení Role-Model-Objekt (třída, dotaz, tlačítko, import, export) je umožněno povolovat a zakazovat role na různých úrovních. Zakázání je dobré, pokud chceme funkcionalitu nebo roli dočasně zakázat, ale zatím ji nechceme odstraňovat z nastavení.
Zakázání role
V detailu role je možné zrušením volby Povoleno zakázat roli v celém systému ObjectGears.
Zakázání role u modelu
V detailu modelu zakážeme roli jen pro daný model. Pro zakázání/povolení stačí jen kliknout na Ano/Ne ve sloupci Povoleno v seznamu přiřazených rolí.
Zakázaná role na modelu je pak podbarvena šedě, jak je vidět na obrázku:
Pokud je zakázána přímo role, pak bude její název vypsán kurzívou.
Zakázání role u objektu
U koncových objektů nelze roli zakázat, ale jen odebrat. I zde se zakázané role nebo role zakázané na modelu zobrazují kurzívou.
Správa rolí
Ze seznamu rolí nebo od modelu si můžeme zobrazit stránku Správa rolí. Ta nám umožňuje hromadně prohlížet, vyhledávat, přiřazovat, mazat role u všech objektů:
V horní části stránky jsme vybrali model
EasyTask
a v záložce Třídy typ objektu, který chceme
zobrazit. V prostřední části máme tlačítka pro
přidání rolí k vybraným (zaškrtnutým) objektům níže, případně
jejich odebrání. Ve Filtr, v dolní části,
můžeme upřesnit, které záznamy chceme vidět. V reálném modelu jich bude
opravdu hodně. Zaškrtávátkem na každém záznamu vybíráme konkrétní
objekt (na obrázku se jedná o třídu) pro další zpracování.
Stránku Správa rolí použijeme, pokud potřebujeme zkontrolovat, zda jsou správně role přiřazené a není objekt bez rolí. Zároveň po vytvoření nového modelu zde lehce přiřadíme role k více objektům najednou, což nám ušetří čas. A v neposlední řadě na jedné stránce můžeme roli hromadně odebrat od více objektů.
V další lekci, Údržba logů v systému ObjectGears, se zaměříme na správný přístup k údržbě logů pro zajištění větší stability systému.