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