|
![]() | Skupiny uživatelů a jejich správa | ![]() | Práva a jejich subjekty | Export a import uživatelů ze serveru | ![]() |
Role jsou nástrojem, jak zprostředkovat uživatelům práva ke specifickým akcím nebo datům a aplikaci. Autor aplikace definuje role podle logiky aplikace a přidělí jim práva. Administrátor aplikace obsadí uživatele nebo skupiny do těchto rolí a tím jim předá příslušná práva.
Například v ekonomickém systému existuje akce "Vytvořit novou fakturu". Právo provést tuto akci budou mít pouze někteří uživatelé systému. Proto:
Autor aplikace nezná uživatele, kteří budou jeho aplikaci používat, proto jim nemůže přidělovat práva. Administrátor aplikace nezná vnitřek aplikace do té míry, aby věděl, se kterými objekty se pracuje při zakládání faktury. Proto role jsou spojovacím můstkem mezi autorem a provozovatelem aplikace.
Při vytvoření nové aplikace vzniknou 4 standardní role. Při vytvoření nového objektu v aplikace se těmto standardním rolím přidělí tato práva:
Standardní role | Implicitní práva |
Author | Právo modifikovat nebo rušit všechny objekty v aplikaci |
Administrator | Právo číst a přepisovat data ve všech tabulkách a používat všechny objekty |
Senior_user | Právo číst a přepisovat data ve všech tabulkách a používat všechny objekty |
Junior_user | Právo číst data ve všech tabulkách a používat všechny objekty |
Implicitně přidělená práva standardním rolím slouží pouze jako pomůcka pro nejběžnější situace. Autor aplikace může přidělení práv těmto rolím jakkoliv změnit a může tyto role z aplikace i odstranit.
Kromě toho má role Administrator oprávnění, která jí nemohou být odebrána: právo obsazovat uživatele a jejich skupiny do všech rolí a právo zrušit celou aplikaci.
Roli v aplikaci lze vytvořit SQL příkazem CREATE ROLE, zrušit příkazem DROP ROLE. Jméno role nesmí začínat číslicí.
Právo obsazovat do rolí má administrátor aplikace (tj. uživatel obsazený do role Administrator ve stejné aplikaci) a také (pro řešení mimořádných situací) bezpečnostní správce serveru.
V tzv. zamčené aplikaci je obsazování do role Author znemožněno.
Neinteraktivně se do rolí obsazuje z SQL pomocí funkce Set_membership, z klientského API pomocí funkce Get_set_group_role. Interaktivně lze obsazovat z Řídicího panelu.
Pro zjištění, zda nějaký subjekt práva je obsazen do role, slouží systémový dotaz _IV_SUBJECT_MEMBERSHIP nebo SQL funkce Get_membership.
V nově vytvořené aplikaci je tvůrce obsazen do rolí Author i Administrator. Pro nově vytvářené objekty se přidělují práva standardním rolím dle popisu výše.
Pokud si autor přeje, aby některá komponenta mohla být modifikována za provozu aplikace, poskytne práva k jejímu přepisu některé roli (jiné než Author).
Pokud si autor přeje omezit práva k datům v některé tabulce, odebere tato práva standardním rolím. Například tabulka obsahující důvěrné dokumenty jednotlivých uživatelů bude mít práva přidělovaná na úrovni záznamů a globální práva ke všem záznamům nemusí mít žádná role (ani Administrator).
Zrušit aplikaci jako celek může pouze uživatel obsazený do role Administrator nebo Author, a také (pro řešení mimořádných situací) bezpečnostní správce serveru. Mohou k tomu použít SQL příkaz DROP SCHEMA nebo Řídicí panel klientského prostředí. Při rušení celé aplikace se netestují práva k jednotlivým komponentám.
Samostatné rušení objektů se řídí jednotlivě nastavením práva zrušit objekt. Standardně se toto právo přidělí uživateli, který objekt vytvořil, a roli Author. Pokud toto právo není explicitně poskytnuto jiným rolím, v zamčené aplikaci nebude mít právo rušit komponenty nikdo.
Aplikace se může exportovat pro dvě různé třídy účelů:
V druhém případě říkáme, že aplikace je exportována jako zamčená.
Po importu aplikace je uživatel, který import provedl, obsazen do role Administrator. Mimo to nezíská žádná další práva. Možnost zasahovat do komponent aplikace závisí na tom, zda aplikace je zamčená:
Dále je po importu obsazena skupina Everybody do role Junior_user.
![]() | Skupiny uživatelů a jejich správa | ![]() | Práva a jejich subjekty | Export a import uživatelů ze serveru | ![]() |