11. Model bezpieczeństwa SQL.txt

(43 KB) Pobierz
#241
Rozdział 11.
Model bezpieczeństwa SQL

SQL używa warstwowego modelu bezpieczeństwa, który udostępnia administratorom odpowiednio zróżnicowane poziomy kontroli dostępu do zasobów bazy danych. Na model bezpieczeństwa SQL składajš się przywileje (ang. privilages), użytkownicy (ang. users) i zasoby (ang. resources). Użytkownikom nadawane sš przywileje pozwalajšce im wykonywać szereg różnych zadań na zasobach. Przykładowo, użytkownikowi może zostać nadane prawo do operacji SELECT na danej tabeli, ale bez możliwoci wykonywania poleceń typu UPDATE, DELETE lub INSERT.
Sprawowanie kontroli nad dostępem do bazy danych wspomagajš dwa polecenia: GRANT i REVOKE. Wyrażenie GRANT nadaje przywileje użytkownikom, natomiast REVOKE odbiera je. Zanim zajmiemy się nadawaniem przywilejów, omówimy zagadnienie użytkowników oraz sposób ich tworzenia.

Bezpieczeństwo baz danych

Bezpieczeństwo informacji jest elementem kluczowym w dowolnym rodowisku wykorzystywanym przez wielu użytkowników jednoczenie. Gdy tylko istnieje potencjalna możliwoć uzyskania dostępu do danych przez niepowołane osoby, należy podjšć wszelkie kroki, aby zapobiec takiej sytuacji. Żadna firma nie zostawia na biurkach poufnych raportów finansowych, kiedy jej pracownicy opuszczajš miejsce pracy. Podobnie niezbędne jest zabezpieczenie poufnych informacji w przypadku, gdy sš one przechowywane elektronicznie.
Wemy pod uwagę prawa dostępu do plików. Większoć systemów operacyjnych daje użytkownikom możliwoć kontrolowania praw dostępu do plików. Dzięki temu inni użytkownicy nie sš w stanie zobaczyć lub zmodyfikować oryginalnych plików, o ile ich właciciel nie zezwoli na takš operację. W podobny sposób kontrolowany jest dostęp do obiektów relacyjnej bazy danych, dajšcy jedynie wybranym użytkownikom prawo do
#242
przeglšdania lub modyfikowania informacji zapisanych w bazie. Mówišc najogólniej, zarzšdzanie dostępem do obiektów bazy danych polega na nadawaniu identyfikatorów użytkownikom bazy i ograniczaniu ich praw dostępu w oparciu o tenże włanie identyfikator.
Produkty bazodanowe różniš się znacznie pod względem implementacji modelu użytkowników. Wiele z nich posiada swój własny wbudowany system zarzšdzania użytkownikami. Użytkownicy sš tworzeni specjalnie na potrzeby bazy danych i nie majš nic wspólnego z warstwš systemu operacyjnego, w której rezyduje baza danych. Podejcie takie stosuje większoć popularnych baz danych, w tym Oracle, Sybase i Microsoft SQL Server. Innym rozwišzaniem jest współdzielenie przez bazę danych informacji o użytkowniku z samym systemem operacyjnym.
Bez względu na rzeczywiste rozwišzanie modelu użytkowników, należy zawsze bardzo rozważnie zarzšdzać modelem bezpieczeństwa bazy danych. Tylko takie podejcie gwarantuje zabezpieczenie ważnych informacji przed nieautoryzowanymi użytkownikami.

Konto administratora bazy danych

W chwili tworzenia bazy danych generowane jest jedno konto użytkownika - administratora tej bazy danych. Jeżeli aplikacja bazy danych działa w trybie jednego użytkownika, jest to jedyne konto, jakie może istnieć. Administrator bazy danych, okrelany na ogół skrótem DBA (ang. DataBase Administrator), posiada prawo do wykonywania wszelkiego rodzaju operacji na bazie danych. Może również tworzyć innych użytkowników i nadawać im przywileje DBA dla tej konkretnej bazy danych.
Użytkownik DBA jest ostatecznym włacicielem wszystkich obiektów bazy danych. Niezależnie od tego, do kogo należy dany obiekt, DBA może dodawać, zmieniać, usuwać rekordy lub nawet całe tabele. Ze względu na ogromne możliwoci konta DBA w odniesieniu do bazy danych, należy korzystać z niego tylko w sytuacjach, kiedy jest to absolutnie niezbędne.

Na ogół praktykuje się bezpieczne rozwišzanie polegajšce na utworzeniu dodatkowych użytkowników dla większoci zadań wykonywanych na bazie danych i korzystanie z konta DBA wyłšcznie, kiedy jest to konieczne do zadań administracyjnych. Większoć baz danych rozróżnia indywidualne prawa posiadane przez konto DBA i pozwala na przypisywanie ich użytkownikom w celu umożliwienia im wykonywania pewnych zadań przypisanych do DBA. Rozwišzanie takie pomaga uniknšć fatalnych w skutkach pomyłek, które łatwiej popełnić, kiedy użytkownik posiada prawo do modyfikowania lub usuwania dowolnych częci bazy danych.
Jeżeli więcej niż jedna osoba wymaga przywilejów administratora, wskazane jest utworzenie konta o uprawnieniach DBA dla każdego z nich. W ten sposób każdy użytkownik DBA będzie się logował poprzez swój unikalny identyfikator, co umożliwi ledzenie jego aktywnoci (rejestrowanej w dziennikach bazy danych).
#243
Właciciele bazy danych

W dalszej częci tego rozdziału wyjaniona zostanie hierarchia obiektów w typowej relacyjnej bazie danych. Na szczycie takiej hierarchii znajduje się baza główna (ang. master database), której włacicielem jest użytkownik DBA. Poniżej występujš indywidualne bazy danych będšce własnociš różnych użytkowników. Właciciel bazy danych (DBO - DataBase Owner) posiada specjalne prawa z niš zwišzane. Niektóre z tych praw mogš być przyznawane innym użytkownikom.
Przykładowo, po utworzeniu bazy danych jedynie jej właciciel ma prawo do tworzenia i usuwania obiektów w jej wnętrzu. Właciciel bazy może przyznać te prawa również innym użytkownikom lub zachować je wyłšcznie dla siebie.

Tworzenie użytkowników bazy danych

Model użytkownika bazy danych jest cile zwišzany z konkretnym produktem. Niektóre bazy danych oferujš wysokiej jakoci modele, uwzględniajšce mechanizmy nadawania przywilejów bazujšcych na rolach. Inne ograniczajš się jedynie do najprostszej funkcjonalnoci rodowiska wieloużytkownikowego lub w ogóle nie zapewniajš takich możliwoci.
Niniejszy rozdział powięcony jest bazom implementujšcym standardowy model bezpieczeństwa SQL. Niektóre bazy danych umożliwiajš administratorom dodawanie i usuwanie kont użytkowników przy użyciu interfejsu graficznego, zamiast zwykłych wyrażeń języka SQL. Niestety, tego typu interfejsy administracyjne sš specyficzne dla produktu, w którego skład wchodzš. Aby móc skorzystać z informacji zawartych w tym rozdziale, niezbędne jest posiadanie bazy danych umożliwiajšcej administrowanie użytkownikami przy użyciu języka SQL.
Użytkownicy tworzeni sš za pomocš wyrażenia CREATE USER. W najprostszej formie wyrażenie to wywoływane jest z pojedynczym argumentem będšcym nazwš użytkownika:

CREATE USER nazwa_uzytkownika

User create.

Na ogół użytkownikom przypisywane sš hasła, które majš za zadanie zapobiegać próbom nieautoryzowanego dostępu do danych. Niektóre bazy danych wymagajš obowišzkowo, aby nowoutworzonemu użytkownikowi nadane zostało hasło. Sposób nadawania haseł jest cechš specyficznš każdej z baz danych. W przypadku systemów Oracle do okrelenia hasła dla nowego użytkownika stosowane sš słowa kluczowe IDENTIFY BY:

CREATE USER nazwa_uzytkownika IDENTIFY BY hasło

User created.
#244
Szczegółowy opis składni służšcej do tworzenia użytkowników oraz wszelkie opcje bezpieczeństwa jej towarzyszšce znaleć można w dokumentacji bazy danych. Większoć baz danych oferuje szereg opcji, które mogš zostać ustawione w chwili tworzenia użytkownika. Przykładowo można wskazać, jakie elementy bazy danych tworzone przez użytkownika będš faktycznie zapisywane. Niektóre typy baz danych pozwalajš na okrelenie rozmiaru pamięci, jaki przysługuje użytkownikowi. Szczegółów na ten temat należy szukać w dokumentacji konkretnego produktu.
===================
Rada
W systemie Oracle można przełšczyć się na nowego użytkownika przy pomocy wyrażenia CONNECT. Wyrażenie to kończy bieżšcš sesję i tworzy nowš dla użytkownika podanego jako argument. Na przykład, jeli jestemy zalogowani jako użytkownik system i utworzymy nowe konto o nazwie użytkownik, możemy przełšczyć się na nie używajšc następujšcego polecenia:

CONNECT użytkownik
=====================

Modyfikowanie użytkowników

Użytkownicy, tak jak dowolne inne elementy bazy danych tworzone przy użyciu wyrażenia CREATE, mogš być modyfikowani wyrażeniem ALTER. Polecenie ALTER USER jest w stanie zmienić wszelkie atrybuty użytkownika, które ustawiane sš w wyrażeniu CREATE USER. Na przykład w bazie Oracle wyrażenie ALTER USER może posłużyć do zmiany hasła użytkownika:

ALTER USER użytkownik IDENTIFY BY hasło

User altered.


Usuwanie użytkowników

Do usuwania użytkowników z bazy danych służy polecenie DROP USER. Na ogół, polecenie to może być wykonywane jedynie przez użytkowników typu DBA. Inni użytkownicy mogš również usuwać użytkowników po nadaniu im odpowiedniego uprawnienia przez DBA. Użytkownik usuwany jest z bazy danych następujšcym poleceniem SQL:

DROP USER użytkownik


Elementy bazy danych

Ze względów bezpieczeństwa bazy danych istnieje pewna hierarchia elementów, z których każdy posiada własne ustawienia. Elementy te rozcišgajš się od najwyższego poziomu bazy danych do najniższego poziomu kolumny. Prawdopodobnie najlepiej można to sobie wyobrazić jako grupę zagnieżdżajšcych się okręgów - rysunek 11.1.
#245
{{Główna baza danych[[Baza danych (Tabela {Kolumna} {Widok [Kolumna widoku]})]]}}
W {{..}} mieci się [[..]] w którym mieci się {1...} i (2...},a w 2. mieci się [..]

Rysunek 11.1.

Elementy w modelu bezpieczeństwa SQL.

Przeledmy ten model poruszajšc się od okręgu najbardziej zewnętrznego w głšb. W większoci przypadków element obejmujšcy sobš pozostałe jest głównš bazš danych. Główna baza danych jest własnociš menadżera systemu (często nazywanego sš lub system) i przechowuje wszystkie informacje zwišzane z bazš danych znajdujšcš się w jej wnętrzu, łšcznie z tabelami zawierajšcymi dane dotyczšce użytkowników oraz definicje innych tabel i elementów przechowywanych w bazie danych.

Bazy danych

Poniżej bazy głównej znajdujš się różne bazy indywidualne. Bazy danych sš często przypisywane...
Zgłoś jeśli naruszono regulamin