Wykład 12

Problemy ochrony danych w bazie danych

 

W wykładzie są przedstawione pojęcia leżące u podstaw kontroli dostępu i ochrony danych w SZBD.
 


12. 1 Ochrona danych w bazie danych

Podstawowe aspekty związane z ochroną danych w bazie danych są to:

Ochrona danych w bazie danych jest realizowana przez politykę ochrony danych oraz przez mechanizmy ochrony danych.

  1. Polityka ochrony danych (ang. security policy) polega na określeniu jaka część danych ma być chroniona oraz którzy użytkownicy mają mieć dostęp do których części chronionych danych.

  2. Mechanizmy ochrony danych (ang. security mechanisms) są to mechanizmy określone zarówno w systemie operacyjnym, jak i w SZBD, jak i na zewnątrz komputera jak ochrona dostępu do budynków, gdzie znajduje się komputer z bazą danych. Podstawowe mechanizmy ochrony danych stosowane w SZBD to następujące metody kontroli dostępu do danych w bazie danych:

    1. Uznaniowa kontrola dostępu (ang. Discretionary access control).

    2. Obowiązkowa kontrola dostępu (ang. Mandatory access control).

    3. Statystyczne bazy danych - dostęp do danych statystycznych przez zapytania sumaryczne.

    4. Sporządzanie i analiza audytu operacji wykonywanych przez użytkownika na bazie danych.
       


12.2. Uznaniowa kontrola dostępu

Jest to podstawowy mechanizm ochrony danych w bazie danych, opisany już na wykładzie 3. Jest oparty na uprawnieniach do wykonywania operacji na obiektach bazy danych. Właściciel obiektu ma pełne prawa do obiektu. Może część tych praw przekazać innym, wybranym przez siebie użytkownikom.

GRANT uprawnienie,...
ON nazwa_obiektu
TO użytkownik,...
[WITH GRANT OPTION]

Osoba przyznająca uprawnienie może to uprawnienie w przyszłości odwołać.

REVOKE uprawnienie,...
ON nazwa_obiektu
FROM użytkownik,...

Przy stosowaniu REVOKE gdy uprawnienie zostanie odjęte od użytkownika X, zostaje również odjęte od wszystkich użytkowników, którzy dostali je wyłącznie od X.

Właściciel tabel może określić zakres dostępu do swoich danych w bazie danych poprzez perspektywy.

Role

Zarządzanie uprawnieniami i użytkownikami jest wspomagane przez role, które odzwierciedlają sposób funkcjonowania organizacji. W trakcie działania aplikacji baz danych role można dynamicznie włączać i wyłączać, np.:

   SET ROLE operator;

Użytkownik aplikacji ma na stałe przyznane tylko uprawnienie CONNECT upoważniające do zalogowania się do bazy danych.
 


12.3 Obowiązkowa kontrola dostępu

Obowiązkowa kontrola dostępu jest mechanizmem stosowanym dodatkowo oprócz uznaniowej kontroli dostępu. Jej celem jest ochrona bazy danych przed nieuprawnionymi zmianami jakie mogą być dokonane poza bazą danych - w programach aplikacyjnych (w rodzaju kodu wprowadzającego konia trojańskiego bez wiedzy użytkownika aplikacji).

Obowiązkowa kontrola dostępu jest oparta na klasach poufności (ang. security class) przypisanych do poszczególnych obiektów w bazie danych i do użytkowników (lub programów). Przez porównanie klasy obiektu i klasy użytkownika, system podejmuje decyzję czy użytkownik może wykonać określoną operację na obiekcie. Przede wszystkim, zapobiega to aby informacja nie płynęła z wyższego poziomu poufności do niższego.

Obowiązkowa kontrola dostępu zapobiega użyciu koni trojańskich do dostępu do chronionych danych. Rozważmy następującą sytuację:

  1. Haker tworzy tabelę MojaTabela i daje do  niej uprawnienia użytkownikowi, podczas gdy użytkownik nie jest tego świadomy.

  2. Haker modyfikuje kod programu klienckiego (który znajduje się poza kontrolą SZBD) wstawiając zapisywanie danych z tabeli użytkownika PoufneDane do tabeli MojaTabela.

  3. Przy każdym użyciu programu przez użytkownika poufne dane zostają przepisane do tabeli hakera  MojaTabela.

Model Bell-LaPadula

obejmuje:

Odczytywanie i zapis danych przebiegają zgodnie z następującymi regułami:

(1) Podmiot P może odczytać obiekt O tylko wtedy gdy class(P) >= class(O)

(2) Podmiot P może zapisać obiekt O gdy class(P) <= class(O)

Rozwiązanie problemu konia trojańskiego polega na zapewnieniu, aby informacje nie płynęły od wyższej klasy poufności do niższej.

1. Użytkownik ma klasę S, program użytkownika i tabela użytkownika PoufneDane mają klasę S.

2. Haker ma klasę C, tabela hakera, MojaTabela, ma tę samą klasę co haker, czyli C.

3. Zatem program użytkownika (mający klasę poufności S) nie może wykonać zapisu do tabeli hakera (mającej klasę poufności C) bo S>C.

Klasy poufności mogą być używane na różnych poziomach ziarnistości (granulacji) bazy danych, również na poziomie wierszy. W zależności od posiadanej klasy poufności użytkownik może widzieć inny zbiór wierszy przy wykonywaniu instrukcji SELECT.
 


12.4 Statystyczna baza danych

Statystyczna baza danych zawiera informacje o pojedynczych obiektach ale pozwala tylko na wykonywanie zapytań sumarycznych przy założeniu, że jedno zapytanie dotyczy dużego zbioru wierszy. Nie zabezpiecza to jednak w ogólności przed sięganiem przy użyciu zapytań sumarycznych do informacji o pojedynczych obiektach. Potrzebne są dodatkowe zabezpieczenia uniemożliwiające tego typu wnioskowania - np. ograniczenie liczby zapytań, jakie może skierować do bazy danych jeden użytkownik.
 


12.5  Inne metody ochrony danych

Warto wspomnieć jeszcze o innego rodzaju metodach, które wspomagają ochronę danych w bazie danych.

  1. Macierz RAID (ang. Redundant Array of Independent Disks) - redundantny zapis danych w zbiorze dysków; gdy jeden dysk ulega awarii, potrzebne dane są pobierane z drugiego.

  2. Szyfrowanie - dane poufne mogą być przechowywane w postaci zaszyfrowanej.

  3. Stawianie serwera bazy danych za firewallem lub za serwerem proxy.

  4. Certyfikaty cyfrowe dołączane do przesyłanych danych - stwierdzające autentyczność nadawcy danych i/lub umożliwiające odbiorcy zaszyfrowanie swojej zwrotnej odpowiedzi.

  5. Protokół szyfrowania SSL - tworzy bezpieczne połączenie między klientem i serwerem do przesyłania poufnych danych takich jak numer karty kredytowej.
     


12.6 Podsumowanie

W wykładzie tym dokonaliśmy przeglądu metod ochrony danych w bazie danych zwracając uwagę na dwa podstawowe: uznaniową kontrolę danych i obowiązkową kontrolę danych.
 


12.7 Słownik

uznaniowa kontrola dostępu jest oparta na przyznawaniu uprawnień do wykonywania operacji na obiektach bazy danych. Właściciel obiektu ma pełne prawa do obiektu. Może część swoich praw przekazać innym, wybranym przez siebie użytkownikom.

obowiązkowa kontrola dostepu jest oparta na klasach poufności przypisanych do poszczególnych obiektów w bazie danych i do użytkowników (lub programów). Przez porównanie klasy obiektu i klasy użytkownika, system podejmuje decyzję czy użytkownik może wykonać określoną operację na obiekcie.

statystyczna baza danych pozwala tylko na wykonywanie zapytań sumarycznych przy założeniu, że jedno zapytanie dotyczy dużego zbioru wierszy.
 


12.8 Sprawdzenie wiedzy

  1. Co oznacza termin poufność w kontekście ochrony danych w bazie danych:

    użytkownik nie może modyfikować danych, jeśli nie ma do tego odpowiednich uprawnień,
    użytkownik nie widzi danych, których nie ma prawa oglądać,
    użytkownik ma dostęp do wszystkich danych i może je modyfikować, o ile ma przyznane do tego uprawnienia,
    użytkownik może operować na bazie danych bez kontroli SZBD.

  2. Co oznacza termin spójność (integralność) w kontekście ochrony danych w bazie danych:

    użytkownik nie może modyfikować danych, jeśli nie ma do tego odpowiednich uprawnień,
    użytkownik nie widzi danych, których nie ma prawa oglądać,
    użytkownik ma dostęp do wszystkich danych i może je modyfikować, o ile ma przyznane do tego uprawnienia,
    użytkownik może operować na bazie danych bez kontroli SZBD.

  3. Co oznacza termin dostępność w kontekście ochrony danych w bazie danych:

    użytkownik nie może modyfikować danych, jeśli nie ma do tego odpowiednich uprawnień,
    użytkownik nie widzi danych, których nie ma prawa oglądać,
    użytkownik ma dostęp do wszystkich danych i może je modyfikować, o ile ma przyznane do tego uprawnienia,
    użytkownik może operować na bazie danych bez kontroli SZBD.

  4. Na czym polega obowiązkowa kontrola dostępu w bazie danych:

    logowanie się do bazy danych tylko z podaniem identyfikatora użytkownika i hasła,
    możliwość wykonania instrukcji SQL zgodnie z przyznanymi użytkownikowi uprawnieniami,
    możliwość zapisu do obiektu w bazie danych tylko wtedy gdy klasa poufności użytkownika jest nie większa niż klasa poufności obiektu,
    możliwość odczytu obiekt w bazie danych tylko wtedy gdy klasa poufności użytkownika jest nie mniejsza niż klasa poufności obiektu,
    możliwość zapisu do obiektu w bazie danych tylko wtedy gdy klasa poufności użytkownika jest nie mniejsza niż klasa poufności obiektu.

  5. Jakie warunki powinno spełniać kierowanie zapytań do statystycznej bazy danych:

    jedno zapytanie powinno dotyczyć dużego zbioru wierszy,
    po słowie kluczowym SELECT w zapytaniu mogą być tylko wyrażenia zawierające funkcje sumaryczne,
    powinno być określone ograniczenie na liczbę zapytań kierowanych przez jednego użytkownika,
    użytkownik powinien mieć specjalne uprawnienie do kierowania zapytań do statystycznej bazy danych.

     

 


12.9 Zadania

1. Zaproponuj strukturę danych do reprezentowania uprawnień użytkowników do obiektów w bazie danych (ogranicz się do tabel i do instrukcji INSERT, DELETE, UPDATE i SELECT).

2. Korzystając z zaproponowanej w zadaniu 1 struktury danych podaj algorytmy przyznawania i odbierania uprawnień do obiektów w bazie danych.

3. Korzystając z zaproponowanej struktury danych podaj algorytm sprawdzania czy użytkownik może wykonać daną operację SQL (SELECT, INSERT, DELETE, UPDATE).
 



Strona przygotowana przez Lecha Banachowskiego, PJWSTK, 08/09/06 .