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
•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’]
[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
•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]
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
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
•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
•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
•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
•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
•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
•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
•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:
•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:
•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