602SQL-Úplná dokumentace Index  

Práva při provádění uložených procedur a vyhodnocování dotazů

Při provádění uložených procedur a při vyhodnocování dotazů se kontrolují práva uživatele, který zavolal proceduru nebo položil dotaz. Existují však případy, kdy je třeba ve vymezeném rozsahu tato práva obejít:

Autor aplikace má možnost označit procedury a dotazy, jejichž provádění nebude v rámci schématu omezováno přístupovými právy. Říkáme, že se pro proceduru nebo dotaz zapne administrátorský režim. Právo zavolat takovou proceduru nebo položit dotaz bude kontrolováno i nadále, ale v rámci jejich vyhodnocování již nebudou kontrolována práva k objektům ze stejného schématu.

Procedury a dotazy, kterých se to týká, se označí voláním funkce Admin_mode nebo checkboxem Provádět v administrátorském režimu na záložce Vlastnosti okna Výstupy.

Toto označení smí provést pouze uživatel obsazený do role Author. Označení je persistentní a tudíž se zachovává při vypnutí serveru nebo exportem a importem aplikace. V zamčené aplikaci není možné zapínat administrátorský režim (zamčená aplikace neumožňuje obsadit do role Author).

Níže uvedený dotaz vybírá z dokumentů v tabulce DOCTAB ty, které uživatel smí číst a obsahují slovo "Orinoko":

SELECT Contents FROM Doctab WHERE Has_select_privil(Contents,2) AND Position("Orinoko" In Contents)>0

Tento dotaz nelze položit přímo, protože uživatel nemá globální právo ke sloupci Contents a nemůže jej použít v podmínce WHERE ve funkci Position. Pokud je dotaz označen pro provádění bez kontroly práv, pak funguje a přitom přístupová práva neporušuje.

Přehled oprávnění v administrátorském režimu

V proceduře prováděné v administrátorském režimu lze:

Všechna tato oprávnění se týkají dat a objektů ve stejném schématu, v němž se nachází procedura prováděná v administrátorském režimu.

Pokud procedura prováděná v administrátorském režimu otevře a vrátí kurzor, nezaručuje to plný přístup k datům zpřístupněným tímto kurzorem. Práva se vyhodnotí podle oprávnění subjektu, který s kurzorem pracuje. Administrátorský režim platí tedy pouze uvnitř procedury a kurzor předaný ven jej nezdědí.