# Systém přístupových práv uživatelů

V prostředí systému Control Web je pro ochranu běžících aplikačních programů proti neautorizovaným zásahům nepovolaných osob k dispozici systém přístupových práv uživatelů. Tento systém nejen zabrání osobě bez příslušného oprávnění zastavit aplikační program, ale prakticky každá programová komponenta může mít definovánu úroveň přístupových práv uživatele, který je oprávněn s patřičnou komponentou manipulovat. V praxi to tedy znamená, že neoprávněný uživatel nedokáže např. pohnout knoflíkem nebo stisknout tlačítko.

V prostředí Windows je samozřejmě možno určitými prostředky ukončit jakoukoli aplikaci, tedy i takovou která na zasílané zprávy s povelem k ukončení nereaguje. Takovému "násilnému" ukončení aplikačního programu ani systém přístupových práv uživatelů dost dobře nedovede zabránit. Stejně tak není možno zabránit zastavení programu prostým vypnutím počítače.

Každý aplikační program v prostředí systému Control Web není takto vždy automaticky chráněn. Nutnost přihlašování uživatele by pro řadu aplikací, které žádnou ochranu nepotřebují, pouze zbytečně komplikovala práci. Systém přístupových práv uživatelů je v případě potřeby nutno v rámci aplikačního programu aktivovat. To můžete učinit buď zapnutím v grafickém vývojovém prostředí v záložce "Systém" záložky "Datové inspektory" nebo doplněním sekce

    login
    end_login;

v textové podobě aplikace. Po spuštění takové aplikace je pak v task-baru trvale k dispozici okno, ve kterém se může každý uživatel přihlásit svým jménem a heslem. Nepřejete-li si, aby přihlašovací okno bylo trvale viditelné, zapněte v grafickém prostředí jeho neviditelnost nebo zadejte v textu do sekce login parametr invisible a přihlašovací okno zůstane i po rozběhu aplikace skryto. Okno se pak ukáže při současném stisku kláves <Ctrl>+<Alt>+<Space>. Touto kombinací kláves se rovněž obnoví viditelné přihlašovací okno, je-li právě minimalizováno v liště s úlohami.

Okno pro přihlášení uživatele

## Definice uživatelů

To, jestli je systém hlídání přístupových práv aktivní či nikoliv, je vždy dáno právě spuštěnou aplikací. Seznam autorizovaných uživatelů spolu s jejich přístupovými právy již ale není svázán s jednotlivými aplikacemi, ale s počítačem - přesněji řečeno s instalací systému Control Web. Není-li však v aplikaci sekcí login systém přístupových práv aktivován, není seznam uživatelů nijak využíván, a aplikační program může ovládat každý bez jakéhokoliv omezení.

Jednotlivé uživatele a jejich přístupová práva je oprávněn zadávat pouze správce systému. Zde se můžete ptát, kdo tedy definuje správce systému. Je to však velmi prosté, správcem systému se může prohlásit kdokoliv, kdo si v prostředí, které jestě nemá stanoveného správce, zadá heslo správce, které ostatní neznají. Správce systému se v prostředí Control Web přihlašuje rezervovaným jménem root a svým heslem.

Jakmile jste se již prohlásili správcem systému, můžete přidávat nebo odstraňovat jednotlivé uživatele a stanovovat jim úrovně přístupových práv. To můžete učinit dvěma způsoby:

1. Ve vývojové verzi můžete spustit "Průvodce přístupovými právy uživatelů". Zde můžete mimo jiných nastavení také editovat seznam uživatelů a jejich přístupových práv. Přístup k tomuto seznamu je zde také možný jen po ověření hesla správce systému.

Editace seznamu autorizovaných uživatelů prostřednictvím "Průvodce přístupovými právy uživatelů"

2. Za běhu jakékoliv aplikace s aktivovaným systémem kontroly přístupových práv se přihlásíte jako správce systému. Poté můžete stiskem tlačítka "Uživatelé" vyvolat dialogové okno se seznamem autorizovaných uživatelů.

Editace seznamu autorizovaných uživatelů za běhu aplikačního programu

Editor seznamu uživatelů je v obou případech stejný a má podobu snadno ovladatelné a přehledné tabulky. Zajímavá je možnost dovezení nebo vyvezení seznamu uživatelů prostřednictvím souboru. Veškerá data o uživatelích tak můžete uložit na disketu a snadno přenést např. na všechny počítače distribuovaného systému. Do souboru je uloženo i heslo správce systému – při dovozu dat ze souboru je přeneseno i heslo správce. Máte-li tedy na disketě uložena data z doby, ze které si již své heslo správce nepamatujete, raději tato data do systému nepřenášejte. Data jsou při vývozu šifrována a tak nemusíte mít příliš obav z úniku citlivých dat ani při případné ztrátě diskety.

Jednotliví uživatelé si mohou měnit svá hesla jen za běhu aplikačního programu

Data o uživatelích jsou uložena v registru systému Windows. I zde jsou samozřejmě zašifrována. Nikdy se proto nepokoušejte tato data modifikovat přímo prostřednictvím editoru registru.

## Přístupová práva

Každý autorizovaný uživatel má správcem systému stanovenu úroveň svých přístupových práv. Tato úroveň je definována celým číslem v rozsahu od nuly do více než čtyř miliard. Nejvyšší úrovní je nula. Tuto úroveň přístupových práv má automaticky správce systému. Správce však může tuto nejvyšší úroveň přidělit také libovolným uživatelům.

Ochrana aplikačního programu před neautorizovaným přístupem je vyřešena jednoduchým mechanizmem. Každému přistroji, ve kterém je možno něco za běhu nastavovat lze při vývoji aplikace zadat parametr access_level. Přístroj pak umožní přístup jen těm uživatelům, jejichž přístupová práva jsou dána číslem stejným nebo nižším, než jak je nastaven parametr access_level. Kurzor myši má nad nepřístupnými přístroji tvar zámku. Stejně tak jako ovládání prostřednictvím myši jsou hlídány a případně blokovány i veškeré události od klávesnice. Zasáhnout do aplikačního programu je pro neautorizovaného uživatele opravdu nemožné.

### Přístupová práva u přístroje httpd

Velmi často jsou v roli klienta systému Control Web používány standardní www prohlížeče. Samostatnou a zajímavou otázkou je proto také ochrana aplikačního programu před neautorizovaným přístupem v sítích Internetu a intranetu. HTML dokumenty pro internetové prohlížeče jsou dynamicky generovány virtuálním přístrojen httpd, který je standardní součástí systému Control Web. Vzhledem k tomu, že HTML rozhraní aplikačního programu může být tvořeno také pouze čistým HTML kódem bez využití Java appletů nebo ActiveX komponent, je nutno hlídat přístup k jednotlivým stránkám a k internetovému serveru jako celku.

Je-li v aplikaci systém kontroly přístupových práv aktivován, pak také při přístupu prostřednictvím standardního www prohlížeče přes HTTP protokol je vyžadováno zadání jména a hesla uživatele. Není-li systém kontroly přístupu v aplikaci použit, pro přístup k HTML rozhraní stačí znalost IP adresy nebo jména domény.

V případě využití HTML rozhraní systému Control Web) je zde ještě jeden velmi podstatný prvek bezpečnosti. Přístroj httpd umožnuje přístup jen k těm datům a komponentám aplikačního programu, které ve svém návrhu zpřístupní autor aplikace. Ani autorizovanému uživateli tedy není žádným způsobem umožněn přístup k těm datům aplikace, o jejichž nepřístupnosti rozhodl autor aplikace.

Jméno uživatele i jeho heslo je při přihlašování v prostředí WWW prohlížeče přenášeno standardnímí prostředky protokolu HTTP. Údaje tedy nejsou při přenosu zašifrovány, jsou pouze kódovány standardem MIME64. To je nutno brát v úvahu zejména při připojení přes veřený Internet. Vyšší bezpečnost je vhodné zajistit dalšími prostředky pro hlídání přístupu v Internetu a intranetových sítích, jako je např. oddělení přes fire-wall. Prakticky naprostou jistotu bezpečnosti i při propojení kritických aplikací přes veřejný internet poskytuje přímá šifrovaná TCP/IP komunikace mezi systémy Control Web. Ta však již není záležitostí přístroje httpd.

## Zastavení aplikace

)

Zastavení aplikace je nepochybně dosti zásadním zásahem do běhu programu. Proto je při aktivovaném systému přístupových práv umožněno zastavit aplikaci pouze uživatelům s nejvyšší možnou úrovni. Kromě správce systému jsou to všichni s úrovní nula.

Bez příslušných práv program nezastavíte

### Systémová nativní procedura StopApplication

Existuje ještě jedna možnost zastavení aplikačního programu (samozřejmě mimo chyby za běhu aplikace, např. dělíte-li v aplikačním programu nulou, bude tento rovněž zastanen bez ohledu na úroveň práv právě přihlášeného uživatele). Touto možností je systémová nativní procedura StopApplication. Zavoláním této procedury může aplikační program zastavit sám sebe kdykoliv, a to nezávisle na tom, jaký uživatel je zrovna do systému přihlášen. Nechcete-li tuto možnost připustit, musíte volat proceduru StopApplication podmíněně. Jméno a úroveň práv aktuálně přihlášeného uživatele jsou trvale k dispozici v systémových proměnných. Rozhodnutí, zda zastavení aplikace povolit je už v tomto případě pouze na vás.

## Umístění dat o uživatelích a jejich přenos mezi různými počítači

Jak již bylo uvedeno v sekci Definice uživatelů, veškerá data o uživatelích jsou uložena v registru systému Windows. Aby se nikdo nepovolaný nemohl dozvědět cizí hesla, je záznam v registru zašifrován.

Veškerá tato data mohou být rovněž uložena do souboru a v této podobě přenášena mezi jednotlivými počítači. Do souboru je rovněž uloženo i heslo správce systému, které je při dovozu ze souboru rovněž přeneseno na cílový počítač. Rozšíření celého systému uživatelských práv na více počítačů je tak velmi snadné a rychlé – samozřejmě jen pro správce systému. Pro nepovolanou osobu jsou nástroje pro vývoz i dovoz dat nepřístupné.

Editory dat jsou k dispozici buď prostřednictvím "Průvodce přístupovými právy uživatelů" nebo za běhu jakékoliv aplikace je v přihlašovacím okně editor dat o uživatelích možno při přihlášeném správci systému vyvolat tlačítkem "Uživatelé".

## Události šířené při přihlášení uživatele

Řídí-li se aplikační program informací o aktuálním uživateli, může si jméno uživatele a jeho úroveň přečíst ze systémových proměnných user_name a user_level. Není však jasné, kdy by tato informace měla být čtena. Periodické čtení a testování dat v systémových proměnných by bylo velmi neefektivní. Proto může být v sekci login definován seznam přístrojů, které budou aktivovány při každém přihlášení i odhlášení uživatele. Seznam přístrojů je stejně jako všude jinde uvozen klíčovým slovem receivers.

    login
      receivers = vitrual_instrument_1, vitrual_instrument_2;
    end_login;

Takto mohou být snadno evidovány všechny změny uživatelů včetně nepodařených pokusů o přihlášení. Seznam aktivovaných přístrojů můžete vytvářet a upravovat buď v oblasti datových inspektorů integrovaného vývojového prostředí nebo pomocí "Průvodce přístupovými právy uživatelů".

### Možnost archivace událostí systému kontroly přístupových práv virtuálním přístrojem journal

Nejjednodušší možnost řešení archivace veškerých přihlašování (i neúspěšných) a odhlašování jednotlivých operátorů přináší virtuální přístroj journal. Tento přístroj je určen pro sledování vybrané sady dat a archivaci veškerých změn. Zde postačí pouze zapnout volbu "Registrovat" u parametru (vodorovné záložky) register_login nebo uvést příznak

    register_login;

do zdrojového textu přístroje. O další vazby či šíření událostí mezi takovýmto přístrojem journal a systémem kontroly přístupových práv se již nemusíte starat. Přístroj journal totiž dokáže zpracovávat vnitřní systémové události šířené systémem kontroly přístupových práv.

### Možnost přenosu informací o přihlašování uživatelů do ovladačů

Ovladače vstupně-výstupních zařízení jsou samostatnými komponentami systému Control Web. Jejich funkce může být kromě zprostředkování čtení a zápisu kanálů prakticky libovolná. Proto může být někdy užitečné, má-li také ovladač vstupně/výstupního zařízení k dispozici aktuální informaci o právě přihlášeném uživateli. Má-li nějaký ovladač být informován o událostech systému kontroly přístupových práv, musí ve své proceduře DriverProc zachycovat zprávu cw_drv.dpfLogin.

    DriverProc( cw_drv.dpfLogin : CARDINAL,
                LoginLevel : CARDINAL,
                AddressOfLoginNameString : CARDINAL, 0, 0 );

Další parametry pak obsahují úroveň práv aktuálně přihlášeného uživatele a adresu na řetězec s jeho jménem. Není-li nikdo přihlášen, má LoginLevel hodnotu MAX( CARDINAL ) a LoginName obsahuje text 'none'. Podrobnější informace o mechanizmech komunikace mezi ovladači a systémem a o programovém rozhraní ovladačů vstupně/výstupních zařízení naleznete v druhém dílu dokumentace v kapitole Komunikace, ovladače a kanály).

## Shrnutí

- každá aplikace není automaticky chráněna, chcete-li využívat systém ochrany před neautorizovanými zásahy, je nutno jej v dané aplikaci aktivovat
- přihlašovací okno může být skryté, tj. neviditelné na pracovní ploše
- neviditelné i minimalizované přihlašovací okno se vyvolá současným stiskem kláves <Ctrl>+<Alt>+<Space>
- nejjednodušší možností nastavení všech parametrů systému kontroly přístupových práv je využití služeb "Průvodce přístupovými právy uživatelů"
- seznam autorizovaných uživatelů je společný pro danou instalaci systému Control Web, není tedy spjat s aktuální aplikací
- virtuální přístroj umožní přístup jen těm uživatelům, jejichž přístupová práva jsou stejná nebo nižší, než jak je nastaven parametr access_level tohoto přístroje
- definovaní uživatelé jsou kontrolováni i při přístupu přes internet a intranet k vestavěnému serveru httpd
- zavolání systémové nativní procedury StopApplication zastaví aplikaci bez ohledu na přístupová práva
- můžete definovat seznam přístrojů, které budou aktivovány při každém přihlášení i odhlášení uživatele
- události systému kontroly přístupových práv můžete evidovat a archivovat virtuálním přístrojem journal
- události systému kontroly přístupových práv jsou prostřednictvím mechanizmu DriverProc přenášeny i do ovladačů vstupně/výstupních zařízení
- jste-li správcem systému, nezapomeňte své heslo