Table of Contents
12. Ochrana, zabezpečení a integrita dat
Ochrana před neautorizovaným přístupem. Ochrana před chybnými vstupními daty. Ochrana před kolizemi, vyplývajícími ze současného přístupu více uživatelů k datům. Způsoby zajištění obnovy dat. Zajištění integrity datové základny.
Úloha
Předpoklady: Jste asistentem vedoucího informatiky a řešíte kooperaci pracovníků na zajištění bezpečnosti dat
Zadání:
- Jaké ICT role by se měly na zabezpečení dat podílet, jak a jaké nástroje by mohly pro svou činnost využívat?
- ICT manažer – bezpečnostní politika
- analytik – návrhář – návrh logických a fyzických struktur dat včetně specifikace integritních omezení
- správce DB – definice přístupových práv k funkcím SŘBD a databázovým objektům, řešení kolizních stavů
- programátor – tvorba víceuživatelských aplikací (zajištění současného přístupu uživatelů ke zdrojům)
Teorie
Vycházíme z toho, že řešíme problematiku ochrany dat v SŘBD. Obecně ochrana dat a bezpečnost v jiné otázce.
Ochrana před neautorizovaným přístupem – primárně pomocí hesel. Vychází se z toho, že pouze administrátor může měnit strukturu databáze a přidělovat přístupová práva jednotlivým uživatelům, rolím, atd. a to na úrovni databáze i jednotlivých sloupců (atributů). Přístupu jinak, než přes server je zamezeno šifrováním dat. Malér ale nastane, pokud je někdo lemro a myslí si, že zazálohuje databázi zkopírováním pouhých jejích souborů.
Nastavení hesel lze provést zvlášť pro jednotlivé příkazy: select, update, insert, delete GRANT select ON tabulka
Taky není špatné používat nějaká „bezpečná“ hesla.
Ochrana před chybnými vstupními daty se děje na dodržováním integrity:
- doménová integrita – data budou odpovídat formátu – číslo do čísla, jinak je vyhozena chyba
- entitní integrita – žádná položka primárního klíče nemůže být prázdná
- referenční integrita – cizí klíč se nemůže odkazovat do tabulky, kde by neexistovala patřičná položka (třeba odkaz do tabulky DPH na neexistující sazbu)
I velmi komplikovaná integritní omezení a implementaci business logiky lze dosáhnout pomocí triggerů.
Záleží hodně na návrhu databáze, co databázový stroj zbaští. Dobře provedeným nastavením integritních omezení lze implementovat i velmi složitou business logiku už na úrovni serveru. Maximální relačnost by měla být dosažena tak, aby vůbec veškerá integritní omezení byla na straně serveru, tozn. aby se při jejich aktualizaci nemusely upravovali klienti. Ve skutečnosti je rozumné s ohledem na zátěž aplikace a uživatelskou přívětivost zejména u webových aplikací ověřovat alespoň doménovou integritu už na prezentační vrstvě.
Ochrana před kolizemi vyplývajícími ze současného přístupu více uživatelů: Jednak jsou to transakce, tozn. operace, které se dějí jako celek. Aby se zamezilo kolizi při úpravě dat dvěma transakcemi, používají se časové značky, ale především zámky. Ty mohou být exkluzivní – při úpravě – nedá se dělat nic, nebo sdílené – při čtení – dá se dělat jiné čtení. Ostatní části musí čekat, až to transakce uvolní. Při používání zámků může dojít k deadlockům. Řešení – jejich vyhledávání – cykly a timeouty a pokud se najdou, tak rollback.
Obnova dat vyplývá z principu transakčního zpracování, tozn. že před i po proběhnutí transakce musí být databáze konzistentní. V případě, že to klekne, po obnovení musí systém zařídit zotavení dokončených transakcí a zrušení všech změn transakcí nedokončených. Prováděné akce se dají odečíst ze žurnálového souboru, kam ukládá systém informace o dílčích změnách v něm se udržuje stav dotčených databázových polí před změnou a po změně. To je obnova v rámci SŘBD.
Obecně lze ochrany a obnovy dat dosáhnout pravidelným zálohováním a to může být nepřetržité – mirroring, úplné – pravidelné zálohy kompletní databáze a inkrementální – zálohy celé databáze občas, pořád zálohovat změny. Obnovení – vycouvání UNDO, dokončení – REDO.
Zajištění integrity transakcemi, viz. výše.
Praxe
Otázka si podle mě odpovídá sama. Podílet by se měli např:
- IT manažer – bezpečnostní politika
- analytik – zakomponování bezpečnosti do návrhu a vytyčení integritních omezení
- vývojář – napsání bezpečného programu, implementace souběžného přístupu ke zdrojům ve víceuživatelské aplikaci
- správce DB – nastavení přístupových práv, řešení kolizních stavů, zálohování DB
