Moravské přístroje, a. s., zdroj: https://www.mii.cz/art?id=1145&lang=405, vytištěno: 30.04.2025 7:44:42
Hlavní stránka▹Produkty▹Programový systém Control Web▹Články | 30.3.2023 |
---|
Kybernetická bezpečnost a zabezpečení aplikací patří k aktuálním tématům. Následující článek popisuje řešení této problematiky v systému Control Web. |
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 omezen přístup jen na určitou skupinu uživatelů, která je oprávněna 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 OS 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ůžeme učinit v grafickém vývojovém prostředí v záložce Datové inspektory. Ve stromu vybereme v položce Nastavení aplikace větev Zabezpečení aplikace a zde nastavíme požadované hodnoty u nabízených parametrů. Ve zdrojovém textu se nastavení projeví v sekci settings v podsekci security. Definice parametrů zabezpečení aplikaceParametry sekce security.
Přístupová právaSystém definice přístupových práv uživatelů je různý pro základní a pokročilé zabezpečení. U základního (basic) se užívají pro definici přístupu úrovně definované číslicemi (UID) a u pokročilého zabezpečení se přístupy definují pomocí uživatelských rolí. V systému vždy existuje alespoň jeden uživatel s funkcí správce systému. Přihlašovací jméno tohoto uživatele je root. Upozornění: U nově nainstalovaného systému Control Web uživatel root nemá přiděleno žádné heslo. Je tedy nanejvýš žádoucí, aby se správce systému co nejdříve přihlásil pod tímto jménem a definoval heslo správce na daném počítači. Základní zabezpečení - basicKaždý autorizovaný uživatel má správcem systému přiděleno určité číslo (UID — User Identifier). Tato čísla mohou být v rozsahu od nuly do více než čtyř miliard. Mezi jednotlivými UID čísly není obecně žádný vztah, je to prosté nahrazení potencionálně dlouhého jména jediným číslem. Význam UID je jiný — tato čísla se rovněž vyskytují v aplikaci jako hodnoty parametrů přístrojů definujících přístupová práva. Při tvorbě aplikace samozřejmě netušíme, kteří konkrétní uživatelé budou s aplikací pracovat. S pomocí zvolených UID ale můžeme definovat strukturu přístupu uživatelů. Je pak na správci konkrétní instalace aplikace, aby definoval konkrétní uživatele a jim odpovídající UID. UID je tak spojovací článek mezi aplikací, která pracuje pouze s číselnými identifikátory, a během aplikace na určitém počítači, na kterém jsou definováni skuteční uživatelé. Jak bude vysvětleno později, lze přístupová práva přidělovat nejen po jednotlivých číslech, ale i po intervalech (např. přístup mají všichni uživatelé s UID 100 až 199, není nutno vyjmenovávat všech 100 uživatelů). Přidělení čísel z určitého intervalu skupině uživatelů, jež mají mít stejná práva, tak může být velmi výhodné. Samozřejmě více uživatelů může mít přiděleno jediné číslo UID. Z hlediska systému pak ale práva těchto uživatelů nelze rozlišit. Výjimečné postavení má UID nula. Uživatel s touto identifikací má automaticky právo provádět jakékoliv akce a má přístup ke všem částem systému. UID nula náleží zabudovanému správci systému, mohou ji však mít i další uživatelé. Ti pak mají práva shodná se správcem, nemusí ale znát heslo skutečného správce a do systému se nepřihlašují pod jménem root, ale pod svým jménem. Pokročilé zabezpečení - advanced a strongNarozdíl od základního zabezpečení jsou uživatelská oprávnění v pokročilém režimu definována pomocí uživatelských rolí. Uživatelské roleUživatelské role umožňují komfortnější správu uživatelských oprávnění. V rámci definice role lze nastavovat kromě přístupové úrovně i další oprávnění a možnosti. Role je v systému identifikována svým jedinečným jménem, kterým je přiřazována uživatelům a přístrojům. Role se definují v rámci aplikace v Datových inspektorech. Parametry sekce roles.
Přístupová práva virtuálních přístrojůKaždý viditelný virtuální přístroj umožňuje definovat přístupová práva parametrem access.Tento parametr obsahuje v hranatých závorkách výčet UID, kteří mají ke konkrétnímu přístroji přístup nebo výčet uživatelských rolí s povoleným přístupem. Parametr access tak může vypadat např. následovně: access = [ 1..5, 8, 10..20 ], Dispečer, Operátor; Přístupová práva virtuálních přístrojů - basicPro security_mode = basic je přístup k přístroji definován výčtem UID. access = [ 1..5, 8, 10..20 ]; Tento zápis povoluje přístup všem uživatelům s UID 1 až 5, 8 a 10 až 20. Uživatel s UID 0 (root a případně další uživatelé) mají přístup samozřejmě také zajištěn. V Inspektoru přístrojů je parametr access v tabulce popisující vzhled přístroje (sekce gui). Aby nebylo nutno ručně zadávat intervaly, pomocné okno usnadňuje editaci: Poznámka: Systém přístupových práv ve verzi Control Web 2000 a v předchozích verzích nebyl obecný, ale hierarchický. Přístupová práva přístroje byla představována jediným číslem, definujícím maximální hodnotu UID uživatele, který má k dané komponentě přístup. Např. úroveň přístupu 100 zaručovala, že všichni uživatelé s přidělenými UID 0 až 100 měli přístup zajištěn, ostatní uživatelé s většími čísly nikoliv. Tento mechanismus ale nepostihoval situaci, kdy bylo nutno zajistit přístup výlučně — jeden uživatel k jednomu přístroji a druhý uživatel k druhému přístroji. Aby systém Control Web zajistil kompatibilitu s aplikacemi pro předchozí verze systému, načítá parametr access = 100; který povoloval přístup všem uživatelům s přidělenými čísly od 0 do 100 a interpretuje jej jako parametr access = [ 0..100 ]; Tím je zajištěna kompatibilita starých aplikací s novým systémem přístupových práv. Přístupová práva virtuálních přístrojů - advanced a strongPro security_mode = advanced a security_mode = strong je přístup k přístroji definován výčtem uživatelských rolí. access = Dispečer, Operátor; Tento zápis povoluje přístup všem uživatelům s přiřazenou rolí Dispečer nebo Operátor a samozřejmě s rolí root. I inspektoru přístrojů je parametr access v tabulce popisující vzhled přístroje (sekce gui). Aby nebylo nutné ručně zadávat výčet rolí, pomocné okno usnadňuje editaci: Poznámka: Z důvodu kompatibility lze kombinovat výčet rolí i s výčtem uživatelských UID. Přístupová práva u přístroje httpdVelmi často jsou v roli klienta systému Control Web používány standardní WWW prohlížeče. Samostatnou otázkou je proto 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řístrojem httpd, který je standardní součástí systému Control Web. Vzhledem k tomu, že HTML rozhraní aplikačního programu může být zcela odlišné od samotné aplikace, 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 nebo HTTPS 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 doménového jména. Přístroj httpd dovoluje definovat přístup k jednotlivým URL. Pokud zadaná URL nemá definována přístupová práva, zkontroluje se zda-li existují práva pro adresář, v němž se URL nachází. Pokud ani práva pro adresář nejsou definována, mohou se uplatnit práva definována pro celý přístroj. Podrobněji je systém práv a přihlašování popsán v dokumentaci k přístroji httpd. 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žňuje 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ími prostředky protokolu HTTP. Údaje tedy nejsou při přenosu zašifrovány. To je nutno brát v úvahu zejména při připojení přes veřejný 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 firewall. Prakticky naprostou jistotu bezpečnosti i při propojení kritických aplikací přes veřejný internet poskytuje zapnutí šifrovaného přenosu HTTPS . Pokud je v aplikaci zapnut globální Systém přístupových práv uživatelů, lze nastavením parametru access (buď pro celý přístroj nebo pro adresáře (folders) / soubory (files)) zapnout také přihlašování do aplikace přes webové rozhraní. Některé parametry z globální sekce security pak ovlivňují chování i samotného httpd přístroje. Jedná se především o parametry pro složitost či expiraci hesla, odhášení při nečinnosti, blokování uživatelů, atd. Přihlášení do aplikacePokud není uživatel již přihlášen a přistoupí na URL, která přihlášení vyžaduje, je přesměrován na stránku Přihlášení uživatele. Zde stačí zadat své uživatelské jméno a heslo. Teprve po úspěšném přihlášení přístroj vyhodnocuje, zda má uživatel dostatečnou úroveň pro přístup na danou URL. Upozornění: Pokud je použito základní zabezpečení aplikace (security_mode = basic), může se přes web přihlásit každý definovaný uživatel. V pokročilém zabezpečení je toto dovolenou pouze uživateli, jehož role obsahuje definici přístupu web. Údaje o přihlášení jsou následně uloženy v prohlížeči pomocí cookies. Zneplatnit přihlášení lze následujícími způsoby:
Změna heslaPokud uživateli vypršelo heslo (časovou expirací, popř. vynucením od správce systému) nebo si ho sám chce změnit, lze v prohlížeči navštívit stránku Změna hesla. Stránku pro změnu hesla lze navštívit těmito způsoby:
Poznámka: Při expiraci hesla uživatele je stránka Změna hesla zobrazena ihned po úspěšném přihlášení starým heslem a uživateli není dovoleno přistoupit do aplikace, dokud nedojde ke změně hesla na nové. Seznam interních URLPokud je zapnuto v přístroji přihlašování do aplikace přes webové rozhraní, vyhradí si httpd přistroj virtuální adresář /session, který slouží k obsluze přihlašovacího systému. Je proto doporučeno nevyvářet tuto cestu ani fyzicky v kořenovém adresáři, ani dynamicky pomocí sekcí pages, files a folders.
Přihlášení do aplikaceDo aplikace se uživatelé přihlašují v okně Přihlášení uživatele, které lze vyvolat kliknutím na toto okno v liště nebo současným stisknutím kláves <Alt>+<Ctrl>+<Space>. Uživatel se přihlašuje pomocí svého uživatelského jména a hesla. Po úspěšném přihlášení je zobrazeno jméno uživatele a jeho avatar (obrázek), je-li zadán, tlačítko pro odhlášení a tlačítko pro změnu hesla (pokud je změna hesla povolena). Definice uživatelůTo, jestli je systém přístupových práv aktivní či nikoliv, je vždy dáno právě spuštěnou aplikací. Definice uživatelů - basicSeznam autorizovaných uživatelů spolu s jejich přístupovými právy 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 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. Poznámka: 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é ještě 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. Správce systému může přidávat nebo odstraňovat jednotlivé uživatele a stanovovat jim úrovně přístupových práv, nastavovat a měnit jejich hesla a nastavovat jednotlivým uživatelům právo ke změně svého hesla. To můžete učinit dvěma způsoby:
Editor seznamu uživatelů je v obou případech stejný a má podobu snadno ovladatelné a přehledné tabulky. Tip: Editor umožňuje dovezení nebo vyvezení seznamu uživatelů prostřednictvím souboru. Veškerá data o uživatelích tak můžete uložit na přenosné médium 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 přenosném médiu 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ě přenosného média. Jednotliví uživatelé si mohou měnit svá hesla jen za běhu aplikačního programu a pokud to mají povoleno 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. Definice uživatelů - advanced a strongV režimu advanced a strong je seznam uživatelů spolu s přiřazenými přístupovými rolemi uložen v registru systému a je identifikován řetězcem zadaným u parametru user_id. Výhodou, oproti režimu basic je, že každá aplikace běžící na PC může mít vlastní množinu uživatelů nebo je mohou aplikace se stejným user_id sdílet. Jednotlivé uživatele, jejich uživatelské role a další možnosti je oprávněn zadávat pouze správce systému, resp. uživatel s přiřazenou rolí root. Správce systému může přidávat nebo odstraňovat jednotlivé uživatele, přidělovat jim uživatelské role, nastavovat a měnit jejich hesla, odblokovat je v případě jejich zablokování a nastavovat jim další nabízené možnosti. 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ů. Seznam nabízených možností uživatelského účtu Tip: Editor umožňuje export a import seznamu uživatelů prostřednictvím souboru. Veškerá data o uživatelích tak můžete uložit do šifrovaného souboru a snadno přenést na jiný počítače nebo do jiné databáze uživatelů. Upozornění: Do souboru je při exportu uživatelů uloženo i heslo správce systému. Při importu dat ze souboru je tedy přeneseno i heslo správce. Po úspěšném importu uživatelů je vyžadováno nové přihlášení! 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. Zastavení aplikaceZastavení 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 právy správce systému, tedy uživateli s přiděleným UID nula nebo s UID definovaným u parametru stop_access v režimu basic nebo v pokročilých režimech rolí root nebo pokud je v definici role povolena volba stop_application . Nástroje a položky menu sloužící k zastavení aplikace jsou zneplatněny, pokud není přihlášen uživatel s odpovídajícím oprávněním. Bez příslušných práv aplikaci nelze zastavit 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ěž zastaven 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čiJak 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é. 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ň, roli a i nastavený režim yabeypečení aplikace přečíst ze systémových proměnných user_name a user_level a pomocí OCL procedur přístroje zabudovaného přístroje system.. 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 nebo volání OCL procedur by bylo velmi neefektivní. Proto může být v nastavení parametrů 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. Další možností je zachytávat aktivitu přihlášování nebo odhlašování uživatelů pomocí přístroje system_event a jeho událostních procedur OnLogin( Level : longcard; UserName : string ), OnLogout() a OnIvalidLogin(). settings ... security login_system_enabled = basic; receivers = vitrual_instrument_1, vitrual_instrument_2; end_security; ... end_settings; 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 v oblasti datových inspektorů integrovaného vývojového prostředí. Možnost zachytávání udalostí souvisejicích s přihlašováním přístrojem system_eventUdálosti týkající se přihlašování (i neúspěšných) a odhlašování jednotlivých operátorů lze zachytávat v událostních procedurách OnLogin( Level : longcard; UserName : string ), OnInvalidLogin() a OnLogout() virtuálního přístroje system_event. V těchto procedurách pak lze tyto události zpracovávat uživatelským skriptem. Možnost archivace událostí systému kontroly přístupových práv virtuálním přístrojem journalArchivaci 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, LoginLevel, AddressOfLoginNameString, 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 Rozhraní ovladačů pro Control Web. Logování aktivity uživatelů v režimu advanced a strongVýznam hodnot ve sloupci Reason. Zaznamenávání aktivity uživatelů do textového souboruZaznamenávání aktivity uživatelů do textového souboru je nastaveno jako výchozí. Soubory jsou zakládány při prvním požadavku zápisu události ve dni. Soubory jsou ve formátu CSV (oddělovač je středník) a jsou lokalizovány ve složkách podle pravidel definovaných v sekci directories. Textové soubory obsahují záznamy vždy za jeden den. Název souboru je uvozen předponou cw_sec_, za kterou je doplněno datum záznamů v souboru ve formátu yyyymmdd, tedy např. 'cw_sec_20221209.log', je soubor se záznamy ze dne 9. 12. 2022. Nejmenší možná fragmentace historie souborů je v řádu dnů. Ukázka zápisu událostí do textového souboru v CSV formátu UTC; Application; UserName; Access; Reason; HostIP; Note 12:48:33.977; "security"; "", "application"; "Start the application"; "127.0.0.1"; "" 12:48:43.318; "security"; "root", "application"; "Login"; "127.0.0.1"; "" 12:49:16.042; "security"; "root", "application"; "Stop the application"; "127.0.0.1"; "" Zaznamenávání aktivity uživatelů do databázové tabulkyZaznamenávání aktivity uživatelů do databázové tabulky je volitelné a je vhodné pro pohodlné zpracování dat pomocí SQL příkazů. Cílová databáze je určena parametrem database v sekci security, který se odkazuje na název předefinované databáze v sekci database. Historie uchovávaných záznamů je určena parametrem history v sekci security. Při prvním požadavku na zápis události jsou v databázi založeny tabulky cw_sec a cw_sec_reasons.Tabulka cw_sec obsahuje záznamy související s aktivitou uživatelů a tabulka cw_sec_reasons je tabulka s popisy hodnot ukládanými do sloupce REASON v tabulce cw_sec.
Struktura tabulky cw_sec
Význam hodnot ve sloupci REASON - obsah tabulky cw_sec_reasons
Význam hodnot ve sloupci Access. Příklad SQL dotazu pro zobrazení záznamů aktivity uživatelů: SELECT CONVERT(DATETIME, s.UTC - 2415020.5) UTC, s.APPLICATION, s.USER_NAME, CASE s.ACCESS WHEN 1 THEN 'App' WHEN 2 THEN 'Web' END ACCESS, s.HOST_IP, r.CZ REASON, s.NOTE FROM cw_sec s INNER JOIN cw_sec_reasons r ON s.REASON = r.ID
Příklad tabulky získané vykonáním dotazu Shrnutí
|