Elastyczny system kontroli uprawnień użytkowników bazy danych
Elastyczny system kontroli uprawnień użytkowników bazy danych#
W niniejszym rozdziale przedstawiono mechanizm kontroli uprawnień użytkowników relacyjnej bazy danych, który umożliwia określanie praw dostępu z dokładnością do pojedynczych wartości przechowywanych w tabelach. Przy realizacji tego systemu wykorzystano między innymi wyzwalacze INSTEAD na perspektywach. System stanowi ciekawe zastosowanie tego rodzaju wyzwalaczy. Opisywany system kontroli uprawnień powstał w ramach Uniwersyteckiego Systemu Obsługi Studiów. Jest jednak od niego niezależny i może być zastosowany dla dowolnego schematu bazy danych.
Spis treści
- Elastyczny system kontroli uprawnień użytkowników bazy danych
- Wstęp
- Możliwe rozwiązania
- Kontrola w formularzach
- Tabele towarzyszące
- Perspektywy
- Rozwiązanie mieszane
- Analiza
- Realizacja
- Zasadnicze właściwości
- Kontrola uprawnień do tabel i perspektyw
- Kontrola uprawnień do sekwencji
- Kontrola uprawnień do pakietów
- Kontrola uprawnień systemowych
- Rola BAZOWA
- Podsumowanie
- Bibliografia
Wstęp#
Od tamtej chwili zbudowano już jeden zintegrowany interfejs dla wszystkich użytkowników. Ów interfejs napisany w Oracle*Forms odwoływał się do konkretnych nazw obiektów bazy danych. Uniknięcie konieczności poważnych zmian wymagało takiego opracowania systemu kontroli uprawnień, żeby istniejący interfejs użytkownika mógł odwoływać się do tych samych nazw obiektów. Osiągnięto to poprzez synonimy i perspektywy. Oznaczało to również, że system ten musiał być zbudowany za pomocą mechanizmów baz danych, a nie oprogramowania klienckiego. Będzie o tym jeszcze mowa w dalszej części pracy. Oczywiście system kontroli uprawnień należało zbudować w oparciu o mechanizmy SZBD Oracle, na którym zbudowano bazę danych USOS.
Zaprogramowanie systemu kontroli uprawnień przy takich założeniach nie było banalnym zadaniem. W rezultacie otrzymano bardzo elastyczne oprogramowanie umożliwiające definiowanie uprawnień z dokładnością do jednego wiersza i jednej kolumny. Przy budowie tego systemu intensywnie korzystano z możliwości, jakie daje nowoczesna relacyjna baza danych, tzn. z aktualizowalnych perspektyw z wyzwalaczami INSTEAD. Powstałe rozwiązanie jest bardzo interesującym zastosowaniem tego mechanizmu. Należy też zwrócić uwagę, że nie jest ono uzależnione od USOS i może być zastosowane z dowolnym schematem bazy danych.
Rozwiązanie przedstawione w tej pracy jest napisane dla SZBD Oracle. Niestety standard SQL [ISO1992] [DADA2000] nie obejmuje zagadnień takich jak wyzwalacze, więc nie można było opracować analogicznego przenośnego rozwiązania, które działałoby z dowolną bazą danych zgodną ze standardem SQL. Omawiany system kontroli uprawnień można jednak przy pewnej dozie wysiłku dostosować do każdego SZBD, który ma mechanizm perspektyw i wyzwalaczy INSTEAD OF.
Chociaż opisywany system powstał w wyniku niewłaściwego postępowania tzn. wstępnego pominięcia zagadnienia kontroli uprawnień, jednak wyniki tych prac pozwalają także na realizację scenariusza pozytywnego - programista aplikacyjny tworzy aplikację dla użytkownika, który może wszystko. Nie dba wcale o uprawnienia a już w żadnym przypadku nie uwzględnia ich w kodzie. Może tak postępować ponieważ wie, że przezroczysty system kontroli uprawnień "dostosuje" kod do rzeczywistych uprawnień danego użytkownika. Jest to o tyle istotne, że kontrola uprawnień dotyczy każdego elementu każdego komercyjnego oprogramowania aplikacyjnego. Powstaje w ten sposób wzorzec projektowy do powszechnego użycia.
Standard SQL [ISO1992] [DADA2000] obejmuje pewne mechanizmy do kontroli uprawnień użytkowników (role), jednak są one niewystarczające. Za pomocą poleceń GRANT można nadać prawa do całej tabeli albo perspektywy lub poszczególnych kolumn, ale nie wierszy. Można oczywiście powiedzieć, że rozwiązaniem są perspektywy (każdemu użytkownikowi dajemy perspektywę z danymi, do których ma on prawo) i na tym skończyć rozważania. USOS ma jednak setkę użytkowników i około dwie setki tabel, co daje 20.000 takich perspektyw. Zarządzanie takim zasobem perspektyw nie jest łatwe. Opisywany w niniejszej pracy system kontroli uprawnień użytkowników umożliwia wygodne tworzenie tych perspektyw i administrowanie nimi.
Szczegółowe informacje o opisywanym rozwiązaniu można znaleźć w [MAKA2002], a sam kod jest dostępny w dystrybucji systemy USOS w katalogu Role [USOS2002]. Pod tymże adresem URL można też znaleźć informacje o licencji.
Możliwe rozwiązania#
Najpierw należy utworzyć rolę z odpowiednimi uprawnieniami, a następnie nadać ją poszczególnym użytkownikom. To umożliwia wielokrotne wykorzystanie tej samej definicji. Uprawnienia użytkowników są definiowane poprzez warunki wierszowe (wyrażenia logiczne ograniczające zestaw wierszy) i listy udostępnionych kolumn.
Istnieje kilka możliwych sposobów implementacji. Ze względu na sposób kontroli uprawnień można je podzielić na dwie grupy:
- uprawnienia są sprawdzane przez formularze (raporty), które wyświetlają tylko te informacje, do których dany użytkownik ma uprawnienia; narzędzia te sprawdzają poziom uprawnień przy wykonywaniu operacji UPDATE, INSERT i DELETE;
- uprawnienia są sprawdzane po stronie bazy danych.
W dalszej części przedstawiono kilka możliwych sposobów implementacji, które spełniają podane wymagania.
Kontrola w formularzach#
- uprawnienia kolumnowe - blokują odpowiednie pola formularza przed modyfikacją, nie wyświetlają pól, których użytkownik nie ma prawa odczytać,
- uprawnienia wierszowe - dołączają odpowiednią klauzulę WHERE do bloków danych w formularzach (prawo wykonywania SELECT); wszystkie operacje modyfikacji są przysłonięte wyzwalaczami, które po sprawdzeniu, czy użytkownik ma do nich prawo, wykonują je lub też wyświetlają komunikat o braku uprawnień.
Rozwiązanie to ma niestety kilka poważnych wad:
- Istnieje możliwość obejścia zabezpieczenia przy użyciu innego interfejsu niż właściwe formularze.
- Powstaje problem z blokami formularzy, które są oparte na zapytaniach, a nie na tabeli. Złożenie klauzuli WHERE odpowiedniej dla bloku opartego na zapytaniu na podstawie warunków zdefiniowanych dla poszczególnych tabel może okazać się niemożliwe.
- Powstaje podejrzenie, że takie rozwiązanie wymagałoby dużych zmian w każdym z formularzy. Ze względu na dużą różnorodność i stopień komplikacji wielu formularzy, może okazać się, że nie uda się napisać na tyle ogólnych mechanizmów, które kontrolowałyby uprawnienia we wszystkich formularzach bez specjalnego ich przystosowywania.
Tabele towarzyszące#
Do wad tego rozwiązania należy:
- Podejrzenie o niewystarczającą wydajność (tabele towarzyszące mogą mieć dużo wierszy, co spowolni wykonywanie wszelkich operacji).
- Brak sposobu, aby danemu użytkownikowi nie dawać prawa SELECT do wybranej kolumny- to mógłby robić tylko formularz, np. ukrywając dany element bloku, jednak z innego interfejsu użytkownik zobaczy wszystkie kolumny. Definiując perspektywę zależną od USER możemy tylko kontrolować wiersze, a nie kolumny.
- Przy każdej modyfikacji właściwej tabeli należałoby przetwarzać również pomocniczą tabelę.
- Powyższa wada uwidacznia się jeszcze bardziej, kiedy w warunku wierszowym dla tabeli występuje podzapytanie. Wtedy przy zmianie zawartości tabel z tego podzapytania należałoby również przeliczać zawartość tabel towarzyszących. Potrzebne są dodatkowe struktury, aby przechowywać informację o tym, które tabele towarzyszące należy aktualizować po modyfikacji zawartości określonych tabel.
- Przy modyfikacji dowolnej tabeli nie wiadomo, w których warunkach wierszowych dla tabeli występuje ona w podzapytaniu, więc nie wiadomo, które pomocnicze tabele należy przeliczyć.
Zaletami tego rozwiązania są:
- Wymaga ono minimalnych zmian w formularzach.
- Cały system uprawnień zdefiniowano w bazie, co uniezależnia go od interfejsu, tzn. niezależnie od tego czy użytkownik używa właściwych formularzy, czy np. SQL*PLUS, nie uda mu się wykonać operacji, do których nie ma uprawnień.
- Warunki wierszowe jakie ograniczają uprawnienia użytkownika, są uwzględnione podczas inicjowania tabel towarzyszących. Użytkownik odwołując się do tabeli korzysta z tych tabel, co może okazać się szybsze niż metoda, w której dopiero w momencie odwołania użytkownika oblicza się poszczególne warunki.
Perspektywy#
Każdy użytkownik ma uprawnienia SELECT, INSERT, UPDATE, DELETE do perspektyw, które są w rolach, do których należy. Każdy użytkownik ma swoje synonimy, które odnoszą się do odpowiednich perspektyw, a nazwy synonimów są takie same jak nazwy tabel, na jakich oparte są perspektywy.
Zalety:
- Cały system uprawnień jest zdefiniowany w bazie danych, co uniezależnia go od interfejsu, z którego korzysta użytkownik.
- Łatwo uwzględnić brak prawa odczytu wybranej kolumny (w przeciwieństwie do p. 2.2) - perspektywa zawsze wstawia NULL w takiej kolumnie.
- Rozwiązanie wymaga minimalnych zmian w formularzach.
Wady:
- Przy bezpośrednim zastosowaniu tego pomysłu powstanie dużo perspektyw.
Rozwiązanie mieszane#
Zalety:
- Optymalny, jeśli chodzi o szybkość wykonywania - dla operacji SELECT pomysł z p. 2.2 może być szybszy, gdy dla tabeli są określone złożone warunki wierszowe.
Wady:
- W znacznym stopniu komplikuje cały mechanizm, w porównaniu z rozwiązaniami opartymi tylko na p. 2.2 i 2.3, powoduje też, że cały system nie jest jednorodny.
Analiza#
Wada pomysłu z p. 2.2 polegająca na konieczności przeliczania tabel pomocniczych przy każdej zmianie w zasadniczej tabeli dyskwalifikuje ten pomysł w porównaniu z pomysłem z p. 2.3. Mamy tu dodatkowy narzut podczas operacji edycyjnych na tabelach, natomiast operacja czytania z tabel może okazać się szybsza tylko w niektórych przypadkach.
Biorąc pod uwagę powyższe porównanie, a także wady i zalety poszczególnych pomysłów, wydaje się, że rozwiązanie z p. 2.3 jest najodpowiedniejsze. Przede wszystkim rozwiązanie to pozwoli zrealizować wymaganie, aby system kontroli uprawnień działał niezależnie od interfejsu.
Realizacja#
Zasadnicze właściwości#
- nadawać uprawnienia SELECT do poszczególnych kolumn tabeli, tzn. takiego, które powoduje, że wykonanie operacji SELECT przekaże wartości tylko w kolumnach, do których użytkownik został uprawniony, w pozostałych kolumnach użytkownik otrzyma wartość NULL,
- nadawać uprawnień z dokładnością do wierszy. Dotyczy to wszystkich operacji: INSERT, UPDATE, DELTE, SELECT. Poszczególne wiersze, do których dana rola ma mieć uprawnienia, specyfikuje się poprzez warunki wierszowe.
W opisywanym systemie kontroli uprawnień poszczególne obiekty służące do kontroli uprawnień (perspektywy i wyzwalacze INSTEAD) są tworzone na specjalnym koncie Administratora ról, który ma uprawnienia do wszystkich obiektów należących do Właściciela tabel z prawem ich dalszego przekazywania. Na kontach użytkowników instaluje się jedynie synonimy (głównie do perspektyw Administratora ról).
Dla Administratora ról opracowano graficzny interfejs użytkownika, za którego pomocą definiuje on uprawnienia poszczególnych ról i nadaje te role użytkownikom. Wszystkie niezbędne obiekty (perspektywy, wyzwalacze i synonimy) są wówczas automatycznie tworzone na koncie Administratora ról i na kontach użytkowników.
Użytkownikowi można nadać więcej niż jedną rolę, jednak w jednej chwili może on korzystać z praw tylko jednej roli. Tę rolę nazywamy domyślną. Synonimy na koncie użytkownika wskazują właśnie jego rolę domyślną.
Kontrola uprawnień do tabel i perspektyw#
Podstawową ideą kontroli uprawnień przy dostępie do tabel i perspektyw Właściciela tabel jest pomysł odwoływania się do nich poprzez dodatkowe, pośrednie perspektywy. Te perspektywy są instalowane na koncie Administratora ról. Za kontrolę uprawnień jest odpowiedzialna odpowiednia konstrukcja perspektywy, konstrukcja wyzwalaczy INSTEAD utworzonych na perspektywie oraz odpowiednie przekazanie roli uprawnień do perspektywy, a także odpowiednie zdefiniowanie użytkownikowi synonimów. Perspektywy takie są tworzone dla każdej roli i tabeli (jeżeli rola ta ma zdefiniowane jakiekolwiek uprawnienia do tej tabeli). Użytkownik ma synonimy do wszystkich perspektyw swej roli, dzięki czemu odwołując się do nazwy tabeli Właściciela tabel odwołuje się przez odpowiednią perspektywę.
Jeżeli danej roli nadano uprawnienie SELECT do całej tabeli, to jest tworzona perspektywa wyświetlająca wszystkie kolumny i roli nadaje się uprawnienie SELECT do tej perspektywy. Jeżeli danej roli nadano uprawnienie SELECT tylko do niektórych, wybranych kolumn tabeli, to jest utworzona perspektywa wyświetlająca tylko te wybrane kolumny, roli nadaje się uprawnienie SELECT do tej perspektywy (nie można nadać roli uprawnienia SELECT tylko do niektórych kolumn, dlatego za kontrolę uprawnień odpowiedzialna jest w tym przypadku konstrukcja perspektywy).
Jeżeli danej roli nadano uprawnienie INSERT, UPDATE lub DELETE do całej tabeli, to jest utworzona perspektywa (to, które kolumny są w niej widoczne, zależy tylko od uprawnienia SELECT; w szczególności, jeżeli do tej tabeli nie jest nadane uprawnienie SELECT, to perspektywa ma wartości NULL we wszystkich kolumnach), roli nadaje się odpowiednie uprawnienie (INSERT, UPDATE, DELETE) do tej perspektywy.'
Jeżeli danej roli nadano uprawnienie INSERT, UPDATE do niektórych kolumn tabeli, to roli nadaje się uprawnienie INSERT lub UPDATE tylko do tych kolumn perspektywy (wykorzystuje się tu mechanizmy Oracle, które pozwalają na nadawanie uprawnienia INSERT lub UPDATE tylko do niektórych kolumn).
Jeżeli uprawnienie SELECT jest ograniczone przez warunki wierszowe, to warunki te uwzględnione są w klauzuli WHERE perspektywy w ten sposób, że perspektywa wyświetla tylko te wiersze, które spełniają warunki wierszowe (za kontrolę uprawnienia odpowiedzialna jest konstrukcja perspektywy).
Na rysunku 1. przedstawiono model zależności między poszczególnymi tabelami i perspektywami Właściciela tabel, perspektywami Administratora ról oraz synonimami użytkownika.
USOS_PROD_TAB jest Właścicielem tabel, natomiast TAB_1, TAB_2, TAB_3, TAB_n (znajdujące się wewnątrz USOS_PROD_TAB) to tabele i perspektywy Właściciela tabel. ADMINROL jest Administratorem ról, natomiast P_1_1, P_1_2, P_1_n to perspektywy Administratora ról. UZYTKOWNIK to zwykły użytkownik, natomiast TAB_1, TAB_2, TAB_n (znajdujące się wewnątrz UZYTKOWNIK) to prywatne synonimy użytkownika. ROLA_1 jest rolą zdefiniowaną przez Administratora ról. Strzałki przerywane między tabelami i perspektywami Właściciela tabel i perspektywami Administratora ról pokazują, na których tabelach i perspektywach Właściciela tabel oparte są poszczególne perspektywy Administratora ról. Strzałki przerywane między perspektywami Administratora ról i synonimami użytkownika pokazują, do których perspektyw Administratora ról odnoszą się synonimy użytkownika. Strzałki ciągłe reprezentują nadanie uprawnień, uprawnienia do poszczególnych perspektyw Administratora ról nadane są roli ROLA_1, natomiast ROLA_1 nadana jest użytkownikowi UZYTKOWNIK. Strzałka przerywana pomiędzy rolą i użytkownikiem oznacza, że ta rola jest jego rolą domyślną.
W przedstawionej sytuacji roli ROLA_1 nadano pewne uprawnienia do tabel Właściciela tabel TAB_1, TAB_2 i TAB_n. Utworzone zostały odpowiednie perspektywy Administratora Ról P_1_1, P_1_2, P_1_n oparte na tych tabelach. Uprawnienia do perspektyw P_1_1, P_1_2, P_1_n nadano roli ROLA_1. Uprawnienia roli do poszczególnych tabel TAB_1, TAB_2, TAB_n są egzekwowane przez odpowiednią konstrukcję perspektyw P_1_1, P_1_2, P_1_n (i ewentualnie wyzwalaczy na tych perspektywach) oraz odpowiednie nadanie roli ROLA_1 uprawnień do tych perspektyw. W omawianej sytuacji użytkownikowi UZYTKOWNIK nadano rolę ROLA_1 i rola ta jest jego rolą domyślną (obrazują to dwie strzałki od ROLA_1 do UZYTKOWNIK). Ponieważ rola ROLA_1 jest rolą domyślną dla użytkownika UZYTKOWNIK, użytkownik ten ma zdefiniowane odpowiednie synonimy prywatne (TAB_1, TAB_2, TAB_n). Synonimy te odwołują się do perspektyw Administratora ról, ale mają nazwy takie same, jak nazwy tabel Właściciela tabel. Na przykład użytkownik ma synonim prywatny TAB_1 odnoszący się do perspektywy ADMINROL.P_1_1.
Należy zwrócić uwagę, że w roli ROLA_1 nie ma żadnego uprawnienia do tabeli TAB_3 Właściciela tabel, w związku z tym nie została utworzona odpowiednia perspektywa Administratora ról oraz nie istnieje odpowiedni synonim prywatny użytkownika.
Kontrola uprawnień do sekwencji#
Prawo SELECT do wszystkich sekwencji systemu USOS nadane jest roli BAZOWA (por. p. 3.6). Rolę BAZOWA nadaje się wszystkim użytkownikom. Aby każdy użytkownik mógł korzystać z sekwencji bez poprzedzania jej nazwy nazwą konta Właściciela tabel, dla wszystkich użytkowników tworzy się synonimy prywatne odnoszące się do sekwencji Właściciela tabel i mające nazwy takie jak nazwy sekwencji. Administrator ról nie ma wpływu na nadawanie uprawnienia do sekwencji poszczególnym użytkownikom. Rolę BAZOWA, która ma uprawnienia do wszystkich sekwencji, nadaje się automatycznie każdemu nowemu użytkownikowi.
Na rysunku 2 przedstawiono sposób kontroli uprawnień do sekwencji Właściciela tabel. USOS_PROD_TAB jest Właścicielem tabel, natomiast SEQ_1, SEQ_2, SEQ_3, SEQ_m (znajdujące się wewnątrz USOS_PROD_TAB) to sekwencje Właściciela tabel. UZYTKOWNIK to zwykły użytkownik, natomiast SEQ_1, SEQ_2, SEQ_3, SEQ_m (znajdujące się wewnątrz UZYTKOWNIK) to synonimy użytkownika. Rola BAZOWA jest to predefiniowana rola nadawana wszystkim użytkownikom (por. p. 3.6). Strzałki przerywane między sekwencjami Właściciela tabel i synonimami użytkownika pokazują, do których sekwencji odwołują się poszczególne synonimy użytkownika. Strzałki ciągłe reprezentują nadanie uprawnień. Uprawnienia do poszczególnych sekwencji Właściciela tabel są nadane roli BAZOWA, a rola BAZOWA jest nadana użytkownikowi UZYTKOWNIK.
Kontrola uprawnień do pakietów#
Na rysunku 3. przedstawiono sposób kontroli uprawnień do pakietów Właściciela tabel.
Warto też zauważyć, że przy kontroli uprawnień do pakietów Właściciela tabel, Administrator ról nie ma żadnych pośrednich obiektów (jak to ma miejsce przy uprawnieniach do tabeli - por. p. 3.2), jednak ma on wpływ na nadawanie uprawnień do poszczególnych pakietów (w przeciwieństwie do uprawnień do sekwencji, gdzie uprawnienia nadawane są automatycznie - por. p. 3.3). Na rysunku zaznaczono Administratora ról, aby podkreślić, że to on nadaje uprawnienia do pakietów.
Kontrola uprawnień systemowych#
Rola BAZOWA#
Na rysunku 5. przedstawiono model zależności między tabelami i perspektywami Właściciela tabel, perspektywami Administratora ról oraz synonimami użytkownika. Pokazano również, w jaki sposób wykorzystuje się rolę BAZOWA i kiedy użytkownicy korzystają z perspektyw utworzonych dla tej roli.
USOS_PROD_TAB to Właściciel tabel, natomiast T_1, T_2, T_3, T_n (znajdujące się wewnątrz USOS_PROD_TAB) reprezentują tabele i perspektywy Właściciela tabel. ADMINROL jest Administratorem ról. P_1_1, P_1_2, P_1_3, P_1_n reprezentują perspektywy Administratora ról utworzone dla roli BAZOWA.
Perspektywy P_2_1, P_2_2, P_2_3, P_2_n to perspektywy Administratora Ról utworzone dla roli ROLA_1. Perspektywy P_3_1, P_3_2, P_3_n to perspektywy Administrator ról utworzone dla roli ROLA_2. UZYT_1, UZYT_2, UZYT_3 to zwykli użytkownicy, natomiast T_1, T_2, T_3, T_n to prywatne synonimy użytkowników.
Strzałki przerywane między tabelami Właściciela tabel i perspektywami Administratora ról pokazują, na jakich tabelach są oparte poszczególne perspektywy.
Strzałki ciągłe prowadzące od perspektyw Administratora ról do poszczególnych ról (BAZOWA, ROLA_1, ROLA_2) reprezentują nadanie rolom uprawnień do tych perspektyw. Strzałki ciągłe prowadzące od ról (BAZOWA, ROLA_1, ROLA_2) do użytkowników reprezentują nadanie ról użytkownikom. Strzałka przerywana pomiędzy rolą i użytkownikiem oznacza, że dana rola jest rolą domyślna użytkownika. Strzałki przerywane między perspektywami Administratora ról i synonimami użytkowników oznaczają obiekty, do jakich odwołują się poszczególne synonimy.
W przedstawionej sytuacji UZYT_3 nie ma nadanej żadnej roli (poza rolą BAZOWA, która jest nadana wszystkim użytkownikom), dlatego też jego synonimy odwołują się do perspektyw roli BAZOWA (perspektywy roli BAZOWA wyświetlają jeden pusty wiersz). UZYT_2 ma nadaną rolę ROLA_1, rola ta jest też jego rolą domyślną, ponieważ rola ta ma uprawnienia do wszystkich przedstawionych na rysunku tabel Właściciela tabel, UZYT_2 nie ma żadnych synonimów odnoszących się do perspektyw roli BAZOWA. UZYT_1 ma nadaną rolę ROLA_2, rola ta jest też jego rolą domyślną. Rola ROLA_2 nie ma uprawnień do wszystkich tabel Właściciela tabel, rola ta nie ma nadanego uprawnienia do tabeli TAB_3, dlatego też w dostępie do tabeli T_3 użytkownik ten korzysta z perspektywy P_1_3 utworzonej dla roli BAZOWA. W dostępie do pozostałych tabel korzysta z perspektyw jego roli domyślnej.
Podsumowanie#
Jednym z najciekawszych aspektów tego rozwiązania jest zastosowanie w nim wyzwalaczy INSTEAD jako narzędzia programowania aktualizowalnych perspektyw. Dzięki tym wyzwalaczom możliwe było aktualizowanie dowolnie złożonych perspektyw i uniezależnienie możliwości ich aktualizacji od składni ich definicji. W standardzie SQL [ISO1992] określono dość surowe ograniczenia syntaktyczne na perspektywy, które można aktualizować. Z tego powodu praktyczne znaczenie tak pojmowanej aktualizacji perspektyw jest marginalne. Jedynym ogólnym rozwiązaniem są wyzwalacze INSTEAD, dzięki którym każdą perspektywę można uczynić aktualizowalną.
Otrzymany system jest bardzo elastyczny, ale niestety stanowi to również jego wadę. Ta elastyczność powoduje, że definiowanie uprawnień poszczególnych ról jest trudne i wymaga dobrej znajomości struktury bazy danych. Obecnie prowadzone są prace nad rozwiązaniem tego problemu.
W systemach, w których wdrożono już opisywane rozwiązanie, zaobserwowano, że wiele ról jest do siebie podobnych (np. role dla poszczególnych wydziałów różniące się między sobą tylko kodem wydziału w warunkach). Dalszy rozwój systemu kontroli uprawnień będzie polegał na dodaniu możliwości parametryzacji ról i tworzenia ról będących sumami uprawnień innych ról.
Bibliografia#
| [DADA2000] | C. J. Date i H. Darwen, SQL. Omówienie standardu języka, 2000, WNT. |
| [ISO1992] | International Organization for Standardization (ISO), Database Language SQL., ISO/IEC 9075:1992. |
| [KORU2000] | J. Korkuć i R. Rudzki, Uniwersytecki System Obsługi Studiów., 2000, Instytut Informatyki, Uniwersytet Warszawski, http://usos.mimuw.edu.pl/PraceMagisterskie/korkuc-rudzki/korkuc-rudzki.html. |
| [MAKA2002] | M. Makaroś, Uniwersytecki System Obsługi Studiów. Role., 2002, Instytut Informatyki, Uniwersytet Warszawski, http://usos.mimuw.edu.pl/PraceMagisterskie/makaros/makaros.zip. |
| [MINC2002] | J. Mincer-Daszkiewicz, Tworzenie i wdrażanie produkcyjnego oprogramowania w środowisku akademickim. Wybrane problemy inżynierii oprogramowania., 299--314, Pażdziernik 2002, Eds. P. Klint, J. R. Nawrocki, Scientific Publishers OWN, IV KKIO, Tarnowo Podgórne k. Poznania. |
| [USOS2002] | Dystrybucja USOS 1.14, http://usos.mimuw.edu.pl/Dystrybucje/dystrybucja.html. |

