Bezpieczeństwo danych

W tym opracowaniu zajmę się ogólnymi wytycznymi i sposobami zabezpieczania danych w bazach 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)

Uprawnienia administratora w popularnych systemach bazodanowych
 
•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

•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

UWAGA.

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ć (może być to plik SQL ale lepiej archiwizować cały folder 'DATE')
•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 

Na tym kończy się wprowadzenie do zabezpieczania bd, dalsze informacje można szukać na tej stronie w opracowaniu o "Bezpieczeństwie BD"

Komentarze