Ve většině podnikových infrastruktur jsou to právě databáze, kde se nachází mnoho cenných pokladů. Je to část bezpečného úkrytu, přípravného prostoru a základny pro informace, které mohou být velmi osobní či extrémně cenné.
Jejich ochrana před invazí a únikem je jednou z nejdůležitějších pracovních odpovědností pro správce databází, programátory a týmy DevOps, které na ně spoléhají.
Tato práce však není snadná. Tvůrci poskytují všechny nástroje, integrují dobrá bezpečnostní opatření a dokumentují je. Přesto však desítky potenciálních chyb, opominutí a omylů, a to jak hloupých, tak i pochopitelných, způsobují, že je to nekonečný boj.
Přinášíme popis několika nejdůležitějších chyb, které se stávají i těm nejlepším.
Nedostatečná správa přístupu
Mnoho databází sídlí na vyhrazených počítačích a ty je potřebné ochránit před nežádoucím přístupem. Roli správce databáze by měli mít přístupnou jen uživatelé bez významnějších oprávnění a přihlašovací údaje by měly být omezené na úzký rozsah sítí a jiných počítačů. Firewally mohou blokovat IP adresy.
Stejná pravidla by se měla vztahovat i na vrstvu operačního systému, a pokud běží ve virtuálním počítači, tak též na hypervisor a správu cloudu. Tato omezení zpomalují práci při aktualizacích softwaru a při řešení problémů, ale omezení cest, které mohou zneužít útočníci, stojí za to.
Snadný fyzický přístup
Není nutné vysvětlovat, co může udělat chytrý útočník, když by se dostal do místnosti se servery. Cloudové společnosti a provozovatelé pronajímaných datových center nabízejí uzamčené klece uvnitř silně střežených budov s omezeným přístupem.
Pokud jsou vaše data uložena lokálně ve vašem vlastním datovém centru, dodržujte stejná pravidla, aby přístup do místnosti s fyzickými disky (a s dalšími zařízeními infrastruktury) mělo jen pár důvěryhodných osob.
Nechráněné zálohy
Není neobvyklé, že tým odvede skvělou práci při zabezpečování databázového serveru, ale pak zapomene na zálohy. Obsahují stejné informace, a tak potřebují stejnou péči.
Pásky, disky a další statická média by měla být uzamčena v trezoru, nejlépe v jiné lokalitě, kde nemůže dojít k poškození stejným požárem nebo povodní jako u originálních dat.
Nešifrované uložení dat
Algoritmy pro ochranu dat jsou obecně důvěryhodné, protože byly široce testované, a současné standardy nemají žádné veřejně známé slabiny. Použití dobrého šifrování pro databázi a zálohy je nyní snadné pro všechna ukládaná data.
I když jsou algoritmy a implementace bezpečné, je nutno ještě navíc pečlivě chránit klíče. Poskytovatelé cloudu a vývojáři serverů vytvářejí důvěryhodný hardware, který je oddělený od běžného pracovního toku, takže jsou tam klíče ve větším bezpečí.
Přestože nejsou tyto systémy dokonalé, jsou lepší než nic. Když jsou data uchovávaná jako šifrovaná, upřednostňují někteří uložení klíčů na jiném fyzickém místě, nejlépe off-line. Někteří dokonce klíče vytisknou a dají papír do trezoru.
Nepoužívání algoritmů ochrany osobních údajů
Šifrování je dobrý nástroj pro ochranu fyzických kopií databáze, pokud dokážete chránit klíč. K zašifrování lze využít širokou řadu dobrých algoritmů. Nedokážou sice vyřešit každý problém, ale mohou být překvapivě účinné, když není potřeba udržet všechna citlivá data dostupná.
Nejjednodušší může být nahrazení jmen za náhodné pseudonymy. Desítky dalších přístupů používají potřebné množství matematiky k ochraně osobních údajů a přitom stále ponechávají dostatečný rozsah údajů čitelný pro dosahování cílů databáze.
Nedostatek kontroly nad šířením
Když se data používají, kopírují se do mezipamětí cache a do provozních serverů. Cílem architektů úložiště dat je minimalizovat počet kopií a zajistit, aby byly zničené, jakmile se už data nepoužívají.
Mnoho databází nabízí možnosti rutinního zrcadlení nebo zálohování jako funkci chránící před selháním počítače. Přestože to může být nezbytné pro poskytování stabilní služby, vyplatí se důkladně si promyslet šíření již při návrhu.
V některých případech může být možné omezit nekontrolovatelné kopírování bez příliš velkého zhoršení služby. Někdy může být lepší zvolit pomalejší a méně redundantní možnosti, pokud omezují počet míst, kde by mohlo dojít k prolomení při útoku.
Nedostatek kontroly nad databází
Nejlepší databáze jsou produktem desítek let evoluce pod taktovkou nekonečného testování a výzkumu zabezpečení. Vyberte si vhodnou. Tvůrci databází navíc přidali dobré nástroje pro správu a omezování přístupu – měli byste je používat.
Zajistěte, aby mohly ke konkrétním tabulkám přistupovat jen správné aplikace. Nepoužívejte stejné heslo pro více aplikací. Samozřejmě nepoužívejte to výchozí. Omezte přístup k místním procesům a místní síti, pokud je to možné.
Zranitelné sekundární databáze
Mnoho řešení používá rychlé mezipaměti cache typu in-memory jako Redis ke zrychlení reakcí. Tyto sekundární databáze a sítě pro doručování obsahu obsahují často kopie informací z databáze. Věnujte jim tolik času pro správnou konfiguraci jako věnujete hlavním databázím.
Zranitelné aplikace s přístupem k datům
Veškerá péče o zabezpečení databáze by neměla smysl, pokud by se důvěryhodná aplikace chovala špatně, zejména když by důvěryhodná aplikace měla přístup ke všem datům.
Jedním z běžných problémů je injektáž SQL, tedy útok, který oklame špatně naprogramovanou aplikaci a dovolí předání škodlivého SQL dotazu do databáze. Dalším je špatné zabezpečení samotné aplikace.
V mnoha architekturách vidí aplikace všechno. Pokud neodvádí dobrou práci při řízení přístupu uživatelů, může být otevřenou cestou pro únik dat.
Rizikové vystavení internetu
Databáze jsou ideálními kandidáty pro provoz v části sítě bez veřejného přístupu. Přestože si někteří vývojáři chtějí zjednodušit svůj život otevřením databáze pro obecný přístup z internetu, měli by všichni ochránci netriviálních informací myslet jinak.
Pokud bude vaše databáze komunikovat jen se servery uživatelského rozhraní, může být v části sítě, kde se k ní dostanou jen takové servery.
Nedostatek řízení integrity
Moderní databáze nabízejí širokou řadu funkcí, která pomáhá chránit data, aby se do nich nedostávaly chyby a nesrovnalosti. Stanovení schématu pro data zajišťuje, aby jednotlivé prvky dat odpovídaly sadě pravidel.
Použití transakcí a zamykání zabraňuje zavlečení chyb při aktualizacích. Nasazení těchto možností řízení integrity zvyšuje výpočetní režii, ale maximální možné využití snižuje následky náhodných chyb a může také zabránit uživatelům zadat nekonzistentní či nesprávná data.
Uchovávání nepotřebných dat
Někdy je nejbezpečnějším řešením databázi smazat. Vývojové týmy se často chovají jako křečci a skladují veškeré informace pro budoucí potřeby, které ale nikdy nemusejí nastat.
Někdy je nejjednodušším způsobem ochrany před únikem dat jejich smazání. Pokud nepotřebujete nějaká data pro budoucí využití a zákazníci je nikdy nebudou vyžadovat, můžete je smazat – a tak se potom nemusíte starat o jejich ochranu.
Pokud si nejste zcela jisti, zda data někdy nebudou znovu potřeba, můžete vymazat on-line kopie a uchovávat jen off-line zálohy v nejméně dostupném úložišti.
Technologie, které zlepšují bezpečnost
Samotné databázové technologie nezajišťují bezpečnost v nich uložených dat, a ani to není jejich cílem. Pro tyto účely se naopak využívají různé techniky či nástroje, které mohou, ale také nemusí být součástí konkrétní databáze. Může jít jak o velmi jednoduché mechanismy pracující na bázi zakódování pomocí tajných kódů, další zase využívají komplexnější systém s pokročilejším využitím matematických vzorců.
Samozřejmostí, na které ale někteří provozovatelé zapomínají, je udržování databázových strojů v aktuálním stavu – tedy pravidelně instalovat různé bezpečnostní patche a jiné opravy výrobce, případně využívat nejnovější verzi databáze – je poměrně časté, že útočníci dokážou zneužít nějakou neopravenou zranitelnost, jejíž odstranění přitom nepředstavuje nějaký složitý proces. Důležité je v tomto směru mít i snadno dostupný support výrobce, ideálně v lokálním jazyce.
Jaké prostředky vám tedy mohou zvýšit ochranu údajů v databázích? Tady jsou ty nejzajímavější.
Základní a v mnoha případech i nejjednodušší metodou, jak zabezpečit citlivé údaje, je jejich zašifrování. Algoritmy jako AES dokážou data doslova uzamknout a zpřístupnit je jen těm, kdo vlastní odpovídající klíč. Rizikem toho přístupu ale je, že se tento klíč dostane do nepovolaných rukou a data tak zpřístupní i nežádoucím osobám.
Další rozšířenou metodou, jak ochránit data, je možnost zpracovávat je distribuovaným způsobem, kdy se na různé počítače předává k operacím pouze část dat, často už zakódovaných, takže je pro případné útočníky v podstatě nemožné získat celkový obraz původních údajů. Tato metoda se využívá například i při zpracovávání dat přímo v místě, kde vznikají.
Další hojně používanou technikou je i hashování. Jde o metodu, v rámci které lze ověřovat autenticitu a integritu různých dat, což je klíčové například u blockchainu, který je na principu neměnitelnosti dat založený.
Hashování funguje tak, že zmenšuje velké soubory na výrazně menší, což usnadňuje práci s nimi, a na rozdíl od šifrování není reverzibilní (při znalosti hashe nezískáte žádným způsobem původní data).
S hashováním pak souvisí i digitální podpis, který dokáže propojit funkci detekování manipulace s hashem a certifikát toho, kdo data vytvořil či upravil – v případě databází tak lze dokonce ověřovat i jednotlivé transakce.
Poměrně novou technikou je tzv. diferenciální soukromí, kdy se k citlivým datům například osobního rázu přidává určitý šum, který znemožní přiřadit zpracovávaná data konkrétní osobě, avšak celkové statistiky to neovlivní. To dovoluje například předat třetím stranám datové sady ke zpracování, aniž by hrozilo riziko jejich zneužití. Podobně fungují i tzv. syntetická data.
V poslední době se také začíná více mluvit o tzv. homomorfním šifrování – metodě, kdy se mohou různé operace a výpočty provádět přímo se zakódovanými daty, aniž by je bylo nutné dešifrovat. Zatím jde však spíše o experimentální záležitost, která je mnohdy velmi náročná na výpočetní výkon, ale ukazuje směr, kterým by se bezpečnost databází i zpracování jejich dat mohly do budoucna ubírat.
Zcela nejbezpečnějším způsobem, jak chránit citlivá data, je, jak už je uvedené výše, bezesporu ten, že je vůbec nemáte.