Vysoká škola báňská – Technická univerzita Ostrava, Fakulta bezpečnostního inženýrství, katedra Požární ochrany a ochrany obyvatelstva
Bezpečnostní informatika III Ing. Pavel Šenovský
Ostrava 2007
Obsah Úvod.....................................................................................................................................................3 1 Úvod do průmyslové automatizace...................................................................................................5 2 Úvod do použití SCADA systémů...................................................................................................11 Literatura.............................................................................................................................................11
1
2
Úvod Vážený studente, dostává se Vám do rukou učební text předmětu Bezpečnostní informatika III. Tato skripta se zaměřují především do dvou oblastí a to do úvodu do průmyslové automatizace – především systémů pro vizualizaci technologických procesů, tzv. SCADA systémů a úvodu do problematiky dolování informací. V obou případech výklad navazuje na předmět Bezpečnostní informatika II, jeho absolvování však není pro pochopení problematiky bezpodmínečně nutný, absolventi tohoto předmětu by však měli vidět další souvislosti. Část zaměřená na dolování informací navazuje na předměty Modelování rozhodovacích procesů, Statistika a Expertní systémy. Absolvování těchto předmětů není podmínkou nutnou pro absolvování tohoto předmětu, jejich absolventi však budou mít menší práci s pochopením jednotlivých metod dolování (protože by je již měli znát) a mohou se zaměřit na jejich aplikaci. Pro zpříjemnění čtení jsem se také rozhodl, zpracovat tento text formou vhodnou pro „distanční vzdělávání“, tak aby práce s ním byla co možná nejjednodušší. Z tohoto důvodu je text jednotlivých kapitol segmentován do bloků. Každá kapitola začíná náhledem kapitoly, ve kterém se dozvíte o čem budeme v kapitole mluvit a proč. V bodech se pokusím shrnout co byste po prostudování kapitoly měli znát a kolik času by Vám studium mělo zabrat. Prosím mějte na paměti, že tento časový údaj je pouze orientační, nebuďte proto prosím smutní nebo naštvaní když ve skutečnosti budete kapitole věnovat o něco méně nebo více času. Za kapitolou následuje shrnutí, ve kterém budou zdůrazněny informace, které byste si rozhodně měli zapamatovat. To, že jste správně pochopili probíranou látku si budete moci ověřit pomocí kontrolních otázek, které by Vám měly poskytnout dostatečnou zpětnou vazbu k rozhodnutí zdali jít dále nebo věnovat delší čas opakování. Pro zjednodušení orientace v textu jsem zavedl systém ikon:
Průvodce studiem Slouží pro seznámení studentů s látkou která bude v kapitole probírána. Čas nutný ke studiu Představuje odhad doby, který budete potřebovat ke prostudování celé kapitoly. Jedná pouze o orientační odhad, neznepokojujte se proto pokud Vám studium bude trvat o něco déle nebo budete hotovi rychleji.
3
!
Vysvětlení, definice, poznámka U této ikony najdete vysvětlující text, poznámku k probíranému tématu, která problém uvede do širších souvislostí, popřípadě důležitou definice.
?
Kontrolní otázky Na závěr každé kapitoly je zařazeno několik otázek, které prověří, zda jste problematice kapitoly dostatečně porozuměli. Pokud nebudete vědět odpověď na některou otázku, je to signál pro Vás, abyste se ke kapitole vrátili. Chvilka oddechu Text označený touto ikonkou neberte příliš vážně, je tam pro Vaše pobavení.
Přeji Vám, aby jste čas který strávíte s tímto textem byl co možná nejpříjemnější a abyste jej nepovažovali za ztracený.
Autor.
4
1 Úvod do průmyslové automatizace Průvodce studiem V této kapitole se podíváme na specifika průmyslové automatizace, především ve srovnání s nasazováním IT ve formách. Po prostudování této kapitoly budete umět –
co rozumíme průmyslovou automatizací
–
jak se liší průmyslový počítač od počítače běžného
–
proč se vůbec touto oblastí jako neinformatici zabývat
Čas pro studium Pro prostudování této kapitoly budete potřebovat minimálně dvě hodiny. Automatizace je základním nástrojem pro řízení technologických celků. Touto automatizací rozumíme závádění automatizovaných systémů pro měření a regulaci procesů. Úkolem této regulace je zajistit plynulý (ve smyslu rychlosti procesu i kvality) provoz regulované soustavy. Nejprve se automatizace zaváděla do velkých výrobních linek, dnes se však automatizují prakticky všechny procesy od procesů výrobních, po systémy klimatizační ve velkých budovách až k regulaci kotle ve Vašem rodinném domě. Podívejme se na základní schéma regulační soustavy (obr. 1). Regulační soustavou přitom rozumíme jakoukoliv soustavu, která může být regulována.
Obr. 1: Obecné schéma regulační soustavy Aby bylo soustavu možno regulovat, je nutné mít zavedené nějaké 5
mechanismy pro zjištění zpětné vazby na snahy regulovat (nebo jejich absenci), z tohoto důvodu jsou tyto soustavy opatřovány senzory. Senzory mohou být různého druhu, může se jednat o teplotní čidla, váhy, měřidla velikosti, ale třeba také kamery. Údaje získané z těchto senzorů jsou porovnávány s regulačními cíli a v případě, že se neshodují, pak je v soustavě provedena změna a celý proces se opakuje. Je očividné, že běžné PC není pro tento typ úkolů právě dělané, z tohoto důvodu se používají speciálně pro tento účel navržené počítače, tzv. PLC – Programable Logic Controler. Nejprve se podívejme, jak takový PLC vypadá (viz. obr. 2).
Obr. 2: Příklad PLC (zdroj: siemens.com) PLC se liší od běžného PC v několika zásadních věcech. 1) Programy se nevyvíjejí přímo na něm, ale na běžném PC pomocí vývojových nástrojů dodaných výrobcem PLC. Programy nejsou obvykle přenositelné mezi PLC různých výrobců. 2) PLC je specializované, s vyšší životností, použitelné modulárně, tak aby jej bylo možno jednoduše rozšířit o nová rozhraní, kterých je zapotřebí v regulovaném procesu. 6
Údaje získané ze senzorů je potřeba nějakým způsobem zpracovat nebo připravit k revizi operátorovi (dispečerovi/kontrolorovi/odpovědné osobě). Data ze senzorů je samozřejmě možné zobrazit tak, jak jsou zachytávána, tedy v tabulce jako sled měření s časovou značkou. Údaje v takové formě však jsou odpovědnou osobou obtížně interpretovatelné, obvykle se proto tyto údaje snažíme před jejich zobrazením vizualizovat v jednodušší formě. Právě k tomuto účelu jsou využívány tzv. SCADA systémy (Supervisory Control and Data Acquisition). SCADA systémy tvoří další vrstvu v logice průmyslové automatizace. Připomeňme si, že tu nejnižší tvoří tvoří PLC automaty regulující proces v reálném čase. SCADA systém, jelikož údaje musí, načíst (obvykle po sítí), zpracovat a zobrazit funguje ve skoro reálném čase – je zde již určité s trochou štěstí nepatrné zpoždění. Je důležité si taktéž uvědomit, že SCADA systém informace obvykle nebere přímo ze senzorů (prostřednictvím PLC), ale z nějakého k tomu určeného místa, obvykle výkonného databázového serveru. Někdy jsou tyto servery označovány jako real-timové databáze. Nedá se říci, že by přímé připojení SCADA – PLC pro získání informací nebylo možné, je však potřeba mít na paměti, že PLC je přizpůsobeno regulaci, ale není schopna poskytovat informace v podobě srovnatelné s relační databází. Na druhou stranu je jednoduché nastavit, aby PLC použil jako úložiště dat nějaký databázový server (spojení PLC – databáze) a propojit tento server se systémem SCADA (databáze – SCADA). Real timové databáze jsou v zásadě relačními databázemi s některými úpravami. Běžné relační databáze pracují se všemi údaji , které jsou v nich obsaženy prakticky bez rozdílu. Zadáte dotaz a počkáte si na odpověď. Doba čekání je přitom přímo úměrná počtu záznamů, které je třeba projít a může tak narůst až na minuty nebo desítky minut. V případě, že tato data jsou potřeba okamžitě je takový přístup očividně nepoužitelný. Realtimové databáze oproti tomu určitou záruku včasného doručení informací poskytují. Hlavní vlastností, která toto zaručuje jsou tzv. realtimové transakce. Transakci přitom můžeme definovat jako skupinu operací, která splňují vlastnosti skrývající se pod zkratkou ACID (atomicita – konzistence – izolovanost – nevratnost). Atomicitou rozumíme, že transakce probíhá jako celek, tedy proběhne úspěšně celá a nebo neproběhne vůbec. Jinými slovy, v případě, že některá operace v rámci transakce selže, předchozí, úspěšně provedené operace v rámci transakce jsou revokovány a databáze se dostane do stavu jako před započetím transakce. Konzistence zaručuje, že databázový systém je transakcemi transformován z jednoho konzistentního stavu do druhého, opět konzistentního, stavu. Tato vlastnost 7
souvisí s úplným provedením transakce. Nekonzistence jsou do databáze vnášeny buď chybným návrhem databáze, tento problém však transakce neřeší, nebo provedením pouze částečných změn (jako třeba pouze polovina požadovaných operací). Protože transakce se provede celá nebo vůbec – tento typ nekonzistence by neměl nastat. Izolovanost – transakce je izolována od zbytku databáze. Ostatním operacím/transakcím nejsou dostupny výsledky operací prováděných v rámci transakce do doby úplného dokončení této transakce. Nevratnost – transakce je neodvolatelná. Změny transakce je možné zvrátit pouze v průběhu transakce, po jejím dokončení jsou však tyto změny již nevratné. Realtimové databáze k těmto principům přidávají ještě časové omezení. Realtimová transakce musí být dokončena v určitém časovém intervalu. Tento interval obvykle nastavují tvůrci aplikací, které s těmito systémy pracují. Možná Vás napadne otázka, co s transakcemi, které neskončí včas. Důvodů přitom může být celá řada od technických – proces zachycený transakcí včas neskončil (stále trvá) až po to, že došlo k přetížení serveru, který nestačí vyřizovat transakce. Z tohoto pohledu je potřeba rozlišit přínos, jaký má dokončení této opožděné transakce: 1. opožděné dokončení transakce je přinosné – hodnota přínosu obvykle se ale obvykle nerovná přínosu ze včas dokončené transakce (např. aktuální hodnota senzoru výrobní linky vs. hodnota téhož senzoru z minulého dne). V takovém případě se databázový systém snaží transakci dokončit – obvykle ale opožděné transakci přiřazuje nižší prioritu tak, aby nebyla ohrožena aktuálnost nově zadávaných (čerstvých) údajů. 2. V okamžiku, kdy transakce ztratí hodnotu úplně nebo její hodnota klesne pod určitou úroveň může databázový systém její dokončení stornovat, tak aby si uvolnil systémové zdroje pro vyřizování přínosných transakcí. Ne všechny typy transakcí lze stornovat. 3. Hodnota nedokončené transakce může dokonce poklesnout pod nulovou hodnotu – nedokončení transakce způsobuje další náklady. V takovém případě systém může naopak navýšit prioritu transakce, tak aby transakce byla přednostně dokončena a nepřinášela další náklady. V zájmu celého řešení samozřejmě je, aby opožděných transakcí bylo co nejméně. Tomu lze dopomoci (bohužel ne na 100% zajistit) s užitím vhodné konstrukce databáze, s použitím vhodně nakonfigurovaných indexů, s využitím rychlých RAM/flash disků, dostatečně výkonným hardware (a pokud nepostačuje jeden databázový server použít databázový cluster). Opatření budou záviset na významu aplikace která s databází pracuje.
8
Podívejme se jakým způsobem dosud probraná zařízení vzájemně spolupracují (viz. obr. 3).
Obr. 3: Architektura průmyslové automatizace Údaje ze senzorů jsou ukládána do real-timové databáze, ze které jsou přímo zobrazována pomocí SCADA systémů na pracovních stanicích jednotlivých operátorů. PLC automaty přitom pracují autonomně na základě svých programů. V případě nějaké mimořádné události, může ale operátor ze svého stanoviště zasáhnout do technologického procesu přímo přenastavením jednotlivých ovládacích prvků technologie. Tímto způsobem efektivně obejde PLC automat. Takovým zásahem může být nouzové odstavení části nebo celé technologie. Alternativou k tomuto postupu je manuální ovládání prvků technologie na místě. V takovém případě k ovládacímu prvku musí odpovědná osoba fyzicky dojít a provést požadované změny. I tento postup je někdy nutné použít, zejména v případě, že v důsledku mimořádné události došlo k vyřazení/narušení přenosového kanálu nebo ovládací prvek na požadavky nereaguje. Podrobněji se bezpečnostními aspekty automatizace budeme zabývat ve stejnojmenné kapitole. Pro časově náročnější operace nelze použít real-timovou databázi. Došlo by totiž k jejímu dalšímu zatížení, což by mohlo způsobit neschopnost práce v reálném 9
čase. Z tohoto důvodu se data obvykle replikují na běžný, samostatný databázový server, se kterým pak normálně uživatelé pracují ať už přímo nebo prostřednictvím k tomu určených informačních systémů. Kontrolní otázky 1. Co jsou to SCADA systémy a k čemu slouží? 2. Jako úlohu plní PLC automaty? 3. Čím se liší real-timové databáze od běžných relačních databází? 4. Co je to transakce? 5. Vysvětlete principy ACID transakcí. Úkoly k zamyšlení 1. Zamyslete se nad možnými ohroženími automatizační části technologického procesu. Dále v těchto skriptech tuto představu korigujte s dalšími informacemi, které získáte.
2 Úvod do tvorby SCADA systémů Průvodce studiem Dozvíte se jaké prostředky a jakým způsobem se používají pro tvorbu SCADA systémů. Zaměříme se také na praktické ukázky tvorby v systému Promotic. Po prostudování této kapitoly budete umět - vytvořit jednoduchou aplikaci v systému Promotic Čas pro studium Pro prostudování této kapitolu budete potřebovat minimálně 4 hodiny (pokud budete zkoušet vytvořit a pochopit aplikaci v systému Promotic).
2.1 Systém Promotic Tvůrcem systému Promotic [3] je česká firma MICROSYS s.r.o. Promotic je koncipován jako jednodušší systém (v porovnání s některými zahraničními 10
konkurenty jako je InTouch firmy Wonderware a další), který však umožňuje vytváření plnohodnotných SCADA aplikací. Pro náš účel základního seznámení s možnostmi SCADA systémů je zajímavé některé jeho vlastnosti, protože Promotic je: –
malý
–
plně lokalizovaný
–
jeho demo, které budeme pro naše pokusy používat je ke stažení z domácích stránek výrobce.
Demo verze má vlastnosti plné verze, pouze je omezena počtem prvků, se kterými je možno pracovat, což nám pro naše experimentování bude naprosto dostačovat. Nejprve si proberme nějaký jednoduchý problém a způsob jeho řešení. Zkusme si tímto způsobem zpracovat fungování UPS systému chránícího nějaký počítač. Úkolem UPS je chránit počítač proti přepětí nebo podpětí v elektrické síti. V okamžiku, kdy taková situace nastane je elektrická energie dodávána připojenému zařízení z baterie. Zkusme si tuto situaci znázornit na nějakém schématu (viz. obr. 4).
Obr. 4: Zapojení UPS Z popisu problému vyplývá, že musí existovat senzor, který bude měřit napětí na vstupu UPS a v případě, že jeho hodnota poklesne/přesáhne nastavenou mez, začne se energie odebírat z baterie a odběr z baterie bude pokračovat dokud nedojde k navrácení hodnot napětí do povolených mezí nebo úplné vyčerpání baterie. Tedy náš SCADA systém bude muset zachytit: –
stav baterie,
–
aktuální napětí na vstupu,
–
horní mez napětí, 11
–
dolní mez napětí.
Samozřejmě bychom určitě byli schopni vymyslet další vylepšení, jako je třeba indikace běhu počítače, míra nabití baterie při které dojde k automatickému vypnutí, životnost baterie apod. Vybaveni základní představou o potřebách řešení našeho problému, můžeme se pustit do jeho řešení pomocí systému Promotic. Novou aplikaci vytvoříme pomocí menu Aplikace -> Nová aplikace. Při experimentování s tímto systémem se snažte každou aplikace vložit do samostatné složky, předejdete tak možným konfliktům v názvech zdrojů apod. Po vytvoření nové aplikace se nám objeví základní vývojové prostředí systému Promotic (viz. obr. 5). Levá polovina obrazovky nám představuje strukturu aplikace. Jelikož naše aplikace je nová a tedy prázdná, objevuje se v ní pouze kořen (aplikace) a základní panel nástrojů (toolbox). Naším prvotním úkolem bude dotvořit tuto strukturu tak, aby obsahovala všechny prvky, které jsme vymysleli výše.
Obr. 5: Základní obrazovka nové aplikace Stavební kameny, ze kterých sestavíme aplikaci vytvoříme jednoduše, tak že klikneme pravým tlačítkem myši na kořenovém uzlu aplikace. Objeví se kontextové menu, které nám umožní provádět s daným uzlem celou řadu činností, názvy většiny z nich jsou poměrně výstižné, takže v byste neměli mít problémy s orientací. Nás 12
bude zajímat především první položka kontextového menu a to Nový objekt. Máme možnost tímto způsobem vytvořit celou řadu různých typů objektů. Některé z nich si blíže popíšeme, nejdříve si však všimněte pojmenování jednotlivých objektů - všechny začínají PmNěco (PmFolder, PmNumber, …). Zkratka Pm je zkratkou Promotic. Druhá část názvu je tvořena popisem charakteru objektu v angličtině, česká verze Promotic ale rovno v menu nabízí český překlad názvu. Nyní již k jednotlivým objektům: 1) PmFolder umožňuje strukturovat prvky aplikace do jednotlivých složek. Tímto způsobem se může zpřehlednit struktura aplikace. Složky je výhodné používat především ve větších (normálních) projektech – pro naši miniaplikaci nebude mít až takový význam. 2) PmNumber – umožňuje pracovat s jednou číselnou hodnotou. Ve vlastnostech tohoto objektu přitom můžeme specifikovat o jaký typ čísla se bude jednat. 3) PmString – umožňuje pracovat s textovými řetězci. Promotic zná celou řadu dalších objektů, ale my budeme používat pro naši aplikaci už pouze PmTimer (časovač), ke kterému se dostaneme až trochu později. Jaké objekty budeme potřebovat: –
stav baterie – číslo (PmNumber),
–
aktuální napětí na vstupu – číslo,
–
horní mez napětí - číslo,
–
dolní mez napětí – číslo.
všechny proměnné budou typu číslo, u všech můžeme ponechat i nastavení celočíselného typu (integer). všechny tyto prvky postupně vložíme do naší aplikace (pravým tlačítkem na uzlu aplikace -> nový objekt -> PmNumber). Výsledek našeho snažení by měl vypadat následovně (viz. obr. 6).
13
Obr. 6: Tvorba základních prvků aplikace Máme vytvořený základní rámec, ve kterém naše aplikace bude fungovat, je však potřeba vytvořit nějaké grafické uživatelské rozhraní, které nám umožní vizualizovat a případně ovládat náš „technologický proces“. V Promotic k tomuto účelu slouží editor obrazů. Obrazem se v tomto případě rozumí obrazovka se všemi vizuálními i ovládacími prvky, kterou bude mít k dispozici operátor procesu. K tomuto editoru se dostaneme tak, že vytvoříme nový objekt typu PmPanel (okno), který má obsahovat kompletní GUI aplikace a klikneme na tlačítko editace grafického obsahu (viz. obr. 7).
Obr. 7: Vlastnosti PmPanel Kromě výše uvedeného tlačítka si všimněte zaškrtávacích polí přímo vedle něj. –
otevřít při startu aplikace způsobí, že tento obraz se automaticky zobrazí po spuštění aplikace.
–
zařadit do seznamu obrazů umožňuje zavést obraz do seznamu všech obrazů s nastavenou touto vlastností. Operátor se ze své aplikace pak může mezi jednotlivými obrazy přepínat. Pokud obraz nebude v seznamu obrazů neznamená to, že bude úplně nepřístupný, jeho zpřístupnění bude ale nutné prostřednictvím nějakého grafického prvku jiného obrazu, třeba tlačítka.
14
–
nezávislé časování obrazu vyjme obraz ze systémové obnovy obrazů. Takový obraz je pak aktualizován pouze manuálně nebo automaticky systémem Promotic na základě námi definované procedury časovače.
–
při hromadném zavření obrazů ponechat tento obraz otevřen – měl by být zatržen pro kriticky důležité obrazy, tak abychom zajistili, že důležité informace z technologického procesu budou vždy k dispozici.
Zkusme sestavit aplikaci. Aplikaci sestavujeme z jednotlivých konstrukčních prvků, které vybíráme z Palety prvků (viz. obr. 8). Aplikace, resp. její základ se sestavuje pouhým klikáním, není k němu tedy potřeba programování, pro oživování jednotlivých prvků, již programování ale může být potřeba.
Obr. 8: Paleta prvků Už víme jaké informace chceme zobrazovat nebo získávat od uživatele. Z hlediska prvků aplikace je můžeme rozdělit do dvou skupin: –
prvky pro zadávání údajů
–
prvky pro vizualizaci údajů
Kromě těchto dvou skupin máme k dispozici ještě třetí skupinu prvků, která slouží pro vizuální dotvoření aplikace, ale je statického charakteru – tedy není napojena na nějaké zdroje dat apod. 15
Horní a dolní mez bude potřeba nastavit. Vzhledem k povaze těchto parametrů by se hodilo nějaké táhlo. V Promotic máme k dispozici táhlo a táhlo s vodorovnou nebo svislou stupnicí (paleta prvků -> zadávací přístroje). Pro naši aplikaci použijeme táhlo s vodorovnou stupnicí. Prvek vložíme do pracovní plochy tak že na jeho název dvakrát klikneme (zmizí panel prvků) a klikneme na pracovní plochu editoru obrazů v místě kam chceme prvek umístit. Prvek můžeme metodou drag & drop přesunovat dle potřeby a také měnit jeho velikost. Implicitně se stupnice objeví v intervalu 0 – 100, což nám zcela jistě nevyhovuje. Zatím však ponecháme tento prvek tak jak je. Vytvoříme celkem dvě stupnice s vodorovným táhlem. Stav baterie a aktuální napětí, jsou hodnoty, které budeme chtít monitorovat. Pro vytvoření prvků zobrazujících stav a napětí použijeme opět paletu prvků, tentokrát ale použijeme Měřící přístroje a zde použijeme prvek Ručkový s nadpisem. Prvek na pracovní ploše vytvoříme dvakrát, tedy pro obě měřené veličiny. Výsledek našeho snažení by měl vypadat podobně jako na obr. 9.
Obr. 9: Základní rozhraní aplikace Měřící přístroje, podobně jako přístroje zadávací, jsou nastaveny na interval 0 – 100. Nyní je potřeba změnit vlastnosti jednotlivých prvků obrazu tak, aby odpovídaly úkolům, které jim hodláme svěřit. Dolní mez by měla umožňovat výběr v intervalu tak mezi 150 – 200 V. Jakop předvolená hodnota pro vysokou citlivost UPS se obvykle zadává 190V. Horní mez by měla umožňovat výběr v intervalu 240 – 300 V s předvolenou hodnotou okolo 250 V. 16
Stupnice měřícího přístroje pro stav baterie může zůstat tak jak je, tedy v intervalu 0 – 100, což odpovídá procentu nabití baterie. Měřící přístroj pro aktuální napětí na vstupu by měl být v intervalu 0 – 350. Vlastnosti jednotlivých prvků zobrazíme dvojitým kliknutím na prvku. Začněme se zadávacím prvkem pro dolní mez. Zadávací přístroj jako celek je tvořen dvěma prvky – zadávacím táhlem a textovým popisem (obsahuje implicitně nápis Zadavatel). Zkusme nejprve změnit tento popisek. Ve vlastnostech klikneme na položku vložené prvky (tlačítko +). V okně, které se nám objeví vybereme TextTitle, pod kterým se skrývá titulek, který chceme změnit a klikneme na tlačítko Editace. Zde se již nachází vlastnost text, kterou přepíšeme na Dolní povolená mez [V]. Všechna okna vlastností postupně zavřeme kliknutím na tlačítko OK. Vzhled oken vlastností se zvýrazněnými vlastnostmi popsanými výše je znázorněn na obr. 10.
Obr. 10: Změna popisku zadávacího prvku Stejným způsobem budeme postupovat u druhého zadávacího prvku, ovšem s tím, že popisek bude Horní povolená mez [V]. Analogickým způsobem budeme postupovat i u měřících přístrojů s popisky Aktuální napětí [V] a Stav baterie [%]. Nyní provedeme přenastavení mezí jednotlivých prvků, tedy kromě prvku stav baterie, kde nám rozsah 0 – 100 vyhovuje. Změnu provedeme opět ve vlastnostech prvku. Začněme opět s prvkem Dolní povolená mez. Ve vlastnostech tohoto prvku 17
můžeme nalézt táhlo, která nám umožňuje nastavit rozsah funkčnosti zadávacího prvku. Budou nás zajímat především vlastnosti dolní mez (150), horní mez (200) a kam zapisovat (190). Kam zapisovat je hodnota, která v táhlu předvolená. Můžeme změnit směr přírůstku, tedy zda stupnice stoupá nebo klesá. Nastavení naleznete na obr. 11.
Obr. 11: Nastavení táhla Stejný způsobem nastavíme i Horní povolenou mez. Parametry nastavení budou následující: dolní mez 240, horní mez 300, kam zapisovat 250. Horní a dolní mez měřícího přístroje můžeme nastavit přímo v základní obrazovce (viz. obr 12) vlastností měřícího přístroje: dolní mez 0, horní mez 350, kam zapisovat ponecháme tak jak je.
18
Obr. 12: Vlastnosti měřícího přístroje Výsledek naších úprav by měl vypadat podobně jako na obr. 13.
Obr. 13: Vzhled obrazu po změně vlastností jednotlivých prvků Grafický vzhled je hotov, zkusíme tedy aplikaci spustit, předtím je však nutné obraz zkompilovat. Kompilace se provede kliknutím na patřičné tlačítko na panelu nástrojů (3 a 4-té zleva). Editor obrazů zvládá dva typy kompilace a to úplná a nebo 19
inkrementální. Úplná kompilace provede zkompilování obrazu zatímco inkrementální provede pouze přeložení částí, které se od poslední kompilace změnily. Výhodou tohoto typu kompilace je úspora času. Pro naši aplikaci, která se skládá pouze ze čtyř prvků, ale úspora času bude prakticky nulová. Po provedení kompilace můžeme editor obrazů uzavřít. Spuštění aplikace provedeme z hlavního vývojového prostředí, tam jsme také definovali jednotlivé proměnné aplikace, kliknutím na ikonu semaforu. Nezapoměňte, že pokud svůj obraz chcete vidět je potřeba zaškrtnout volbu otevřít při startu aplikace ve vlastnostech obrazu (popřípadě obraz přidat do seznamu obrazů). Běhové prostředí Promotic bude vypadat následovně (viz. obr. 14).
Obr. 14: Běhové prostředí Promotic V běhovém prostředí můžete manipulovat s jednotlivými ovládacími prvky, nicméně ať s nimi manipulujete jak chcete, v zásadě se nic neděje, pouze se posune táhlo. Bylo by samozřejmě lepší, kdyby se něco dělo. Problém je, že obraz, který jsme vytvořili není napojen na proměnné a také, že zde není obsaženo nic dynamického, co by se měnilo. Za normálních okolností by prvky obrazu byly napojeny na dynamický zdroj dat, nějaký skutečný senzor. V našem případě toto není možné a proto dynamické chování budeme muset simulovat přímo v prostředí Promotic. K této simulaci využijeme prvek PmTimer (časovač). Časovač nám umožní, abychom v pravidelných intervalech spouštěli určitý skript, který bude provádět 20
simulaci tohoto dynamického chování. Zkusme si navrhnout algoritmus, jakým by tento prvek měl fungovat. Základem simulace dynamického chování bude generátor náhodných čísel – ten nám bude simulovat kolísání napětí v síti a na něj bude reagovat UPS. Jak si všimněte na obr. 15, jsou vlastnosti časovače jiné než vlastnosti jiných prvků, se kterými jsme se dosud setkali.
Obr. 15: Vlastnosti časovače (PmTimer) Předně zde existuje přehled událostí, které jsou s prvkem spojeny. V případě časovače těmito událostmi –
ObjectStart, který se provede po spuštění časovače
21
–
ObjectStop, který se provede při zastavení časovače
–
TimerTick se provede pokaždé po uplynutí určitého časového intervalu, tento interval můžete nastavit na záložce časovač.
Implicitně je interval časovače nastaven na 1 sekundu, což pro náš účel bude naprosto vyhovovat. Procedura, která bude výše uvedený algoritmus vykonávat může vypadat třeba takto: dim n, zmena, proud, dmez, hmez, stav
set proud = Pm(„/NapetiVstup“) set dmez = Pm(„/DolniMez“) set hmez = Pm(„/HorniMez“) set stav = Pm(„/StavBaterie“)
n = rnd() if n < 0.5 then zmena = -1 else zmena = 1 end if
if (proud.value + zmena) < dmez.value or (proud.value + zmena) > hmez.value if (stav.value > 0) then stav.value = stav.value - 1 else if stav.value < 100 then stav.value = stav.value + 1 end if if (proud.value + zmena) >= 0 then proud.value = proud.value + zmena
Možná si řeknete, co to proboha je, pravdou ale je, že skript samotný je velmi jednoduchý a dalšími podrobnostmi k programování v rámci Promotic Vás zatěžovat nebudu. 22
Skripty v Promotic jsou tvořeny v jazyku VisualBasic for Applications, jedná se o stejný jazyk jako se používá pro tvorbu maker v MS Office nebo balíku Corel Draw. VisualBasic má některé příjemné vlastnosti jako je třeba, že nevyžaduje před použitím deklarovat proměnnou (vůbec neškodí, když ji ale nadeklarujete) a některé další vlastnosti pro které je tento jazyk oblíbený zejména mezi programátory začátečníky. V našem skriptu jsou obecně nadeklarovány pomocí příkazu dim proměnné, které budeme využívat. Do proměnné n budeme ukládat výsledek generátoru náhodných čísel. Do proměnné zmena budeme ukládat zmenu aktuální hodnoty proudu na základě generátoru náhodných čísel. Proměnné dmez, hmez, stav a proud nám budou slouži na propojení na systémové objekty, které jsme si nadefinovali v základním rozhraní Promotic. Propojení mezi těmito proměnnými a objekty Promotic se provádí příkazem set. Např. set proud = Pm(„/NapetiVstup“)
provede propojení proměnné proud s objektem Promotic NapetiVstup. Pokud by objekty Promotic byly obsaženy v nějaké složce, bylo by nutné uvést celou cestu k proměnné. V mém případě se ale objekt nachází přímo v kořenové části, takže se specifikaci cesty mohu vyhnout. Funkce rnd() provede vygenerování náhodného čísla v intervalu <0; 1). Na základě tohoto náhodného čísla určíme velikost změny, pokud náhodné číslo bude menší než 0.5, pak se budeme snažit změnit napětí tak, že z jeho velikosti odebereme 1V. V případě, že vygenerované číslo bude větší nebo rovno 0.5 naopak k aktuální velikosti proudu přičteme 1. Tímto způsobem simulujeme náhodné kolísání proudu v elektrické síti. Poslední podmínka nám umožní pracovat s velikostí nabití baterie. Provedeme kontrolu, zda velikost proudu po změně je v povolených mezích. Pokud tomu tak skutečně je, pak k stavu nabití baterie přičteme 1 (baterie se dobijí). Pokud je aktuální hodnota proudu mimo povolený rozsah tak od stavu baterie naopak 1 odečteme – systém je napájen z baterie. Zajisté jste si také všimli, že nepoužíváme proud a další proměnné samy o sobě, ale používáme je jako objekty. K samotné hodnotě proudu tak můžeme přistoupit prací s vlastností value např. proud.value. Je příjemnou vlastností (která však za určitých podmínek může být zdrojem chyb), že se nemusíme starat a datové typy – VisualBasic for Applications provede automatické přetypování. Jediné, co nám zbývá v naší aplikaci provést je spojení prvků obrazu s objekty definovanými v hlavním editačním okně promotic. Spojení se provádí ve vlastnostech prvku. Pro táhla je to vlastnost kam zapisovat. Tentokrát ovšem nevyplníme 23
předpřipravené textové pole, ale klikneme na tlačítko vedle něj. Objeví se nové dialogové okno, které nám umožní definovat datovou vazbu. My budeme chtít napojit prvek obrazu na objekt Promotic, který jsme definovali, proto budeme definovat PP Vlastnost Pmobjektu – ve které můžeme kliknutím na tlačítko … vybrat objekt Promoticu, na který chceme propojení nadefinovat. Je potřeba nastavit vlastnost, která se má pro přebrání hodnoty použít, v našem případě to bude hodnota value. Znázornění dialogových okem propojení naleznete na obr. 16.
Obr. 16: Nastavení propojení obrazu s objektem Promotic. Analogicky propojíme i ostatní prvky obrazu s objekty Promotic. Aplikaci zkompilujeme a můžeme si ji prohlédnout, nyní by již měla také něco ukazovat. Důležité
24
Pokud Vám nešlo zprovoznit výše uvedený příklad, pak samozřejmě můžete konzultovat, ale můžete vyzkoušet také jiný příklad, který je podrobně vysvětlen přímo v dokumentaci systému Promotic. Dokumentace je v češtině, takže se není třeba obávat. Kontrolní otázky 1. Jaký je rozdíl mezi inkrementální a úplnou kompilací. 2. Jaké činnosti prování objekt PmTimer. 3. Jakým způsobem se můžeme dostat k jednotlivým definovaným obrazům v rámci běhu aplikace Promotic. Samostatná práce 1. Přidejte do našeho projektu (automatizace UPS) signalizaci, zda je systém napájen z elektrické sítě, nebo používá baterii. Korespondenční úkol. Vymyslete a vypracujte v systému Promotic automatizační úkol. Tento úkol nemusí být rozsáhlý, je ale potřeba abyste jej sami vymysleli a sami zpracovali tak, aby skutečně něco dělal (hýbaly se ručičky apod.). Prováděná činnost musí mít samozřejmě nějaký účel.
3 Bezpečnostní aspekty automatizace Průvodce studiem V této kapitole se budeme zabývat důvody proč je nutné věnovat pozornost zabezpečení automatizační části podniku a jaké následky může mít selhání této části. Po prostudování této kapitoly budete vědět –
jaké problémy s bezpečností se řeší
–
jaké jsou úskalí metod propojení průmyslové (automatizační) a běžné sítě
Čas pro studium Pro prostudování této kapitoly budete potřebovat přibližně dvě hodiny. 25
SCADA systémy byly ve svém prvopočátku jako nenáročné, levné a spolehlivé systémy. Těchto úkolů dosahovaly přenesením práce operátora ze samotné technologie na pracoviště operátorů, kteří tuto technologii spravují na dálku. Koncepčně v tomto původním pohledu je automatizační část naprosto samostatnou vůči běžné počítačové síti. S postupem doby a především s prudkým rozvojem technologií založených na Internetu se ale mění pohled na postavení SCADA systémů v podniku. Automatizační část je vnímána jako velmi cenný zdroj informací, který musí být zapojen do běžných „neautomatizačních“ procesů, tak aby firma jako celek dosáhla vyšší efektivity. Heslem dneška je taktéž propojování různých podniků do podnikatelských clusterů. Propojování se přitom může dít na úrovni personální, ale také na úrovni sdílení informací umožněním přístupu dalších subjektů k informačním systémům podniku popřípadě určitých částí sítě. Tento přístup, ačkoliv je z finančního hlediska výhodný, může s sebou nést také rizika bezpečnosti počítačové sítě jako celku, včetně možného úniku informací nebo vyřazení z činnosti některé části technologie. Nové technologie s sebou nesou nové příležitosti ke zvýšení efektivity podniku, spolu s tím však jdou ruku v ruce nové hrozby, které je nutné zvládnout. Obecně se snažíme, co možná nejvíce oddělit část automatizační od běžné počítačové sítě, rezignovali jsme však již na úplné oddělení těchto sítí. Jednotlivá automatizační technika by měla být oddělena (izolována od Internetu). Ovládání po Internetu za splnění určitých bezpečnostních opatření je možné, ale ne na přímo, mezi vzdáleným pracovištěm operátora a zařízením musí být infrastruktura pro filtraci síťového provozu. Základní součástí opatření k zajištění bezpečnosti nejen automatizační části je ošetření perimetru (hranic) sítě. Hranicí rozumíme jakékoliv zařízení umožňující komunikaci s vnějším světem mimo síť podniku, tedy pevné linky, modemy, GPRS, Wi-fi přípojné body, Bluetooth zařízení apod. Pro údržbu všech zařízení je potřeba mít plně zmapovanou používanou infrastrukturu. Jednotlivá zařízení používaná v automatizaci jsou obvykle používaná déle než běžná výpočetní technika. Z tohoto důvodu je nutné zejména v souvislosti se zavádění nových metod řízení, provádět pravidelnou aktualizaci systému v těchto zařízení obsaženého, je totiž možné, že po tomto zařízení budeme chtít něco, na co původně toto zařízení konstruováno nebylo. Samozřejmostí by mělo být taktéž tvorba bezpečnostní politiky práce s těmito zařízeními a její striktní dodržování. Zaměřme se na jednotlivé typy zabezpečení oddělování co možná největší části automatizační sítě.
26
Zabezpečení perimetru firewallem Vnější svět oddělíme od sítě jednoduchým použitím firewallu, viz. obr. 17.
Obr. 17: Oddělení sítě pomocí firewallu (převzato z [5]) Firewall se obvykle překládá jako požární stěna. Jeho základním úkolem je filtrovat síťový provoz mezi sítěmi. Pomocí tohoto zařízení je tedy možné nastavit protokoly, porty, a zařízení (podle IP adresy) jejichž komunikace může přes firewall projít. Realizace firewallu jako přehrady oddělující vnější svět od počítačové sítě organizace je správnou volbou, která ovšem neřeší všechny bezpečnostní aspekty, které je nutné vzít v úvahu. Množství komunikace, která projde firewallem je relativně velké. Jsou přes něj zpřístupněny některé služby sítě, jako jsou třeba WWW servery apod., koncové stanice mohou přistupovat ke službám internetu, některé služby sítě mohou být vystaveny kontraktorům nebo jinak spolupracujícím firmám, u kterých nemáme plnou kontrolu nad tím, jakým způsobem budou síťové prostředky využívat. Dalším problémem, který tato architektura neřeší je komunikace uvnitř sítě. Firewall ovlivňuje pouze komunikaci, která je směrována přes něj. Zařízení za firewallem, uvnitř sítě však mohou komunikovat přímo, což tato architektura zabezpečení neřeší. Přes tyto výhrady je zabezpečení vnějšího perimetru organizace první věcí, která by měla být provedena, kromě ní je však potřeba realizovat další ochranná opatření. Duální počítače Možností jak zabezpečit separaci automatizační části od běžné sítě je využít 27
tzv. duální počítače. Graficky je tento koncept znázorněn na obr. 18.
Obr. 18: Použití duálních počítačů (převzato z [5]) Duálními počítači rozumíme počítače disponující dvěma síťovými kartami, které slouží pro připojení do obou druhů sítě. Nevýhody tohoto konceptu jsou jasně patrné. Předně je to nutnost pořizovat dvě síťové karty na každý počítač, který má pracovat v obou sítích, což je nepraktické. Další nevýhodou je že tyto počítače slouží jako most mezi oběma sítě, k čemuž běžný počítač není úplně vhodně vybaven. Tyto počítače jsou tak vystaveny útokům, které ohrožují běžnou síť a mohou je propagovat dále do sítě automatizační. Tato architektura se tak hodí spíše pro malé organizace s velmi malým počtem stanic, které mají mít přístup k oběma částem sítě. Tyto stanice je potřeba maximálně zabezpečit, aby bylo omezeno riziko napadení ze strany běžné sítě s následnou propagací útoku do automatizační části sítě. Duální server Jedná se o modifikaci předchozího přístupu. Duální v tomto případě není pracovní stanice, ale server samotný, viz. obr. 19.
Historianem z obr. 19 se rozumí především realtimový databázový systém, 28
který slouží jako koncentrátor dat shromažďovaných senzory instalovanými na technologii a tento server je v tomto případě chráněný osobním firewallem.
Obr. 19: Duální server (převzato z [5]) Server nějakým způsobem by měl být přístupný oběma částem sítě, neboť obsahuje cenné poznatky o provozu technologie, které mohou být v rámci podniku dále využity. Otázkou je tedy forma realizace tohoto propojení, nikoliv zda jej vůbec realizovat. Osobní firewall teoreticky funguje stejně jako firewall běžný (myšleno dedikované zařízení), kromě této funkčnosti ovšem obsahuje některé další funkce jako je kontrola síťového provozu na úrovni aplikací nebo kontrola integrity programů. Slovo teoreticky je v předchozí větě použito zcela záměrně a to proto, že osobní firewall jako produkt může být sám předmětem útoku. Jde o způsob jakým je rozhodováno, zda komunikace bude povolena nebo zamítnuta. K vyhodnocení je potřeba, aby paket byl přijat počítačem a teprve potom je analyzován firewallem, porovnáván s pravidly a potom povolen jeho doručení na místo určení povoleno nebo zamítnuto. Problém tohoto způsobu je v tom že paket může být upraven tak, aby využil slabin známých osobních firewallů – tzv. leaků. Leak je v doslovné překladu průsak. V hantýrce osobních firewallů hovoříme o průsacích v souvislosti s neschopností firewallu vypořádat se s takto zákeřně upravenými pakety. Výsledkem mohou být chyby buffer overflow, propuštění komunikace nebo dokonce získání kontroly nad zařízením. Protože zařízení, o kterém v této souvislosti hovoříme je zároveň klíčový server automatizační části síťové infrastruktury organizace, je jasné, že obavy jsou na místě. Různé osobní personální firewally jsou různě náchylné k tomuto typu chyb. Jako vodítko pro nasazení mohou sloužit tzv. leak testy, jako je test z www.matousec.com [6]. Dedikovaná zařízení firewall jsou považována za odolnější vůči tomuto typu 29
útoku, navíc výsledkem útoku není vyřazení nebo přímé ohrožení klíčového zařízení automatizační části sítě. Filtrace provozu na bázi switch/router Bezpečnost je zde založena na filtraci na úrovni linkové vrstvy, pomocí aktivních prvků sítě typu switch a router, tak jak je to znázorněno na obr. 20.
Obr. 20: Filtrace provozu na bázi router/switch (převzato z [5]) Výhodou této formy oddělení je vysoká spolehlivost zajištěná realizací na hlubší vrstvě síťového modelu ISO/OSI než například firewall. Nevýhodou tohoto přístupu je horší přehlednost tohoto řešení, chybí zde abstrakce typická pro řešení na vyšších vrstvách síťového modelu jako je třeba firewall. Podrobný popis filtrování TCP/IP přesahuje možnosti tohoto textu, případní zájemci o podrobnější popis principu filtrace jej mohou najít třeba v literatuře [7]. Firewall jako vnitřní hranice Router/switch z předchozího případu můžeme nahradit firewallem. Výhodou tohoto řešení je jednodušší možnost spravovat infrastrukturu. Máme možnost nastavit jaká zařízení mezi sebou mohou komunikovat a jaké prostředky pro tuto komunikiaci mohou použít.
30
Obr. 21: Firewall jako vnitřní hranice (převzato z [5]) Všimněte si také umístnění serveru (historian), který je u této i předchozí architektury v běžné části podnikové sítě. Bezpečnost tohoto serveru je tak klíčovou pro další úvahy protože oddělení obou typů sítě (vnitřní perimetr) pomocí firewalu můžeme považovat za dostatečné opatření z hlediska bezpečnosti. Server v této architektuře je náchylný k útokům vedeným z podnikové sítě. Dá se dokonce říci, že v této architektuře bezpečnost tohoto serveru vůbec neřešíme. Použití demilitarizované zóny (DMZ) Řešením předchozího problému, může být vytvoření tzv. demilitarizované zóny (DMZ). DMZ rozumíme architekturu, kdy veškerý provoz k chráněnému serveru je směrován přes firewall, který řídí, jaký druh komunikace se serverem je povolen a to i pro komunikaci uvnitř sítě.
31
Obr. 22: Konstrukce demilitarizované zóny (převzato z [5]) Stejným způsobem je efektivní řešit i zabezpečení různých vnějších přípojných bodů. Filtrace jejich provozu je z hlediska bezpečnosti velmi důležitá, aby se omezila možnost jejich zneužití. Jedinou nevýhodou této architektury je teoretická propustnost firewallu. O tom, že komunikace z a do automatizační části sítě projde rozhoduje jediné zařízení. V případě chybné konfigurace může dojít k ohrožení. Tento problém řeší použití dvou firewallů pro realizaci úplného oddělení sítí. Oddělení sítí dvěma firewally Každý z firewallů na obr. 23 řídí komunikaci pouze mezi jedním typem sítě (běžná/automatizační) a serverem, což je mnohem robustnější řešení bezpečnosti než u předchozích architektur. Nevýhodou tohoto řešení je nutnost spravovat více firewallů.
32
Obr. 23: Oddělení sítí dvěma firewally (převzato z [5]) Kontrolní otázky 1) jaký je rozdíl mezi firewallem a osobním firewallem 2) co rozumíme pojmem demilitarizovaná zóna. 3) z hlediska bezpečnosti seřaďte řešení bezpečnosti na bázi duálních počítačů, demilitarizované zóny a serveru chráněného firewallem.
Literatura [1] Wikipedie: Real Time Database [on-line]. Dostupné z WWW [cit. 2007-08-10] [2] Kao, B.; Garcia – Molina, H.: An Overview of Real-time Database Systems. NATO Advanced Study Institute on Real-Time Computing, 9. října 1992 [cit. 2007-08-10] [3] Domácí stránky firmy MICROSYS s.r.o. [on-line]. Dostupné z WWW [cit. 2007-08-17] [4] Good Practice Guide – Process Controll and SCADA Security [on-line]. National Infrastructure Security Coordination Centre, dostupné z WWW [cit. 2007-10-23], 25str. [5] NISCC Good Practice Guide on Firewall Deployment for SCADA and Process Control Networks [on-line]. National Infrastructure Security Coordination Centre, dostupné z WWW [cit. 2007-10-23], 42str. [6] Windows Personal Firewall Analysis [on-line]. Dostupné z WWW
http://www.matousec.com/projects/windows-personal-firewall-analysis/leak-testsresults.php > [cit. 2007-10-24] [7] Dostálek, L.: Velký průvodce protokoly TCP/IP a systémem DNS [on-line]. Dostupné z WWW [cit. 2007-10-24]
34