W wykładzie są przedstawione pojęcia leżące u podstaw kontroli
dostępu i ochrony danych w SZBD.
Podstawowe aspekty związane z ochroną danych w bazie danych są to:
Poufność (ang. secrecy) – użytkownik nie widzi danych, których nie ma prawa oglądać.
Spójność (ang. integrity) – użytkownik nie może modyfikować danych, jeśli nie ma do tego odpowiednich uprawnień.
Ochrona danych w bazie danych jest realizowana przez politykę ochrony danych oraz przez mechanizmy ochrony danych.
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.
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:
Uznaniowa kontrola dostępu (ang. Discretionary access control).
Obowiązkowa kontrola dostępu (ang. Mandatory access control).
Statystyczne bazy danych - dostęp do danych statystycznych przez zapytania sumaryczne.
Sporządzanie i analiza audytu operacji wykonywanych przez
użytkownika na bazie danych.
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.
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.
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ę:
Haker tworzy tabelę MojaTabela i daje do niej uprawnienia użytkownikowi, podczas gdy użytkownik nie jest tego świadomy.
Haker modyfikuje kod programu klienckiego (który znajduje się poza kontrolą SZBD) wstawiając zapisywanie danych z tabeli użytkownika PoufneDane do tabeli MojaTabela.
Przy każdym użyciu programu przez użytkownika poufne dane zostają przepisane do tabeli hakera MojaTabela.
Model Bell-LaPadula
obejmuje:
Obiekty np. tabele, perspektywy, wiersze.
Podmioty np. użytkownicy, programy użytkowników.
Klasy poufności
przypisywane podmiotom
class(P)
i obiektom class(O);
tworzą one liniowy porządek. Np.:
top secret - TS,
secret - S , confidential - C, unclassified
- U: TS > S> C > U
Każdemu obiektowi i każdemu podmiotowi zostaje przypisana klasa poufności.
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.
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.
Warto wspomnieć jeszcze o innego rodzaju metodach, które wspomagają ochronę danych w bazie danych.
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.
Szyfrowanie - dane poufne mogą być przechowywane w postaci zaszyfrowanej.
Stawianie serwera bazy danych za firewallem lub za serwerem proxy.
Certyfikaty cyfrowe dołączane do przesyłanych danych - stwierdzające autentyczność nadawcy danych i/lub umożliwiające odbiorcy zaszyfrowanie swojej zwrotnej odpowiedzi.
Protokół szyfrowania SSL - tworzy bezpieczne połączenie
między klientem i serwerem do przesyłania poufnych danych takich jak
numer karty kredytowej.
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.
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.
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 .