Bazy danych
Plan wykładu Wprowadzenie Bezpieczeństwo systemów bazodanowych Przykład zagroŝenia bezpieczeństwa Pokaz Pytania
Wprowadzenie Bazy danych dostęp lokalny dostęp zdalny Internetowe bazy danych
Wprowadzenie Problem bezpiecznego udostępniania informacji utrzymywanie spójności więzy integralności odporność na błędy odtworzenie stanu bazy danych w przypadku awarii dostępność ochrona przed nieupowaŝnionym dostępem polityka bezpieczeństwa w zakresie dostępu do danych
Wprowadzenie Problem bezpiecznego udostępniania informacji cd. Język SQL a bezpieczeństwo Polecenia dotyczące transakcji SET Transaction Nadawanie/odbieranie uprawnień GRANT/REVOKE Szyfrowanie danych W wybranych implementacjach
Wprowadzenie Bezpieczeństwo bazy danych UŜytkownicy, grupy uŝytkowników i ich uprawnienia Uprawnienia dot. języka DDL tworzenie obiektów modyfikacja definicji obiektów usuwanie obiektów
Wprowadzenie Bezpieczeństwo bazy danych UŜytkownicy, grupy uŝytkowników i ich uprawnienia Uprawnienia dot. języka DML dostęp do danych SELECT
Bazy danych a polityka bezpieczeństwa Podejście 1: bezpieczeństwo uznaniowe nadawanie/odbieranie uprawnień do wykonywania operacji na określonych obiektach Podejście 2: bezpieczeństwo mandatoryjne stosowanie list uprawnień
Projektowanie bezpiecznych baz danych Metodyka wielofazowa Określenie wymagań w zakresie bezpieczeństwa dla danego środowiska, niezaleŝnie od oprogramowania Nie rozpoczynamy od moŝliwości oferowanych przez SZBD Obejmuje 5 faz
Projektowanie bezpiecznych baz danych Metodyka wielofazowa Analiza wstępna Formułowanie wymagań oraz opracowanie polityki bezpieczeństwa Projektowanie konceptualne Projektowanie logiczne Projektowanie fizyczne
Projektowanie bezpiecznych baz danych Metodyka wielofazowa: Analiza wstępna Badanie wykonalności systemów zabezpieczeń Ocena ryzyka zagroŝenia, straty Cechy środowiska BD (zastosowania militarne, komercyjne) Stosowalność produktów (adaptacja produktów, tworzenie systemu zabezpieczeń od podstaw) Spójność produktów (integracja mechanizmów zabezpieczeń z moŝliwościami sprzętu i oprogramowania) Wynik tej fazy: decyzja o przejściu do kolejnej fazy
Projektowanie bezpiecznych baz danych Metodyka wielofazowa: Formułowanie wymagań oraz opracowanie polityki bezpieczeństwa Analiza zagroŝeń obejmująca: Analizę wartości (kontrola zwiększa się wraz z wartością) Identyfikację zagroŝeń Analizę odporności (identyfikacja słabych punktów) Analizę i szacowanie ryzyka prawdopodobieństwo zajścia niepoŝądanego zdarzenia Definiowanie wymagań Wynik tej fazy: wymagania dotyczące bezpieczeństwa
Projektowanie bezpiecznych baz danych Metodyka wielofazowa: Formułowanie wymagań oraz opracowanie polityki bezpieczeństwa Wymagania: Dział finansowy ma dostęp do danych finansowych wyłącznie z terminala 1 Kto, co, z czym i pod jakim warunkiem <podmiot, akcja, obiekt, warunek> Przygotowanie polityki bezpieczeństwa Zdefiniowanie autoryzowanego dostępu do róŝnych obiektów w systemie dla kaŝdego z podmiotów
Projektowanie bezpiecznych baz danych Metodyka wielofazowa: Projektowanie konceptualne Formalizacja koncepcji modelu bezpieczeństwa Określenie podmiotów i obiektów (oraz ich grupowanie) Identyfikacja trybów dostępu do obiektów przyznanych róŝnym podmiotom Analiza propagacji autoryzacji w systemie
Projektowanie bezpiecznych baz danych Metodyka wielofazowa: Projektowanie logiczne Przekształcenie koncepcji w model logiczny Określenie, które wymagania mogą być zrealizowane przez istniejące mechanizmy SZBD, a które trzeba stworzyć
Projektowanie bezpiecznych baz danych Metodyka wielofazowa: Projektowanie fizyczne Opracowanie fizycznej struktury reguł dostępu IMPLEMENTACJA MECHANIZMÓW BEZPIECZEŃSTWA
Projektowanie bezpiecznych baz danych Implementacja mechanizmów bezpieczeństwa Stosować proste, wydajne, weryfikowalne, niesprzeczne, kontrolowalne, trudne w obejściu mechanizmy bezpieczeństwa Minimalny poziom uprawnień Niezawodny sprzęt
Mechanizmy bezpieczeństwa w systemach bazodanowych Przeciwmiary dla następujących zagroŝeń Nielegalny odczyt/modyfikacja danych przez nieuprawnionych uŝytkowników Błędy związane z operacjami na danych Skutki kolizji przy współbieŝnym dostępie do danych Awaria: oprogramowania/sprzętu
Mechanizmy bezpieczeństwa w systemach bazodanowych Zabezpieczanie dostępu do danych Zabezpieczenia po stronie serwera bazy danych Zabezpieczenia po stronie aplikacji klienckiej Szyfrowanie danych Prywatność w systemach statystycznej analizy danych Ochrona integralności danych Integralność semantyczna i transakcyjna
Zabezpieczanie dostępu do danych Zabezpieczenia po stronie serwera bazy danych Uwierzytelnianie Przyznawanie uprawnień Ograniczenie zakresu działań do obszaru wyznaczonego przyznanymi uprawnieniami
Zabezpieczanie dostępu do danych Zabezpieczenia po stronie serwera bazy danych Tworzenie kont uŝytkowników Określenie hasła Nadawanie uprawnień Uprawnienia ogólne (dot. całej bazy danych) Uprawnienia szczegółowe (dot. obiektu bazy danych)
Zabezpieczanie dostępu do danych Zabezpieczenia po stronie serwera bazy danych Uprawnienia ogólne (Oracle) Tworzenie kont uŝytkowników CREATE USER <nazwa> IDENTIFIED BY <hasło> Nadawanie uprawnień GRANT <uprawnienie> To <uŝytkownik> Uprawnienia: np. CREATE TABLE
Zabezpieczanie dostępu do danych Zabezpieczenia po stronie serwera bazy danych Uprawnienia ogólne (Informix) Tworzenie uŝytkowników powiązane z nadaniem uprawnień GRANT <klasa uŝytkownika> TO <uŝytkownik> IDENTIFIED BY <hasło> Klasy uŝytkowników CONNECT (prawo dostępu do tablic) RESOURCE (prawo tworzenia tablic) DBA (wszelkie prawa)
Zabezpieczanie dostępu do danych Zabezpieczenia po stronie serwera bazy danych Uprawnienia szczegółowe GRANT <uprawnienie> ON <obiekt> TO <uŝytkownik> [WITH GRANT OPTION] WITH GRANT OPTION moŝliwość przekazania nadanych uprawnień innym uŝytkownikom Uprawnienia SELECT, INSERT, DELETE, ALTER,... RESOURCE (prawo tworzenia tablic) DBA (wszelkie prawa)
Zabezpieczanie dostępu do danych Zabezpieczenia po stronie serwera bazy danych Uprawnienia szczegółowe Mogą być przyznawane do wirtualnych tablic (perspektyw) ZawęŜenie do konkretnych kolumn, wierszy
Zabezpieczanie dostępu do danych Zabezpieczenia po stronie serwera bazy danych Przykład (MySQL) Instalacja: apt-get install mysql-server mysql-common mysql-client Konfiguracja: mysqladmin -u root password haselko Utworzenie nowej bazy danych: mysqladmin create postnuke -u root -p Utworzenie nowego uŝytkownika: a) mysql -u root -p b) mysql> USE mysql; c) mysql> INSERT INTO user set Host='localhost', User='nuke', Password=PASSWORD('haslo'); d) grant select,insert,update,delete,create,drop on postnuke.* to nuke@localhost identified by 'haslo'; e) mysql> FLUSH PRIVILEGES;
Pokaz
Zabezpieczanie dostępu do danych Zabezpieczenia po stronie aplikacji klienta Dostęp do wybranych funkcji aplikacji Dostrojenie menu (pozycje aktywne i pozycje wygaszone) Konieczne jest skorelowanie uprawnień: tych na poziomie aplikacji, z tymi na poziomie serwera
Zabezpieczanie dostępu do danych Szyfrowanie w bazach danych Szyfrowanie haseł uŝytkowników Szyfrowanie procedur składowanych, ciał funkcji, etc. Szyfrowanie przechowywanych danych Szyfrowanie tablic Szyfrowanie rekordów Szyfrowanie transmitowanych danych
Zabezpieczanie dostępu do danych Prywatność w systemach statystycznej analizy danych Systemy statystycznej analizy danych działają na bazach danych (np. medycznych) Formułowane w zapytaniach warunki nie mogą dotyczyć atrybutów identyfikujących osoby, firmy,... Odpowiedzi dotyczą tylko wartości zagregowanych
Zabezpieczanie dostępu do danych Prywatność w systemach statystycznej analizy danych Zapytanie o liczbę chorych spełniających warunki: męŝczyzna, wiek 30 lat, zawód listonosz, miejsce zamieszkania Zabrze niewielki zbiór odpowiedzi (np. 1-elementowy) MoŜliwość doprecyzowania zapytania Ochrona przed zapytaniami dla których liczebność zbioru odpowiedzi jest mniejsza od zadanej wartości
Ochrona integralności danych Integralność semantyczna Związana z błędami logicznymi w danych Integralność transakcyjna Związana ze współbieŝnym dostępem do danych Związana z awariami sprzętu i oprogramowania
Ochrona integralności danych Integralność semantyczna oznacza: Zgodność wartości danych ze znaczeniem atrybutów Zgodność wartości logicznie powiązanych danych Kontrola zgodności realizowana jest poprzez ograniczenia Ograniczenia nakładane na dziedziny atrybutów Więzy referencyjne
Ochrona integralności danych Integralność semantyczna Ograniczenia nakładane na dziedziny atrybutów Waga powinna być liczbą nieujemną Płeć powinna być wyraŝona za pomocą jedną z wartości z zadeklarowanego wcześniej zbioru Ograniczenia realizowane za pomocą wyzwalaczy
Ochrona integralności danych Integralność semantyczna Więzy referencyjne dotyczą zaleŝności między rekordami; zaleŝności te realizowane są przez związek pomiędzy kluczem głównym, a kluczem obcym Przykład Przypisanie pracownika do działu identyfikator zespołu w rekordzie opisującym pracownika musi mieć odpowiednik w identyfikatorze istniejącego zespołu
Ochrona integralności danych Integralność semantyczna Więzy referencyjne Powstaje związek: tablicy nadrzędnej z tablicą podrzędną Tablica nadrzędna zawiera klucz główny MoŜliwe ograniczenia przy więzach referencyjnych Usunięcie wiersza z tablicy nadrzędnej powoduje usunięcie wszystkich wierszy z tablicy podrzędnej Usunięcie wiersza z tablicy nadrzędnej jest moŝliwe, gdy w tablicy podrzędnej brak wierszy logicznie związanych z wierszem usuwanym Usunięcie wiersza z tablicy nadrzędnej powoduje wstawienie wartości pustych w miejsce klucza obcego
Ochrona integralności danych Integralność transakcyjna Transakcja to ciąg operacji na bazie danych tworzących całość
Ochrona integralności danych Integralność transakcyjna Przykład transakcji Przepisanie wartości W z konta A na konto B T: początek odczyt A A:=A-W zapis A odczyt B B:=B+W zapis B koniec
Ochrona integralności danych Integralność transakcyjna Integralność w podanym przykładzie: badanie zgodności sumy kont: przed i po transakcji Rozpatrzymy dwa zagroŝenia integralności WspółbieŜna realizacja wielu transakcji operujących na tej samej bazie danych Przerwanie transakcji w wyniku wystąpienia sytuacji uniemoŝliwiającej zakończenie transakcji np. awaria sprzętu, oprogramowania
Ochrona integralności danych Integralność transakcyjna WspółbieŜna realizacja wielu transakcji operujących na tej samej bazie danych Transakcje: T1 i T2 T1: A Kwota W1 B T2: B Kwota W2 C odczyt A A:= A W1 zapis A odczyt B B:= B + W1 zapis B odczyt B B:= B W2 zapis B odczyt C C:= C + W2 zapis C
Ochrona integralności danych Integralność transakcyjna odczyt A A:= A W1 zapis A odczyt B B:= B + W1 zapis B Odczyt B w T1, przed zapisem B w T2 Stan konta B = B Pocz + W1 Zamiast B = B Pocz W2 + W1 odczyt B B:= B W2 zapis B odczyt C C:= C + W2 zapis C Sumy kont: A Pocz + B Pocz + C Pocz + W2
Ochrona integralności danych Integralność transakcyjna Ochrona poprzez zastosowanie mechanizmu blokad Zablokowanie dostępu do stanu konta B przez inną transakcję (tutaj: T1) uniemoŝliwi odczyt konta B przed zapisem w transakcji T2 Dwufazowy protokół blokowania (2PC) NałoŜenie wszystkich blokad, a potem zwolnienie pierwszej blokady i kolejnych
Ochrona integralności danych Zarządzanie transakcjami Transakcja zostaje przerwana w wyniku awarii (np. prądu) Nie wszystkie transakcje zostają zakończone Np. obciąŝenie konta X awaria (brak uznania konta Y) Ponowne uruchomienie systemu niespójna baza danych Solucja? Zasada wszystko albo nic Wykorzystanie dziennika transakcji
Ochrona integralności danych Zarządzanie transakcjami Dziennik transakcji zawiera informacje o operacji Identyfikator transakcji Adres danej, która ma być zmodyfikowana Nowa wartość danej Wykorzystywana jest metoda z opóźnionym zapisem do bazy Odnotowanie w dzienniku, a dopiero potem zapis w bazie danych (odnotowywanie wypełnienia transakcji)
Ochrona integralności danych Zarządzanie transakcjami Przed zakończeniem transakcji nie następuje Ŝadna zmiana w bazie danych, wycofanie polega zatem na dokonaniu odpowiedniego wpisu w dziennik Przyczyny wycofania transakcji Brak danych (np. konta B) Wzajemna blokada transakcji Upadek systemu
Atak SQL Injection Internetowe bazy danych Interfejs webowy dostępu do danych w bazie danych Korzyść i zagroŝenie Trójwarstwowa architektura Dane Warstwa pośrednicząca Aplikacja kliencka
Atak SQL Injection Zapytanie kierowane jest przez interfejs aplikacji klienckiej do bazy danych Warstwa pośrednicząca przygotowuje właściwe zapytanie SQL Atak SQL Injection polega na nieautoryzowanym wykonaniu wyraŝeń języka SQL
Atak SQL Injection Dodanie do właściwego zapytania, zapytania dodatkowego (nieautoryzowanego) Rezultat Uzyskanie dostępu do danych Modyfikacja danych Obejście mechanizmów uwierzytelniających
Atak SQL Injection ZałoŜenie: przykładowy formularz Formularz webowy z polem tekstowym Zawartość pola tekstowego jest wpisywana do treści zapytania 1. SELECT nazwisko FROM Pracownicy WHERE 2. pensja = 1000 3. SELECT nazwisko FROM Pracownicy WHERE pensja=1000;
Atak SQL Injection Atak (1) Formularz webowy z polem tekstowym Zawartość pola tekstowego jest wpisywana do treści zapytania 1. SELECT Nazwisko FROM Pracownicy WHERE 2. pensja=800 union SELECT user FROM user; 3. SELECT nazwisko FROM Pracownicy WHERE pensja=1000 union SELECT user FROM user;
Atak SQL Injection Atak (2) Modyfikacja danych UŜytkownik: ; delete from users Wynik: SELECT id FROM users WHERE username = "; delete from users Zawartość tablicy users zostanie usunięta
Atak SQL Injection Formularz webowy z polami tekstowymi <HTML> <BODY> FORM ACTION=LoginPage2.php> Uzytkownik: <INPUT NAME="username"><BR> Haslo: <INPUT NAME="password"><BR> <INPUT TYPE="submit" VALUE="Zaloguj"> </FORM> </BODY>
Atak SQL Injection Plik: LoginPage2.php function MyAuth( $conn,$username,$password) { $query = "SELECT id FROM users WHERE"; $query.= " username = ". $username. "' AND "; $query.= " password = ". $password. "'"; $res = pg_query($query); $res); } if (pg_num_rows( $res) == 1) { $row = pg_fetch_array( $id = $row[ id']; } else {$id = 0;} return $id;
Atak SQL Injection Atak (3) Obejście mechanizmów uwierzytelniających UŜytkownik: or 1 = 1-- Wynik: SELECT id FROM users WHERE username = " OR 1 = 1 Zalogowanie na konto pierwszego uŝytkownika w BD
Pokaz
Pytania
Dziękuję