Bezpieczeństwo baz danych
Wstęp
Bazy danych często stanowią jeden z głównych elementów systemów IT – przechowują oraz udostępniają informacje. Sama definicja bazy nie narzuca określonego sposobu organizacji danych, jednak obecnie najbardziej rozpoznawana na rynku jest baza relacyjna oraz związany z nią język SQL. Implementacji „SQL-owych baz danych” są zapewne setki, choć zaledwie kilka z nich cieszy się szeroką popularnością. Takimi systemami są: Oracle Database, SQL Server, DB2, MySQL czy Postgresql. Przy okazji, warto wspomnieć, że istnieją również inne rozwiązania – alternatywne do wspomnianych powyżej - sposoby organizacji informacji, jak choćby obiektowa baza danych (np. ZODB), czy baza danych XML (np. eXist).
W poniższym tekście zajmiemy się tematyką ochrony baz danych – głównie w kontekście baz relacyjnych. Zajmiemy się takimi zagadnieniami jak:
- ekspozycja bazy na poziomie sieci
- poprawki bezpieczeństwa
- użytkownicy z wykorzystaniem których działa baza danych
- uprawnienia do plików bazodanowych – na poziomie systemu plików
- ograniczenie funkcjonalności oferowanych przez bazę danych
- logowanie (księgowanie) dostępu do bazy danych
- szyfrowanie
- bezpieczeństwo po stronie aplikacji korzystających z bazy danych
- miejsce składowania danych w systemie plików
- kopie zapasowe
Zanim przejdziemy do szczegółów zastanowimy się wcześniej nad pytaniem:
Dlaczego chronimy bazę danych?
Odpowiedź na to pytanie może wydać się prosta – aby realizować odpowiednie cele biznesowe, tj. aby system, który wykorzystuje bazę danych generował odpowiednie zyski dla organizacji. Zilustrujmy to na następującym przykładzie.
Przykład: prywatna placówka medyczna posiada system umożliwiający rejestrację pacjentów on-line. W bazie danych przechowywane są również informacje o pacjencie oraz historii jego chorób.
Zyskiem z posiadania takiej bazy może być: wygoda pacjenta, ograniczenie dokumentacji papierowej oraz szybsze dodarcie do określonych informacji (oszczędność czasu pracowników kliniki). Ten cel biznesowy może być zagrożony np. przez:
- czasowy brak dostępności bazy (pacjenci nie mogą się rejestrować, lekarze nie mają wglądu w historię choroby)
- utratę poufności bazy (dane dostają się w niepowołane ręce; istnieje ryzyko np. złamania zapisów Ustawy o Ochronie Danych Osobowych)
- nieuprawnioną zmianę informacji w bazie (może to spowodować chaos w działaniu placówki medycznej)
W powyższym przykładzie, odpowiednie zabezpieczenie tego typu bazy danych może zminimalizować powyższe zagrożenia, a tym samym pozytywnie wpłynąć na zysk kliniki. Jako rodzaj informacji wymagającej ochrony wskazaliśmy dane osobowe / dane medyczne. Jakie jeszcze inne dane mogą być traktowane jako wrażliwe i wymagające ochrony? Odpowiedź na to pytanie pozostawiamy Czytelnikowi, jednocześnie wskazując kilka możliwości:
- Dane o charakterze finansowym (np. salda kont bankowych, informacje płacowe, numery kart kredytowych)
- Hasła dostępowe do systemów (często użytkownicy posiadają takie same hasła dostępowe do wielu systemów – zatem uzyskanie informacji o hasłach z jednej bazy danych może prowadzić do uzyskania dostępu do wielu innych systemów)
- Informacje stanowiące o przewadze konkurencyjnej firmy (np. dane klientów czy dostawców)
- Wszystkie inne dane firmowe o charakterze poufnym
Niejako podsumowując dotychczas opisane kwestie, spójrzmy jak ramowo na następujące zagadnienie:
Planowanie prac związanych z bezpieczeństwem bazy danych
Planowanie to może wyglądać następująco:
- Inwentaryzacja baz danych oraz przechowywanych w nich informacji (np. baza opisana w przykładzie powyżej, przechowująca dane medyczne)
- Określenie wartości skatalogowanych baz danych (istotne dane będziemy objąć szczególnie wysoką ochroną).
- Określenie czynników mogących zagrozić poprawnemu funkcjonowaniu bazy (np. zewnętrzny atak z poziomu Internetu, awaria sprzętowa serwera, atak z sieci LAN, itd.) - wraz z prawdopodobieństwem wystąpienia (tzw. ryzykiem)
- Określenie odporności naszej bazy na wszelakie zagrożenia określone powyżej (tym w głównej mierze zajmiemy się w naszym artykule).
- Rekonfiguracja bazy danych, jeśli jej odporność na wskazane wcześniej zagrożenia jest niska.
Czytelnikowi może nasunąć się pytanie, ile czasu warto poświęcić na realizację całego powyższego procesu? Możemy odpowiedzieć – adekwatnie do wartości przechowywanych przez nas danych. Co to precyzyjnie oznacza, Czytelnik powinien odpowiedzieć we własnym zakresie, analizując swój kontekst. Zainteresowanych tego typu szacowaniami odsyłamy do tematyki analizy ryzyka, a sami przechodzimy do konkretnych działań, które można wykonać przy weryfikacji bezpieczeństwa bazy danych.
Czytaj dalej
