602SQL-Úplná dokumentace Index  

Role a práva v aplikaci

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:

  1. autor aplikace založí roli Fakturant a přidělí jí všechna práva potřebná k založení faktury - například právo vložit záznam do tabulky faktur a do tabulky položek vyskytujících se na faktuře, právo číst tabulku obchodních partnerů atd.
  2. administrátor aplikace obsadí do role Fakturant všechny ty uživatele, kteří budou mít oprávnění vytvářet faktury, případně jako celek skupinu uživatelů, kteří patří do fakturačního oddělení.

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.

Standardní role

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.

Vytváření rolí

Roli v aplikaci lze vytvořit SQL příkazem CREATE ROLE, zrušit příkazem DROP ROLE. Jméno role nesmí začínat číslicí.

Obsazování do rolí

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.

Vytvoření nové aplikace

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).

Rušení aplikace a jejích komponent

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.

Export a import aplikace

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.