Bezpieczeństwo danych
Wprowadzenie do systemów baz danych
Wymagania bezpieczeństwa danych
Zachowanie tajemnicy służbowej, handlowej,
bankowej, wojskowej, państwowej
Zabezpieczenie danych przed nieuprawnionymi
zmianami – fałszowanie danych
Ochrona danych osobowych – ustawa o ochronie
danych osobowych z dnia 29 sierpnia 1997;
Dziennik ustaw z dnia 29 października 1997
Ochrona, przed utratą, danych, wymaganych przez
Urząd skarbowy, ZUS itp.
Zagrożenia
Nieuprawnione odczytanie (skopiowanie) danych
Nieuprawniona ingerencja w treść danych
Nieuprawnione uzyskanie dostępu do funkcji
administratora
Utrata danych w wyniku celowej wrogiej działalności
lub awarii sprzętu
Uwierzytelnianie i autoryzacja
Uwierzytelnianie to proces weryfikacji
tożsamości użytkownika
Autoryzacja to weryfikacja uprawnień
uwierzytelnionego użytkownika
Administrator bazy danych
Po zainstalowaniu bazy danych tworzone jest konto
administratora bazy danych
MS SQLServer – sa (ang. system administrator)
ORACLE – SYS, SYSTEM
PostgreSQL – postgres
MySQL - root
Administrator bazy danych ma wszystkie uprawnienia i może
Tworzyć konta użytkowników i grup
Nadawać uprawnienia użytkownikom i grupom
użytkowników
Nadawać i odbierać komputerom prawo do połączenia z
bazą danych
Konto administratora jest zabezpieczone nazwą i hasłem
Tworzenie kont użytkowników i grup (ról)
W języku SQL92 nie ma poleceń tworzenia i usuwania kont
Konta użytkowników i grup są tworzone przez odpowiednie
programy narzędziowe
W MS SQL Server do tworzenia kont użytkowników służy
funkcja systemowa sp_addlogin
W MS SQL Server użytkownicy systemu operacyjnego Windows
stają się użytkownikami serwera SQL
Niektóre SZBD udostępniają rozszerzenia języka SQL
umożliwiające tworzenie kont użytkowników i grup – między
innymi PostgreSQL i ORACLE
Tworzenie konta użytkownika
W PostgreSQL istnieje instrukcja (rozszerzająca
język SQL) umożliwiająca tworzenie kont
użytkowników
CREATE USER nazwa_użytkownika
[WITH PASSWORD hasło]
[CREATEDB | NOCREATEDB]
[CREATEUSER | NOCREATEUSER]
[IN GROUP nazwa_grupy [,...]]
[VALID UNTIL ’abstime’]
Zasady nadawania uprawnień
Użytkownik może nadać innemu użytkownikowi tylko
takie uprawnienia jakie sam posiada (nigdy nie
większe) – tak jak w prawie rzymskim
Właścicielem obiektu jest użytkownik, który go
stworzył i ma do niego wszystkie uprawnienia
Użytkownik, który utworzył nową bazę danych staje
się jej administratorem
Nadawanie uprawnień
GRANT uprawnienie [,...] ON nazwa_obiektu
TO {PUBLIC | GROUP nazwa_grupy | nazwa użytkownika}
[WITH GRANT OPTION]
Uprawnienia: SELECT, INSERT, UPDATE, DELETE
ALL PRIVILLIGES (SQL92), ALL (PostgreSQL)
REFERENCES (SQL92)*
Przykład
GRANT SELECT ON studenci TO student
W SQL92 można nadawać uprawnienia na poziomie kolumn
W PostgreSQL nie można nadawać uprawnień na poziomie
kolumn
* Dostęp do referencji pozwala na zdobycie informacji o wartościach
w tabeli nadrzędnej
Odbieranie uprawnień
REVOKE uprawnienie [,...] ON nazwa_obiektu
FROM {PUBLIC | GROUP nazwa_grupy | nazwa_użytkownika}
Przykład
REVOKE ALL FROM pracownik
REVOKE SELECT ON studenci TO student
Konfiguracja połączeń z serwerem
Administrator może skonfigurować połączenie
każdego komputera z serwerem podając
Użytkowników, którzy mogą łączyć się z danego
komputera
Sposób uwierzytelniania
Bazy danych dostępne dla każdego z użytkowników
Rodzaj łączności jawna czy szyfrowana
Algorytm szyfrowania dla łączności szyfrowanej
Bezpieczeństwo połączenia
Metody uwierzytelniania (PostgreSQL)
Tylko nazwa użytkownika (trust)
Nazwa użytkownika plus niezaszyfrowane hasło (password)
Szyfrowanie hasła metodą MD5
Uwierzytelnianie zgodne z algorytmem Kerberos (4 lub 5)
Metody szyfrowania łączności
SSL – Secure Socket Layer
SSH – Secure Shell – wymaga uwierzytelnienia w systemie
operacyjnym serwera
Zabezpieczenia przed utratą danych
Replikacja
Replika danych stanowi kopię całości lub jakiejś części
danych przechowywanych w innej części bazy danych,
zwykle na innym serwerze rozproszonej bazy danych
Archiwizacja
Tworzenie kopii zapasowych bazy danych
Data Transformation Services
Data Transformation Services (DTS) jest częścią MS SQL
Server i MSDE
W wersji MS SQL Server 2005 DTS zostało zastąpione przez
Integration Services
DTS umożliwia
Przesłanie danych z jednej bazy danych do innej (wykonanie
repliki wszystkich lub wybranych tabel)
Zaplanowanie harmonogramu synchronizacji danych w
wybranych bazach danych
DTS obsługuje większość baz danych
Archiwizacja
W skład SZBD wchodzą zwykle narzędzia do archiwizacji i
odzyskiwania danych na podstawie kopii zapasowych
Bazę danych archiwizuje się w postaci pliku, na podstawie
którego można ją łatwo odtworzyć
W PostgreSQL do archiwizacji służy program pg_dump, a do
odtwarzania danych pg_restore
Możliwe jest także archiwizowanie danych jako pliku bazy
danych np. MS Access – plik taki jest łatwy do odczytania zanim
baza danych zostanie odtworzona
Defragmentacja (kompaktowanie)
Kasowane wiersze nie są usuwane z plików zawierających
dane, ale są oznaczane jako skasowane
Z czasem w bazie danych gromadzą się zdezaktualizowane
wiersze, które zajmują miejsce, ale nie można z nich korzystać
Zdezaktualizowane wiersze spowalniają pracę bazy danych
Defragmentacja służy do odzyskanie miejsca zajmowanego
przez zdezaktualizowane dane i przyspieszenia pracy bazy
danych
W PostgreSQL do defragmentacji bazy danych służy polecenie
VACUUM
Ustawienie strony kodowej
Tworząc bazę danych należy określić stronę kodową
Dla Polski
ISO 8859-2 (LATIN2), albo
UNICODE (UTF-8), albo
WIN1250
PostrgeSQL: Jeśli aplikacja klienta używa innej strony kodowej
niż serwer, należy ustawić stronę kodową klienta poleceniem:
SET CLIENT ENCODING TO ’nazwa_strony_kodowej’
Np.: SET CLIENT ENCODING TO ’WIN1250’
Ustawienie strefy czasowej klienta
SET TIME ZONE [‘strefa_czasowa’|LOCAL|DEFAULT]
Przykłady:
SET TIME ZONE ’UTC’
SET TIME ZONE ’MET’ – (Middle Europe Time)
SET TIME ZONE ’ +01:00’
LOCAL, DEFAULT – systemowa strefa czasowa