[ Pobierz całość w formacie PDF ]
ci mogą zapoznawać się tylko i wyłącznie że swymi własnymi danymi. Wytyczne innych
polityk bezpieczeństwa będą zapewne bardziej skomplikowane, co więcej, może być ich
nawet kilka dla każdej jednej tabeli bądz perspektywy. Należy je formułować nadzwyczaj
jasno i wyraznie, ponieważ każde zdanie musi pózniej być przeniesione na kod funkcji
PL/SQL, który zostanie dołączony do wyznaczonej tabeli aplikacji lub perspektywy.
Tworzenie kontekstu aplikacji
Kontekst aplikacji jest nazwą zestawu atrybutów i wartości, które można ustawić a na-
stępnie powiązać z obecną sesją użytkownika. System Oracle zapewnia domyślny kon-
tekst , który zawiera informacje systemowe o aktualnej sesji, takie jak nazwa
użytkownika, host czy nazwa programu. Jeśli trzeba określić dodatkowe atrybuty dla
użytkownika, takie jak , należy się posłużyć kontekstem aplikacji.
Używając prawa można utworzyć kontekst aplikacji. Należy określić
szczególną nazwę kontekstu a potem połączyć ją z nazwą pakietu, który implementuje
kontekst. Nazwa kontekstu powinna być jedyna w swoim rodzaju i nie może nigdzie się
powtarzać w całej bazie danych. Jeśli zdarzy się tak, że plik o takiej nazwie istnieje,
system wyświetli informację o błędzie.
Aby utworzyć kontekst, należy posiadać prawo . Poniżej pokazano
przykład utworzenia kontekstu nazwanego , który będzie częścią pakietu
PL/SQL. Kontekst ten zostanie zapisany w schemacie . Oto składnia two-
rzenia kontekstu:
Tworzenie pakietu, który ustawi kontekst
Kiedy kontekst zostanie utworzony, należy zbudować pakiet i funkcje, które go ustawią.
Poniżej zaprezentowano przykład ustawiania atrybutu kontekstu za pomocą
bieżącej nazwy użytkownika uzyskanej z kontekstu domyślnego, . Ta funkcja
wykorzystuje nazwę użytkownika, aby sprawdzić niezbędne atrybuty w tabeli.
394 Część II ZarządzanIe bazą danych
System Oracle dostarcza zestaw predefiniowanych funkcji w kontekście systemowym
oraz wbudowany kontekst , który umożliwia zwrócenie nazwy użyt-
kownika wykonującego procedurę. Istnieje także wiele różnych wartości, które można
pozyskać z funkcji . Te, które mają coś wspólnego z zagadnieniami bezpie-
czeństwa, przedstawiono w tabeli 10.7.
Aby ustawić kontekst dla użytkownika sesji, należy się odwołać do funkcji, która była
powiązana z kontekstem, kiedy był on tworzony. Można to zrobić z poziomu samej
aplikacji lub poprzez wyzwalacz logowania. Używanie go gwarantuje także, że kontekst
będzie zawsze ustawiony, niezależnie od sposobu, w jaki użytkownik zaloguje się do
bazy danych. Aby ustawić wyzwalacz logowania, należy użyć wyzwalacza n n,
który wprowadzono w Oracle8i, wersja 8.1.5.
Tworzenie funkcji polityki bezpieczeństwa
Następnie należy skorzystać z funkcji PL/SQL, aby zaimplementować politykę bezpie-
czeństwa. Ta funkcja zostanie skojarzona z tabelą .
Poniżej zaprezentowano proces, który jeśli funkcja jest już przygotowana, narzuca na
zapytanie szczegółowe procedury bezpieczeństwa. Należy zaznaczyć, że w tym przy-
padku zapytanie oznacza każdą formę uzyskiwania dostępu do informacji z tabeli lub
perspektywy, włączając w to (ale nie ograniczając się tylko do nich) instrukcje ,
n , , oraz instrukcje podzapytań. Od chwili, w której polityka bezpie-
czeństwa zostanie skojarzona z tabelą lub widokiem, zawsze gdy użytkownik wystosuje
zapytanie, system będzie się odwoływał do polityki bezpieczeństwa, która zwróci od-
powiednią wartość w formie warunku dostępu do danych lub predykatu.
W praktyce predykat jest klauzulą h , która jest dopisywana do instrukcji SQL użyt-
kownika, aby ograniczać wiersze, które zależnie od typu używanej instrukcji, będą zwra-
cane, uaktualniane lub usuwane. Zmodyfikowane zapytanie jest oceniane i optymalizo-
wane podczas analizy instrukcji i może być następnie udostępniane i ponownie używane,
aby usprawnić działanie systemu.
Celem omawianego działania jest umożliwienie pacjentom oglądania tylko i wyłącznie
ich własnych danych, korzystając z pomocy identyfikatora . Oto przykładowa
procedura PL/SQL, dzięki której można uzyskać zamierzony efekt:
RozdzIał 10. ZabezpIeczenIe I monItorowanIe bazy danych 395
TabeIa 10.7. Parametry SYS_CONTEXT
Parametr Zwracana wartość
Dane używane do identyfikacji logującego się użytkownika.
Metoda identyfikacji użytkownika. Wartościami, które można uzyskać, są:
(baza danych): identyfikacja typu nazwa_użytkownika/hasło;
: zewnętrzna identyfikacja użytkowników przez system operacyjny;
(sieć): identyfikacja przez protokół sieciowy lub identyfikacja ;
: identyfikacja połączenia przez serwer proxy .
Jeśli proces drugoplanowy Oracle ustanowił bieżącą sesję, zostanie zwrócony
identyfikator zadania.
Używany w połączeniu z pakietem w celu magazynowania
informacji. Ten parametr zwraca do 64 bajtów informacji o sesji użytkownika.
Nazwa domyślnego schematu, używanego jako bieżący schemat.
Nazwa użytkownika, z którego uprawnieniami działa bieżąca sesja.
Identyfikator użytkownika, z którego uprawnieniami działa bieżąca sesja.
Domena bazy danych, identyczna z tą podaną w parametrze inicjalizacji
.
Nazwa bazy danych identyczna z tą podaną w parametrze inicjalizacji .
Dostępny identyfikator pola obserwacji. Ustawia się go, jeśli parametr inicjalizacji
został ustawiony na wartość w pliku parametrów inicjalizacji.
Zewnętrzna nazwa użytkownika bazy danych. Rozpoznana nazwa jest
zapamiętywana w certyfikacie użytkownika i zwracana dla procedur identyfikacji
protokołu SSL wykorzystujących certyfikaty v.503.
Jeśli proces pierwszoplanowy Oracle ustanowił bieżącą sesję, zostanie zwrócony
identyfikator zadania.
Nazwa komputera, z którego połączył się klient.
Numer identyfikacyjny bieżącej instancji.
Jeśli rola DBA jest włączona, zwrócona zostanie wartość . W przeciwnym
wypadku .
Protokół sieciowy używany do połączenia.
Nazwa użytkownika systemu operacyjnego, który zapoczątkował sesję.
Nazwa użytkownika bazy danych, który rozpoczął sesję jako .
Identyfikator nazwy użytkownika bazy danych, który rozpoczął sesję jako
.
Nazwa użytkownika bazy danych, pod którą użytkownik jest identyfikowany.
Wartość ta pozostaje niezmienna przez cała sesję.
Identyfikator nazwy użytkownika bazy danych, pod którą bieżący użytkownik
jest identyfikowany.
Identyfikator sesji obserwacji.
Identyfikator systemu operacyjnego dla klienta w bieżącej sesji. [ Pobierz całość w formacie PDF ]