Professional Documents
Culture Documents
PRZYKADOWY ROZDZIA
SPIS TRECI
KATALOG KSIEK
KATALOG ONLINE
ZAMW DRUKOWANY KATALOG
TWJ KOSZYK
DODAJ DO KOSZYKA
CENNIK I INFORMACJE
ZAMW INFORMACJE
O NOWOCIACH
ZAMW CENNIK
CZYTELNIA
FRAGMENTY KSIEK ONLINE
COM+. Kompendium
programisty
Autor: John Paul Mueller
Tumaczenie: Adam Balcerzak, Marcin Jdrysiak,
Tomasz Wasilewski
ISBN: 83-7197-641-0
Tytu oryginau: COM+ Developer's Guide
Format: B5, stron: 452
Przykady na ftp: 14 kB
Dziki tej ksice odkryjemy wiat modelu COM+ oraz zrozumiemy cel i zastosowanie
rnych zawartych w nim technologii. Po lekturze zrozumiesz, e wiele z tej aury
zoonoci, ktra otacza COM+, bierze si jedynie z faktu konsolidacji technologii
dostpnych obecnie w oddzielnych pakietach i wprowadzenia dodatkowych
usprawnie, ktre uatwiaj tworzenie aplikacji COM w porwnaniu ze stanem obecnym.
Szczegem, ktry odrnia t ksik od innych, jest zblienie si do rzeczywistoci
przy prezentowaniu modelu COM+. Oznacza to prac z rzeczywistymi przykadami
programw, ktre powinny pomc Ci szybciej rozpocz prac z COM+. Jednym
z waniejszych rodzajw aplikacji uywanych w zastosowaniach biznesowych jest baza
danych -- to wanie aplikacj tego typu stworzymy najpierw, a nastpnie bdziemy j
usprawnia na wiele rnych sposobw. Przykadowa baza danych korzysta z wielu
tabel. Przeledzimy dokadnie wszystkie etapy projektu wymagane do stworzenia
zarwno samej bazy danych, jak i aplikacji zarzdzajcej ni. Cz tego procesu
bdzie wymagaa napisania i zastosowania komponentu dziaajcego po stronie
serwera, ktry nie tylko uproci etap tworzenia zapyta, ale rwnie znacznie zredukuje
ruch w sieci.
COM+ nie musi by puszk Pandory, pen trudnych do zrozumienia technologii
i narzdzi, ktra udaremni Twoj prac. Ta ksika pomoe Ci w poznaniu nowej
i ekscytujcej czci Windows 2000. Nauczymy si wszystkiego, co COM+ moe
uczyni w kierunku przeskalowania Twoich aplikacji biurowych i sieciowych do
zastosowania ich na poziomie sieci WAN oraz Internetu.
Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
Ksika ta ma trzy gwne cele: nauczy teorii COM+, pokaza sposoby wykorzystania
modelu w rodowiskach programistycznych (oglnego przeznaczenia i firmowych) oraz
zaprezentowa przykadowe programy. Rozdziay 1. -- 6. opisuj teori modelu COM+
oraz szczegy uytkowe. Natomiast rozdziay 7. -- 10. zawieraj w peni funkcjonalne
przykady programw.
Spis treci
O Autorze....................................................................................... 9
Wstp............................................................................................ 11
Rozdzia 1.COM+ najnowsza technologia tworzenia komponentw..... 23
Co to jest COM+? ............................................................................................................. 24
Nowoci w COM+...................................................................................................... 24
Szersze spojrzenie na COM+ ..................................................................................... 26
Porwnanie COM+ i COM............................................................................................... 26
Cele projektowe COM+ ............................................................................................. 27
Transakcje i COM+ .................................................................................................... 27
Wiadomoci i COM+ ................................................................................................. 28
Usugi COM+ ............................................................................................................. 28
Wprowadzenie do MTS .................................................................................................... 30
Opis usug MTS.......................................................................................................... 31
Rola puli zasobw w COM+ ...................................................................................... 32
Gdzie pasuje MSMQ?....................................................................................................... 32
Spis treci
7
MSMQ 1.0 kontra MSMQ 2.0 ................................................................................. 165
Problemy z wydajnoci ................................................................................................. 165
Problemy zwizane z wewntrzn wydajnoci MSMQ ......................................... 166
Ograniczenia przetwarzania, ktre wpywaj na wydajno aplikacji ..................... 168
Sownik....................................................................................... 417
Skorowidz .................................................................................. 443
Wyjtkowe cechy
COM+
COM+ jest jednym z najbardziej oczekiwanych dodatkw do systemu Windows 2000 poza
Active Directory. Uytkownicy licz, e usunie on wiele problemw zwizanych z technologi komponentw. Jednake trzeba zda sobie spraw, e COM+ oferuje swoje funkcje jako
dodatek, a nie zamiast obecnej technologii komponentw firmy Microsoft. Pomimo tego, co
twierdzi Microsoft, COM+ jest kontynuacj technologii COM.
Oczywicie, cigo funkcji COM+ ma pewne zalety dla programisty. Po pierwsze, nakady
finansowe zainwestowane w istniejc technologi nie s zagroone. Zasadniczo wci potrzeba
tych samych narzdzi, by stworzy aplikacj komponentow, a aplikacja zaprojektowana dla
COM dziaa prawie tak samo, jak dawniej. Krtko mwic, COM+ jest po prostu udoskonalon
wersj COM.
W przypadku COM+ konsolidacja moe by lepszym okreleniem ni nowo. COM+ bierze
to, co najlepsze z trzech cakowicie rnych technologii. Pracujc z COM+, tak naprawd bdziesz widzia efekt pracy z COM, Microsoft Transaction Server (MTS), Microsoft Management
Queue (MSMQ) i innymi technologiami, takimi jak DCOM. Zgadza si, DCOM jest wci
podstaw przesyania danych przez sie.
Wic, po co w ogle dodawa + do nazwy COM? S pewne nowe moliwoci w COM+,
ktrych istnienia powiniene by wiadomy, by mc je efektywnie wykorzystywa. Przyjrzymy si temu, co Microsoft doda do COM w celu zrobienia z niego lepszego narzdzia do integracji. Czci wysiku konsolidacji jest umoliwienie pracy z rnymi elementami COM+
w sposb, ktry jest niewidzialny dla programisty i uytkownika. Nie warto konsolidowa
czego, jeeli wszystkie czci komponentu s wci cakowicie widoczne i wymagaj indywidualnego dostpu.
Pierwsza cz rozdziau omwi nowe funkcje automatyzacji zawarte w COM+. Najnowsza
oferta COM polega na tym, e robi on pewne rzeczy automatycznie (w przeszoci musiae
robi je rcznie). Problem dotyczcy przetrzymywania przez komponent zasobw systemowych
74
przesta istnie. Komponent przetrzymuje zasoby systemu tylko tak dugo, aby udao mu si
zakoczy przydzielone zadanie, potem natychmiast je zwalnia. Lepsze zarzdzanie zasobami
oznacza, e serwer bdzie pracowa bardziej wydajnie i w ten sposb moe spowodowa opnienie potrzeby jego modernizacji. Dodatkowo, fakt, e COM i MTS s obecnie zintegrowane,
oznacza, e istnieje wiksza szansa, e transakcje bd dziaa. Na koniec, komponenty COM+
uywaj tzw. kontekstu. Pomaga on okreli sposb interakcji komponentu z klientem i reakcji
na jego dania.
Zasobami zarzdzaj dwa elementy: rozdzielacz zasobw oraz meneder wyrwnywania zasobw. Oprcz wysiku pojedynczych komponentw, Windows 2000 ma proaktywne podejcie
do zarzdzania zasobami. Rozdzielacz zasobw zapewnia, e kady komponent otrzyma tylko
tyle zasobw, ile potrzebuje, i tylko na czas, kiedy ich potrzebuje. Nastpnie, zamiast cakowicie
zwalnia zasoby, rozdzielacz zasobw zwraca je do puli, ktra uywana jest do obsugi potrzeb
innych komponentw. Strategia wykorzystywania puli zasobw znacznie redukuje czas, ktry
jest potrzebny na przydzielenie (zwolnienie) zasobw. Oznacza to, e aplikacja zuywa mniej
cykli zegara procesora gwnego na wywizywanie si ze swoich podstawowych zada.
W kolejnej czci tego rozdziau przyjrzymy si menederowi wyrwnywania zasobw (Compensating Resource Manager CRM). Zwykle, byby zmuszony utworzy rozdzielacz zasobw
dla swojej aplikacji. Zalenie od stopnia zoonoci aplikacji, rozdzielacz zasobw nie miaby
zbyt wiele do roboty. COM+ zwalnia ci z obowizku stworzenia rozdzielacza zasobw, oferujc
gotowe rozwizanie w postaci CRM. Ta cecha COM+ umoliwia aplikacjom prac z DTC bez
koniecznoci tworzenia rozdzielacza zasobw. Wystarczy jedynie doda specjalny interfejs do
komponentu. CRM uzyskuje dostp do tego interfejsu i umoliwia komponentowi decydowanie
o wyniku transakcji na podstawie wynikw poszczeglnych transakcji w komponencie. Krtko
mwic, otrzymujesz wszystkie moliwoci penej implementacji rozdzielacza zasobw bez
najmniejszego wysiku. CRM rwnie odpowiada za obsug nieudanych transakcji, opierajc
si na wpisach pochodzcych ze swojego wasnego dziennika zdarze. Oznacza to, e zyskujesz
mechanizm automatycznej obsugi bdw bez dodatkowej pracy.
Czwarta cz rozdziau omawia ujcia zdarze COM+. S to odbiorniki zdarze. W przypadku wystpienia zdarzenia na serwerze powizane ujcie otrzymuje wiadomo o zdarzeniu,
a nastpnie reaguje na nie. Funkcja nie jest nowa, lecz w przypadku COM+ jest inaczej obsugiwana. Pamitaj, e COM+ obejmuje wiele technik zdalnego uruchamiania opartych na starszych
technologiach, takich jak DCOM. W rezultacie, zdarzenie, ktre miao miejsce, niekoniecznie
wydarzyo si na lokalnym serwerze. Mg je wygenerowa klient, lub serwer obsugujcy
obecnie cz wikszej aplikacji.
Koncepcja katalogu komponentw, opisana w kolejnej czci rozdziau, powinna zainteresowa
programistw majcych do czynienia z bibliotekami typw. Zamiast tworzenia opisu komponentu
w oddzielnym pliku (twoja aplikacja moe go nie zrozumie), COM+ udostpnia koncepcj
katalogu komponentw. Jest to w zasadzie baza danych specjalnego przeznaczenia, ktra suy
do przechowywania opisw wszystkich komponentw zarejestrowanych na serwerze. Aplikacja
moe pobra te opisy, by uzyska wicej informacji na temat komponentu i sposobu wsppracy
z nim. Nie musisz si ju duej martwi o to, gdzie znajduje si plik TLB (zawierajcy bibliotek
typw), poniewa twoja aplikacja moe pobra niezbdne informacje z centralnego magazynu.
W kolejnej czci rozdziau przyjrzymy si tematowi puli obiektw i obiektom zasobw. Pula
obiektw jest nastpc mechanizmu puli obecnie uywanego przez Microsoft Data Access
75
Components (MDAC). Podczas pracy z MDAC aplikacja moe stworzy poczenie z baz
danych, nastpnie po udanym jego nawizaniu zwrci je do puli pocze. Poczenie nie jest
zrywane, wic krcej trwa wydostanie go z puli i ponowne uycie ni nawizanie nowego
poczenia. Pula obiektw dziaa na tej samej zasadzie, lecz odnosi si do wszystkich rodzajw
obiektw, wczajc w to poczenia z baz danych. Uywanie puli obiektw sprawia, e aplikacja staje si bardziej wydajna. Obiekty zasobw s specjalnymi komponentami, ktre obsuguj
mechanizm puli obiektw. Istnieje kilka wymogw dotyczcych ich tworzenia, lecz najwaniejsze
jest to, e obsuguj one interfejs IObjectControl.
Zabezpieczenia oparte na rolach to temat poruszony w kolejnej czci rozdziau. Windows 2000
korzysta z tego mechanizmu, poniewa jest to najbardziej wydajny sposb obsugi dostpu
uytkownika w rodowiskach sieciowych duych rozmiarw. Pomyl o rolach jako o bardziej
elastycznym rozszerzeniu pojcia grup. Tworzysz list rnych rl w firmie (kierownik dziau,
informatyk itd.), a nastpnie przydzielasz jedn lub wicej rl kademu uytkownikowi. Rola
okrela, kim jest uytkownik wedug kryterium wykonywanych przez niego zada. Innymi sowy,
mechanizm zabezpiecze opartych na rolach nie zakada, e uytkownik powinien mie dostp
do obiektu po prostu dlatego, e pracuje w danym dziale firmy. Uytkownik musi wykonywa
zadanie, ktre wymaga dostpu do tego obiektu, by wymagania bezpieczestwa zostay spenione.
Ostatnia cz rozdziau omwi funkcj, ktra moe (ale nie musi) by dostpna, gdy bdziesz
czyta po raz pierwszy ten rozdzia wyrwnywanie obcienia komponentu (CLB). Pocztkowo istniay plany wczenia tego mechanizmu do Windows 2000, lecz firma Microsoft
ostatecznie zdecydowaa si udostpni go jako oddzielny produkt i tylko z serwerami wyszej
klasy. Jednake, mechanizm ten jest tak wany, e pomimo wszystko zostanie omwiony. Zasadniczo, CLB umoliwia systemowi Windows 2000 automatycznie wyrwnywanie obcienia
komponentu, rozkadajc je na kilka serwerw. Na przykad, moesz mie komponent bazy
danych zaadowany na czterech serwerach ze wzgldu na stopie wykorzystania. Jak administrator okrela serwer, do ktrego zosta przydzielony uytkownik? Dawniej administrator mg
jedynie statycznie przypisa uytkownika do serwera i mie nadziej, e zrobi dobrze. Niestety,
oznaczao to, e niektre serwery byy bardzo obcione, podczas gdy inne nie byy wykorzystywane. CLB zmienia ten stan rzeczy. Obecnie danie uytkownika dotyczce dostpu do komponentu jest przypisywane serwerowi, ktry potrafi najlepiej wywiza si z zadania jego obsugi.
Uytkownik uzyskuje najlepszy moliwy czas dostpu, a firma nie musi przeprowadza zbyt czstych modernizacji, poniewa wykorzystywany jest peen potencja mocy kadego serwera.
COM+ i automatyzacja
Programici COM spdzaj wiele czasu na zarzdzaniu czciami swoich aplikacji, ktrych
uytkownik nigdy nie widzia lub uzna je za automatyczne. Problemy te wynikay czciowo
z faktu, e Microsoft oferowa wiele technologii, ktre mogy pracowa z COM, lecz byy one
sprzedawane jako oddzielne produkty. Oczywicie, najwaniejsze w tym przypadku s MSMQ
i MTS, ktre obecnie s czci systemu operacyjnego Windows 2000. Wczeniej wspominalimy, e COM+ nie jest nowy, ile raczej skonsolidowany. Konsolidacja jest bardziej przydatna
do automatycznego wykonywania zada w tle.
76
77
e wywoanie kadego klienta przejdzie przez wiele serwerw i zablokuje te zasoby na tych
serwerach poredniczcych do chwili, gdy zdalny serwer umoliwi dostp do potrzebnego komponentu. Oczywicie, nie potrzeba wiele takich da, by obniy ogln wydajno sieci
komputerowej (z powodu zwikszonej liczby da sieciowych) i wydajnoci kilku serwerw.
Aktywacja JIT suy rwnie pomoc w sytuacji, gdy chcesz zmniejszy liczb wywoa klientw
do minimum.
Z pewnoci zadajesz sobie pytanie, czy masz jakkolwiek kontrol nad aktywacj JIT, poza jej
uruchamianiem i wyczaniem. Microsoft udostpnia interfejs IObjectControl, by umoliwi
ci rczn interakcj z komponentami. Ten interfejs jest uywany zarwno w przypadku puli obiektw (opisanej dalej w rozdziale), jak i aktywacji JIT. Dwie z metod i
umoliwiaj rczne wykonanie zada aktywacji JIT na komponencie. Wykorzystanie tych funkcji
pozwoli ci poprawi wydajno caego procesu przydzielania zasobw.
Trzeci metod interfejsu IObjectControl jest
. Ta metoda jest uywana przez pul
obiektw, by poinformowa system Windows 2000, czy dany obiekt moe korzysta z puli.
Obiekt musi zwrci warto TRUE przy wywoaniu metody
, by zosta wysanym do puli obiektw, zamiast by zniszczony podczas dezaktywacji przez Windows
2000. Korzystanie z puli obiektw znacznie przyspiesza proces aktywacji i dezaktywacji.
Przetwarzanie transakcji
Przetwarzanie transakcji zwykle rodzi wizje zarzdzania bazami danych oraz rnego rodzaju
danych finansowych. Jest to faktyczna przyczyna zaistnienia mechanizmu przetwarzania transakcji. Pracownicy bankowi musz mie pewno, e informacje wprowadzane przez nich do
bazy danych s w niej zapisywane raz i tylko jeden raz. Pomyl, jakie spustoszenie wywoaby
kilkukrotny zapis tych samych transakcji!
Jednake, nie tylko instytucje finansowe potrzebuj korzystania z transakcji. Szpital lub podobna
instytucja rwnie musi mie pewno, e dane s zapisywane prawidowo. Krtko mwic,
MTS by pocztkowo projektowany do spenienia wymaga caej grupy ludzi, ktrzy potrzebowali
bezwzgldnej integralnoci danych. S po prostu takie miejsca, gdzie utrata integralnoci danych
grozi katastrof.
Oczywicie, dane nie s jedynym rodzajem obiektu, ktry wymaga cilej kontroli, zwaszcza
w rodowisku aplikacji rozproszonych Windows 2000. Co si stanie, jeeli potrzebny komponent
zostanie uszkodzony w trakcie przesania z serwera lub jeeli dwie kopie tego komponentu s
przesyane w rnym czasie? W pierwszym przypadku, aplikacja klienta moe po prostu zaprzesta pracy. W drugim przypadku, moesz dowiadczy naprawd dziwnych i nieprzewidywalnych efektw, poniewa niezainicjowany komponent jest w stanie zamaza ten, ktry aplikacja
zdya zainicjowa.
Jak wida, transakcje s bardzo wan czci COM+. Zarwno dane, jak i kod wymagaj
nadzoru, by mie pewno, e obiekt wysyany do klienta jest tym, ktry tam waciwie dociera.
Wicej na temat sposobu dziaania transakcji w dalszej czci ksiki.
Uwaga
78
Kontekst COM+
Kady komponent COM+ jest tworzony ze specjalnym zestawem waciwoci, znanym pod
nazw kontekst. Identyfikuje on dany egzemplarz komponentu i jest zwizany z tylko jednym
apartamentem COM. Wiele obiektw moe by zwizanych z pojedynczym kontekstem
zwykle, gdy tych obiektw da aplikacja. Dodatkowo, jeden apartament moe zawiera wiele
kontekstw. Zamys skrywajcy si za kontekstem polega na daniu komponentowi punktu
odwoania, jakiego pomysu na to, gdzie jest jego miejsce w aplikacji. Poprzez sprawdzenie
kontekstu, w ktrym jest uruchomiony, komponent moe, zalenie od potrzeb, wykonywa
dodatkowe przetwarzanie.
Wskazwka
Moe spotkae si z sytuacj, gdy konteksty uywane przez COM+ byy
okrelane mianem interfejsw obiektowych kontekstu MTS (MTS
context wrapper). W systemie Windows 2000 pojcie to zostao
rozszerzone, by obj ca dziaalno COM. W rezultacie, wczeniejsze
okrelenie nie jest uywane, lecz nie zmienia to faktu, e jest ono wci
obecne w innej formie.
COM+ rwnie radzi sobie z kontekstem komponentu. Uywa waciwoci zawartych w kontekcie, by udostpnia usugi podczas fazy wykonania. Dodatkowo, kontekst ma wpyw na
rodowisko uruchamiania komponentu. Podczas pracy z COM+, bdziesz bezporednio pracowa
z waciwociami kontekstu, by wskaza systemowi operacyjnemu pewne zmiany w rodowisku
79
80
Rozdzielacze zasobw
Rozdzielacze zasobw robi dokadnie to, co sugeruje ich nazwa rozdzielaj zasoby komponentowe, ktrych wymagaj aplikacje. Kady komponent COM+ potrafi korzysta z rozdzielaczy
zasobw, by mc zarzdza rnymi obiektami, ktrych wymaga komponent. Windows 2000
dostarcza domylny zestaw rozdzielaczy zasobw, lecz istnieje rwnie moliwo stworzenia
wasnego. Na przykad, wiele menederw baz danych zawiera Menedera Zasobw oraz jeden
lub wicej niestandardowych rozdzielaczy zasobw.
Wskazwka
W momencie wywoania rozdzielacza zasobw komponent staje si
transakcyjny. Komponent nie musi robi nic wicej w celu uruchomienia
MTS lub pracy z nim. W systemie Windows 2000 wszystkie transakcje
komponentu s deklaracyjne, co oznacza, e uczestniczce komponenty
nie wymagaj dodatkowego kodu. Wszystkie transakcje odpowiadaj
wymaganiom specyfikacji transakcji OLE wdraanej przez MS
DTC(Microsoft Distributed Transaction Coordinator). Jeszcze do tego
wrcimy.
Rozdzielacz zasobw pracuje z nietrwaymi danymi, ktre s przechowywane w pamici operacyjnej i s tracone w momencie wyczenia komputera lub jego ponownego uruchamiania.
aden z komponentw obsugiwanych przez rozdzielacz zasobw nie jest trway. Krtko mwic,
rozdzielacz zasobw pozwala systemowi Windows 2000 zarzdza du pul tymczasowych
obiektw, ktra jest wykorzystywana do wielu rnych celw przez pewn liczb aplikacji.
Istniej rne rodzaje obiektw, z ktrymi moe pracowa rozdzielacz zasobw. Nie pracuje on
tylko ze standardowymi komponentami. Obsuguje wszystkie rodzaje obiektw. Nawet takie, ktre
na pierwszy rzut oka nie potrzebuj jakiegokolwiek zarzdzania. Zwykle zobaczysz rozdzielacz
zasobw podczas pracy z takimi obiektami, jak poczenia (z bazami danych, sieciowe, z gniazdkami), bloki i struktury pamici, kolejki, wtki oraz z innymi formami nietrwaych obiektw.
Zatem, jak pracuje rozdzielacz zasobw? Klient wysya danie odnonie do zasobu do menedera zasobw (np. SQL Server). Wraz ze wzrostem liczby da, SQL Server tworzy jeden lub
wicej rozdzielaczy zasobw. One za po kolei tworz pul zasobw przeznaczon do tymczasowego przechowywania obiektw, ktre nie s ju duej potrzebne aplikacji. W momencie gdy
aplikacja koczy uywanie obiektu w rodzaju poczenia z baz danych, jest on umieszczany
w puli zasobw, zamiast zosta zniszczony. Uywanie puli redukuje czas potrzebny zarwno
na pozbycie si zbdnego obiektu, jak i na stworzenie nowego, gdy tylko aplikacje tego zadaj.
81
82
transakcji. CRM Compensator jest uruchamiany podczas etapu zatwierdzania transakcji. To jest
jedyna cz twojego komponentu, ktra waciwie moe zobaczy wynik transakcji. Jeeli
transakcja si powiedzie, CRM Compensator zwykle zwalnia wszystkie zasoby, ktre przechowuje wraz z tymi przetrzymywanymi przez komponent. W przeciwnym razie CRM Compensator korzysta z zawartoci dziennika, w celu zapewnienia, e zostanie przywrcony stan
rzeczy sprzed nieudanej transakcji, bez wywierania wpywu na zadania wykonywane przez
inne transakcje.
Wszystkie menedery wyrwnywania zasobw (CRMs) korzystaj z usug interfejsu ICrmCompensator. Interfejs ten udostpnia metody umoliwiajce CRM tworzenie wpisw w dzienniku,
zatwierdzanie transakcji lub jej przerwanie. Istniej rwnie metody, ktre okrelaj moment
rozpoczcia i zakoczenia kadego etapu transakcji dwie dla fazy przygotowa i kolejne
dwie dla fazy zatwierdzania.
Katalog COM+
Jeeli chcesz co kupi w sprzeday wysykowej, przegldasz katalog, zapisujesz numer katalogowy produktu, dzwonisz do firmy i zamawiasz potrzebn rzecz. To samo dzieje si w przypadku
COM+ na poziomie aplikacji. Katalog COM+ udostpnia pen list wszystkich komponentw
zarejestrowanych na serwerze oraz ich dane konfiguracyjne. W wikszoci przypadkw zawieraj
one atrybuty aplikacji COM+, atrybuty z poziomw klasy i komputera. Katalog COM+ jest fizycznie przechowywany w REGDB ktra jest rejestrow baz danych (jak sugeruje nazwa).
Zwykle bdziesz mia bezporedni dostp do katalogu COM+ za porednictwem przystawki
konsoli MMC Usugi skadowe.
Oczywicie, moesz rwnie mie dostp do katalogu COM+ poprzez swoj aplikacj. W tej
sytuacji celem katalogu jest udostpnienie warstwy uniezalenienia, ktra ukrywa pewne kaprysy zwizane z uzyskiwaniem dostpu do informacji konfiguracyjnych komponentu. Dostp
do katalogu COM+ uzyskiwany jest poprzez interfejs ICOMAdminCatalog, ktry udostpnia
metody dostpu do kolekcji jako caoci lub pojedynczych komponentw (zwanych w tej sytuacji aplikacjami). Dostp do pojedynczego komponentu obejmuje m.in. numer wersji kom-
83
Pula obiektw
Waciwie jest to pojcie, ktre bardzo atwo zrozumie. Pomyl o iloci kodu wymaganego
do utworzenia egzemplarza obiektu i do zmiany waciwoci obiektu. Nie trzeba by naukowcem, by zrozumie, e zmiana waciwoci jest daleko mniej wymagajca w kwestii kodowania
ni tworzenie nowego obiektu. To jest wanie to, o co chodzi w puli obiektw. Zamiast tworzenia
nowych obiektw za kadym razem, gdy pojawia si taka potrzeba, a nastpnie niszczenia ich
po zakoczeniu pracy z nimi, pula obiektw umoliwia zachowanie obiektu do ponownego
wykorzystania w przyszoci.
84
Uwaga
W tym rozdziale bd uywane dwa terminy na okrelenie ludzi
amicych zabezpieczenia serwerw WWW lub sieci komputerowych.
Pierwsze z nich hacker odnosi si do kogo, kto wykonuje
niskopoziomowe zadanie, np. sprawdza zabezpieczenia stosowane przez
firm, za jej przyzwoleniem. Hackerzy nie robi nic, co mogoby
uszkodzi sie lub przechowywane w niej dane. Drugie okrelenie
cracker okrela osob, ktra wamuje si na serwery WWW lub do sieci
komputerowych, chcc ukra dane, uszkodzi dane, sie lub
zainstalowa wrogie oprogramowanie (wirusy, konie trojaskie).
85
udostpni twoja maszyna. Na szczcie, dla programisty COM+ rodzaje aplikacji, na ktre
zwykle maj wpyw surowe zabezpieczenia systemu Windows 2000, nie stanowi problemu,
wic nie bdziemy wicej wraca do tego tematu.
Dua liczba mechanizmw zabezpieczajcych, ktre udostpnia Windows 2000, to duy plus
dla uytkownikw Internetu i witryn WWW. Faktycznie, wielu twrcw serwisw WWW
chciaoby, aby system Windows 2000 zapewnia jeszcze bardziej surowe reguy zabezpiecze,
ni oferuje obecnie. To poziom wasnych zabezpiecze sprawia, e Windows 2000 jest wietn
platform systemow do uruchomienia witryny WWW. W dodatku, w wikszoci przypadkw
moesz poprawi standardowe moliwoci serwisu WWW, jeeli napiszesz kod korzystajcy
z mechanizmw oferowanych przez system Windows 2000. W wikszoci przypadkw, oznacza
to tworzenie komponentw, do ktrych moesz uzyska dostp poprzez skrypty ASP, jako
dodatek do zwykych metod konfiguracji zabezpiecze. Innym sposobem na osignicie tego
samego celu jest stworzenie filtra ISAPI, ktry bdzie monitorowa zabezpieczenia twojego
systemu (tej techniki nie bdziemy omawia). Nawet jeeli nie uda ci si zapobiec zamaniu
twoich zabezpiecze przez crackera, bdziesz mg przynajmniej ledzi, co on robi, by zminimalizowa zakres wyrzdzonych szkd. W dodatku, znajc miejsce wamania, mona w przyszoci wzmocni je, uszczelniajc tym samym zabezpieczenia.
Wskazwka
Pewien sawny hacker powiedzia, e nie ma znaczenia czy, lecz kiedy kto
wamie si na twoj witryn WWW lub do twojej sieci ledzenie
zdarze dotyczcych zabezpiecze pozwoli ci wykry usterki w
zabezpieczeniach, zanim stan si problemem. W pewnych przypadkach,
moesz nawet przeprowadzi dokadn kontrol swojej sieci, korzystajc
z usug firmy doradczej zatrudniajcej hackerw. Naley pamita, e
zarwno crackerzy, jak i hackerzy czsto uywaj tych samych narzdzi
i metod do przeamywania zabezpiecze twojej sieci rnica polega na
tym, e hacker jest tutaj po to, by pomc ci wzmocni ochron twojej sieci
wykry sabe miejsca w zabezpieczeniach i je naprawi.
Dziury w zabezpieczeniach
Zatem, czy zdoby si na wysiek wbudowywania dodatkowych charakterystycznych dla
systemu Windows 2000 zabezpiecze w swj komponent lub aplikacj? Po pierwsze, to
niemoliwe, by konfiguracja zabezpiecze twojej sieci LAN bya perfekcyjna. Musisz si
przekona, e wszystkie czci kadej aplikacji zapewniaj wymagany poziom zabezpiecze
inaczej bdziesz mia dziury w zabezpieczeniach swojej sieci lokalnej. Obecnie jednym
z najbardziej powszechnych rde problemw z ochron w firmach jest uytkownik, ktry nie
rozumie regu biznesu dotyczcych zabezpiecze. Dodanie do aplikacji i zwizanych z nimi
komponentw, charakterystycznych dla Windows 2000, metod ochrony, pomoe ci pokona
pewnego rodzaju problemy zwizane z wiedz uytkownika, lub przynajmniej ostrzec go, e
robi co, co wykracza poza wytyczne firmy.
86
Nie moesz martwi si jedynie o swoj sie LAN, trzeba pomyle take o Internecie. Nawet
jeeli nie udostpnisz swojej witryny WWW w Internecie, zawsze bd sposoby, ktre umoliwi wamanie i dokonanie spustosze w sieci. Internet otwiera crackerowi wszystkie rodzaje
potencjalnych moliwoci. Nie ma rady na to, e w obecnych specyfikacjach API dotyczcych
zabezpiecze w Internecie, jak rwnie w ich implementacjach uywanych przez rne aplikacje
znajduj si dziury. W pewnych przypadkach, te dziury w zabezpieczeniach nie znajduj si
w samym interfejsie API, ale s wynikiem twrczych rozwiza ludzi, ktre byy uywane
w przeszoci do uruchamiania Internetu. W zasadzie mona powiedzie, e rozwizanie problemu w przeszoci stworzyo dodatkowe wejcia w teraniejszoci.
Bez wzgldu na to, jakie jest rdo dziury w zabezpieczeniach, moesz by pewien, e jaki
cracker czeka na to, by si o niej dowiedzie. Wykorzystywanie dobrze znanych wyrw w zabezpieczeniach to jedno z najwaniejszych narzdzi w wiecie crackerw. To nie s tylko konta
uytkownikw, ktre powiniene albo monitorowa, albo zablokowa (np. Guest), to jest sposb,
w jaki aplikacja zostaa zaprojektowana. Nawet Java, ktra dla zapewnienia bezpieczestwa
wykorzystuje mechanizm sandbox, miaa w nim dziury. Ostatnio, crackerzy byli w stanie przekona wirtualn maszyn Javy (JVM), e ma skasowa plik na maszynie uytkownika. Podczas gdy
niektre dziury w zabezpieczeniach s niewielkie i trudno uzyska do nich dostp, faktem jest, e
masz wyrwy w zabezpieczeniach, ktrych cracker moe uy do uszkodzenia twojej sieci.
W nieodlegej przeszoci Microsoft by obiektem szykan ze strony prasy branowej. Oczywicie, po czci wynikao to z faktu, e jest jedn z najwikszych korporacji. Crackerzy znaleli
dziury we wszystkich produktach firmy, zaczynajc od przegldarki WWW Internet Explorer
i koczc na pakiecie programw biurowych Microsoft Office. Istnienie dziur wykryto nawet
w rzekomo bezpiecznej infrastrukturze usugi ICD (Internet Component Download) metody
sucej do pobierania komponentw ActiveX z sieci Internet. Ponisza lista przedstawia informacje
dotyczce trzech dziur zawartych w usudze ICD (chocia to prawie pewne, e jest ich wicej):
G Znacznik HTML <A HREF> istniej sposoby na pobranie i uruchomienie pliku EXE
za pomoc znacznika jzyka HTML "#$%&. Metod, z ktrej korzysta przegldarka
Internet Explorer 3.x/4.x/5.x do utrzymywania tego problemu pod kontrol jest obecnie
to, by analizator skadni HTML wykorzystywa bezporednio przydomek URL
do pobierania kodu. Wtedy nastpuje wywoanie WinVerifyTrust, bdce czci usugi
ICD majce na celu weryfikacj wiarygodnoci kodu. Czy ta metoda jest w 100%
bezpieczna? Nie, poniewa uywasz czego innego ni standardowa procedura
weryfikujca zawarto pliku. W tej sytuacji polegasz na analizatorze skadni HTML.
Proponowanym rozwizaniem problemu, sugerowanym przez Microsoft, jest odmowa
pozwolenia na pobieranie kontrolek ActiveX (gdy padnie takie pytanie ze strony
przegldarki) oraz to, e powiniene sprawdzi kady pobrany z sieci plik EXE przed
jego uruchomieniem. Jednake, moliwo obejcia tych dwch sugestii wci istnieje
i niedowiadczony uytkownik moe zainfekowa wirusem twoj sie, zanim zdysz
si zorientowa.
G Skrypty obecnie skrypty nie s w ogle poddawane kontroli pod ktem wykrywania
dziur w zabezpieczeniach. Nie istnieje sposb na sprawdzenie, kto jest autorem danego
skryptu lub co mgby on zrobi na twojej maszynie. Nie ma take sposobu na to, by
sprawdzi, jakie informacje skrypt moe pobiera z twojej maszyny. Obecnie Microsoft
pracuje nad stworzeniem pewnego rodzaju certyfikatu dla skryptw. Jednake, nawet
w przypadku Internet Explorera, najlepiej po prostu wyczy ich przetwarzanie, jeeli
87
Uwaga
W tym rozdziale przyjrzymy si rwnie dziurom w innych rodzajach
technologii zabezpiecze (zwaszcza tym, ktre pomagaj w ochronie
danych w Internecie). Tabele 3.1 i 3.2 s pene nowych specyfikacji
zaprojektowanych do zatkania dziur w obecnie uywanych
technologiach. SHTTP, S/WAN oraz inne technologie nie byyby
potrzebne, gdyby ochrona nie sprawiaa problemw. Istnieje nawet nowa
wersja MIME o nazwie S/MIME, ktra daje pewno, e nikt nie
przeczyta twojej poczty.
Oczywicie, ta lista wskazuje jedynie trzy dziury w jednej usudze systemu Windows. Teraz,
zastanw si, ile usug masz uruchomionych na swojej stacji roboczej i zwizanym serwerze.
88
Nawet jeeli kada usuga ma tylko jedn dziur, moliwoci do naruszenia systemu zabezpiecze bdzie naprawd duo. Moesz jednak doda zabezpieczenia do swoich komponentw
i aplikacji, by mie moliwo ledzenia takiego dostpu i (lub) zablokowania go. Zamykanie
dziur i wypenianie szczelin w konfiguracji zabezpiecze jest spraw wan, jeeli zaley ci na
zachowaniu danych, nad zdobyciem ktrych twoja firma tak ciko pracowaa. Krtko mwic,
bdziesz musia wiedzie, jakie mechanizmy zabezpiecze oferuje system Windows 2000
potraktuj to jako swj pierwszy krok w kierunku zabezpieczenia swojego systemu.
Aby zrozumie, w jaki system Windows 2000 moe pomc ci wzmocni ochron twojej sieci
jako caoci, naley przyjrze si podstawowym funkcjom zabezpiecze udostpnianym przez
sam system operacyjny. Do kadego mechanizmu zabezpiecze (np. odwzorowanie napdw
dyskowych), ktry ma do zaoferowania system Windows 2000, mona uzyska dostp z poziomu aplikacji. Wielu programistw nie pamita o tym, e dostp do funkcji mechanizmw
zabezpiecze Windows 2000 mona rwnie uzyska za pomoc kontrolek ActiveX. Dla programisty COM+ oznacza to konieczno implementacji mechanizmw zabezpieczajcych komponenty. Takie podejcie zapobiegnie rnym rodzajom nieautoryzowanego dostpu. Oczywicie,
naley przede wszystkim okreli tosamo uytkownika dajcego dostpu do komponentu,
a nastpnie ograniczy dostpnoci jego funkcji tylko do tych, ktrych naprawd potrzebuje.
Moesz w bardzo prosty sposb dokona implementacji mechanizmw zabezpieczajcych systemu Windows 2000. Na przykad, tworzenie kontrolki ActiveX do wywietlania okna dialogowego sucego do przeprowadzania logowania waciwie suy dwm sprawom w kadej
aplikacji, zwaszcza tym, do ktrych dostp mona uzyska spoza firmy za pomoc Internetu.
Po pierwsze, pozwala ci zweryfikowa tosamo tego konkretnego uytkownika i dostosowa
poziom dostpu do aplikacji. Cracker, nie znajc hasa, bdzie mia trudnoci w zalogowaniu
si. Po drugie, moesz tak skonfigurowa serwer, by zapisywa kady bezpieczny dostp
pamitaj, e Windows 2000 daje ci moliwo nadzoru nad wszystkim. Jeeli kto poradzi sobie
z przeamaniem zabezpiecze twojego systemu, bdziesz przynajmniej zna konto, ktre zostao
uyte do wamania. Znajomo nazwy konta pozwoli ci oszacowa poziom uszkodze i strat,
ktre cracker mg spowodowa, korzystajc uprawnie przyznanych osobie, ktrej konto zostao
uyte do wamania.
89
Istniej waciwie dwa poziomy standardw zabezpiecze, o ktrych naley pomyle. Pierwszy
z nich zawiera wewntrzne zabezpieczenia udostpniane przez system Windows 2000. Bdziesz
z nich korzysta przed lokalnymi zagroeniami bezpieczestwa, ktre istniej w twojej sieci
LAN lub WAN. Te rodki ochrony s rwnie wane w przypadku korzystania z Internetu. Ich
przegld zawiera tabela 3.1.
Standard
Opis
Inicjatywa
cyfrowych podpisw
(DSI Digital Signature
Initiative)
Protok zabezpiecze IP
(IPSec Internet Protocol
Security Protocol)
Usuga uwierzytelniania
sieciowego Kerberos
(Kerberos Network
Authentication Service)
90
IETF RFC1510
Technologia prywatnej
komunikacji
(PCT Private
Communication
Technology)
Protok SSL
(Secure Socket Layer)
Standard
Opis
Distributed
Authentication Security
Service (DASS)
IETF RFC1507
Generic Security
Service Application
Program Interface
(GSS-API)
91
IETF RFC1508
Joint Electronic
Payment Initiative
(JEPI)
Standard
Opis
92
Secure/Multipurpose
Internet Mail
Extensions (S/MIME)
Standard
Opis
Bezpieczna sie
rozlega
(S/WAN Secure
Wide Area Network)
Bezpieczny protok
transmisji hipertekstu
(SHTTP Secure
Hypertext Transfer
Protocol)
Uniwersalne
identyfikatory zasobw
(URI Universal
Resource Identifiers)
IETF RFC2396 oraz
inne np. RFC1630
93
ktry stanowi cz systemu operacyjnego. Pod Windows 2000 kady obiekt posiada
pewien rodzaj zabezpiecze ze sob zwizany i warto przyjrze si sposobowi, w jaki
s one implementowane. Korzystanie z zabezpiecze na poziomie obiektu oznacza,
e istnieje niewielka szansa, by kady mg uzyska dostp do kadej czci systemu
operacyjnego lub jego danych bez odpowiedniej autoryzacji. Oczywicie, niewielka
szansa nie oznacza, e taka szansa w ogle nie istnieje.
G Podpis Authenticode jest to cz programu Internet Explorer. Dokonuje weryfikacji,
94
korzystaj podczas pracy z warstw ochrony. Innymi sowy, jeeli cracker przeamaby
jedn warstw zabezpiecze, inna istniaaby nadal, by zapobiec dalszej ingerencji
w system. CryptoAPI to warstwa ochrony dodana do wszystkich innych istniejcych
ju warstw zabezpiecze. Suy do powstrzymania innych od dalszego penetrowania
twojego systemu zabezpiecze.
G Cyfrowe podpisy-certyfikaty cyfrowy podpis dziaa tak, jak sugeruje jego nazwa.
Nadawca dokumentu lub pliku wykonywalnego podpisuje go. Sprawdzajc ten podpis,
upewniasz si, e dzieo jest autentyczne. By wdroy ten poziom ochrony, uyjesz
serii kluczy prywatnych i publicznych.
G Uwierzytelnianie rozproszonych hase (DPA) udostpniona tajna metoda
95
96
do architektury maszyny klienta. System Windows 95/98 nie udostpnia takiego samego poziomu
zabezpiecze, jak Windows 2000, wic bdziesz pracowa bez dodatkowych zabezpiecze pod
Windows 95/98. Jednake, gdy Windows 95/98 udostpnia mechanizm zabezpiecze, uywa tego
samego zestawu parametrw, co Windows 2000, wic jeden modu zabezpiecze bdzie pracowa
pod kontrol obydwu systemw operacyjnych. (W innych przypadkach, bdziesz definitywnie
dy do korzystania z oddzielnego moduu przeznaczonego wycznie dla Windows 2000, by
lepiej wykorzysta zaawansowane mechanizmy zabezpieczajce). Problemem dla programisty
jest zapewnienie spjnego poziomu zabezpiecze wraz z redukcj ruchu w sieci. Komponenty
klienckie redukuj ruch w sieci, poniewa to klient wykonuje wiksz cz przydzielonej pracy.
Komponenty serwerowe s za bardziej bezpieczne, gdy to zwykle serwer dysponuje lepszymi
i bardziej wydajnymi mechanizmami zabezpieczajcymi.
Windows 2000 naturalnie korzysta z zabezpiecze obiektw. Co wynika z takiego schematu
zabezpiecze? W pierwszej kolejnoci naley zdefiniowa okrelenie obiekt. Windows 2000
oraz Windows 95/98 uywaj tego pojcia raczej luno. To prawda, e dua ilo obiektw
skrywa si w systemie, lecz moesz zauway, e nie pasuj one dokadnie do sposobu uycia
tego okrelenia przez C++. W kolejnych czciach tego rozdziau, przyjrzymy si obiektom jako
hermetycznym tworom zawierajcymi kod i dane potrzebne do wykonania konkretnego zadania
zwizanego z bezpieczestwem. Innymi sowy, kady obiekt zabezpiecze jest zamknitym
Uwaga
Windows 2000 obsuguje o wiele wicej wywoa funkcji zabezpiecze
interfejsu Windows API ni Windows 95/98, poniewa jego mechanizmy
zabezpiecze s lepsze i bardziej wydajne. Prawdopodobnie przekonasz
si, e zarzdzanie przez ciebie zabezpieczeniami podczas korzystania z
Windows 95/98 jest powanie ograniczone, ze wzgldu na brak obsugi
mechanizmw zabezpiecze systemu Windows 2000. Na przykad, nie
moesz uywa funkcji
pod Windows 95/98.
Wikszo wywoa etonw dostpu, ktrym przyjrzymy si w
nastpnej czci rozdziau, rwnie nie bdzie dziaa. Najlepszym
sposobem, by przekona si, czy dane wywoanie jest obsugiwane,
jest prba jego uycia. Otrzymanie bdu
ERROR_CALL_NOT_IMPLEMENTED (value 120), bdzie sygnaem, e
moesz z niego korzysta jedynie pod Windows 2000.
elementem zaprojektowanym do speniania okrelonej roli. (W wielu miejscach w Windows
95/98 i Windows 2000, Microsoft wybra uywanie penej wersji obiektu C++, poniewa wdraa
on potrzebny zestaw funkcji jako cz MFC. Jednake, podczas lektury dokumentacji Microsoftu
lub tego rozdziau nie powiniene polega na tym, e definicja obiektu oznacza cisy obiekt C++
myl o obiektach bardziej w kategoriach COM tego sowa).
wiadomo, e wszystko jest obiektem, uatwia zrozumienie pojcia zabezpiecze przynajmniej na pocztku. Jednake, same obiekty to tylko pocztek zagadnienia. Druga strona
rwnania zabezpiecze to uytkownicy. Uytkownik uzyskuje dostp do obiektu, wic zabezpieczenia w Windows to kwestia porwnywania ochrony obiektw z prawami dostpu uytkownika. Jeeli uytkownik posiada wystarczajce prawa (prawa, ktre speniaj wymagania
obiektu lub je przewyszaj), wtedy moe on uywa tego obiektu. Dokumentacja Windows
97
okrela poziom ochrony obiektu jako deskryptor zabezpiecze. Jest to struktura, ktra informuje
system zabezpiecze o tym, jakich praw potrzebuje uytkownik, by uzyska dostp do obiektu.
Podobnie, uytkownik posiada eton dostpu, ktry jest inn struktur, informujc system zabezpiecze o tym, jakie prawa posiada uytkownik w konkretnej sytuacji. eton jest waciwym
okreleniem, poniewa uytkownik przekazuje go systemowi Windows 2000 w zamian za dostp
do obiektu. (Potraktuj obiekt jako autobus, a system Windows 2000 jako jego kierowc i uytkownika, ktry przedstawia wymagany eton do kontroli). Rysunek 3.1 pokazuje obydwie te struktury.
To jest najkrtszy przegld zabezpiecze zarwno pod Windows 95/98, jak i Windows 2000.
wiadomo tego, e istniej obiekty zabezpiecze i etony uytkownika, uatwi ci zrozumienie funkcji zabezpiecze interfejsu Windows API. Kolejne podrozdziay pozwol przyjrze si
bardziej szczegowo, czym dokadnie jest eton i jak dziaa. Przyjrzymy si rwnie deskryptorowi zabezpiecze. Nie musisz zna tych informacji, by wdroy system zabezpiecze, korzystajc z technologii ActiveX, jeeli twoim jedynym celem jest Internet, lecz ta wiedza moe
pomc zaprojektowa kontrolki ActiveX bardziej oglnej natury i o wikszych moliwociach.
etony dostpu
Istniej dwa sposoby patrzenia na prawa uytkownika pod Windows; obydwa s zwizane
z obiektami w takiej czy innej formie. eton dostpu uytkownika posiada identyfikator zabezpiecze (SID) sucy do jego identyfikacji w sieci co jak posiadanie numeru konta. eton
Rysunek 3.1.
etony dostpu okrelaj prawa uytkownikw, podczas gdy deskryptory
zabezpiecze definiuj poziom zabezpiecze procesu
98
uytkownika, ktry jest identyfikowany przez SID, mwi o tym, do jakich grup naley uytkownik
i jakie uprawnienia posiada. Kada grupa posiada rwnie identyfikator SID, wic SID uytkownika zawiera odwoania do identyfikatorw SID grup, do ktrych naley uytkownik, a nie
do penego zestawu praw dostpu grupy. Zwykle uywaby narzdzia Uytkownicy i hasa
w Windows 2000, by zmieni zawarto tego etonu dostpu.
99
Wskazwka
Warto przejrze plik pomocy interfejsu Windows API udostpniony
wraz z twoim egzemplarzem pakietu Visual C++, by dowiedzie si,
jakie funkcje API zwizane z identyfikatorami SID i etonami tam
znajdziesz. Przykady funkcji zwizanych z SID obejmuj:
i
. Dowiesz si rwnie, e funkcje
i
maj zasadnicze znaczenie dla prawidowej pracy
zabezpiecze z kadym jzykiem, ktrego uywasz.
100
jest pobranie uchwytu etonu wraz z okrelonymi prawami przypisanymi do niego. Na przykad,
jeeli chcesz sprawdzi konto uytkownika, musisz mie przywilej TOKEN_QUERY. (Twj eton
dostpu musi zawiera prawa, ktrych dasz od systemu dlatego administrator moe uzyska dostp do etonu, a pozostali uytkownicy nie). Wszystkie zmiany dotyczce kont
uytkownikw wymagaj posiadania przywileju TOKEN_ADJUST_PRIVILEGES. Istnieje
spora liczba tych praw dostpu, wic nie bdziemy omawia ich wszystkich.
Kiedy masz ju uchwyt do etonu dostpu, musisz zdecydowa, co z nim zrobi. Jeeli zdecydowae, e chcesz zmieni poziom uprzywilejowania uytkownika w celu wykonania jakiego
zadania, potrzebujesz identyfikatora LUID tego przywileju, ktry chcesz zmieni. Wszystkie
pojawiaj si w pliku WINNT.H z przedrostkiem SE_. Na przykad, przywilej SE_SYSTEM_PROFILE_NAME pozwala uytkownikowi zebra informacje profilujce odnonie do caego systemu. Niektre z wartoci SE nie s w najmniejszym stopniu zwizane z uytkownikami (np.
SE_LOCK_MEMORY_NAME pozwala procesowi zablokowa dostp do pamici systemu).
Uzyskujesz identyfikator LUID dla przywileju, uywajc funkcji )(* .
Teraz moesz poczy informacje uzyskane do tej pory, by dokona zmiany przywileju. Oglnie, uyjesz funkcji +(* , by przeprowadzi potrzebn zmian.
101
Deskryptory zabezpiecze
Przyjrzyjmy si deskryptorowi zabezpiecze. Skada si on z piciu gwnych czci. Pierwsza
z nich to lista znacznikw, ktre informuj o numerze modyfikacji deskryptora, jego formacie
i stanie ACL (listy kontroli dostpu).
Nastpne dwie czci zawieraj identyfikatory SID. Identyfikatory SID waciciela informuj
o tym, kto jest wacicielem obiektu. To nie musi by konkretny uytkownik; Windows pozwala
uywa rwnie grupowych identyfikatorw SID. Jedynym czynnikiem ograniczajcym jest
to, e identyfikator grupowy SID musi pojawi si w etonie dostpu osoby zmieniajcej wpis.
Grupowy identyfikator SID umoliwia grupie ludzi posiadanie obiektu na wasno. Z dwch
identyfikatorw SID, jedynie SID waciciela jest wany w Windows. Grupowy SID jest uywany
jako cz rodowiska zabezpiecze komputerw Macintosh i POSIX.
Dwie ostatnie czci zawieraj listy ACL. Systemowa lista kontroli dostpu (SACL) steruje
mechanizmem inspekcji systemu Windows. Za kadym razem, gdy uytkownik lub grupa uzyskuje dostp do obiektu, a inspekcja dla tego obiektu jest wczona, Windows dokonuje wpisu
w dzienniku zdarze. Poufna lista kontroli dostpu (DACL) kontroluje dostp do obiektu (kto
ma prawo z niego korzysta). Moesz do okrelonego obiektu przypisa zarwno pojedynczych
uytkownikw, jak i cae grupy.
Uwaga
Istniej waciwie dwa rodzaje deskryptorw zabezpiecze: bezwzgldny
i wzgldny. Bezwzgldny deskryptor zabezpiecze zawiera waciw
kopi kadego ACL znajdujcego si w jego strukturze. Ten rodzaj
deskryptora zabezpiecze jest przeznaczony do uycia z obiektami, ktre
wymagaj specjalnej obsugi. Wzgldne deskryptory zabezpiecze
zawieraj jedynie wskanik do SACL i DACL. Ten rodzaj deskryptora
oszczdza pami i zmniejsza czas potrzebny do zmiany praw grupy
obiektw. Uyby go w sytuacji, gdy w konkretnej grupie wszystkie
obiekty wymagayby tego samego poziomu zabezpiecze. Na przykad,
moesz uy tej metody do zabezpieczenia wszystkich wtkw
w pojedynczej aplikacji. System Windows wymaga zamiany wzgldnych
deskryptorw zabezpiecze na bezwzgldne, zanim bdziesz mg je
zapisa lub przenie do innego procesu. Kady deskryptor, ktry
pobierasz, uywajc funkcji API, jest typu wzgldnego musisz
przekonwertowa, zanim bdziesz mg go zapisa. Konwersji moesz
dokona za pomoc dwch funkcji API: ! i
!"
#.
ACL skada si z dwch rodzajw wpisw. Pierwszym z nich jest nagwek, ktry zawiera
liczb rekordw kontroli dostpu (ACE) zawartych w ACL. Windows korzysta z tej liczby
jako metody okrelania, kiedy osigany jest koniec listy ACE, poniewa nie istnieje aden rekord struktury koczcej lub jakikolwiek sposb dokadnego okrelenia rozmiaru kadego ACE
w strukturze. Drugim wpisem jest tablica wpisw ACE.
102
Ostrzeenie
Nigdy nie dokonuj bezporednich zmian zawartoci ACL lub SID,
poniewa Microsoft moe zmieni ich struktur w przyszych wersjach
systemu Windows. Interfejs Windows API oferuje bogactwo funkcji
umoliwiajcych zmiany w tych strukturach. Zawsze uywaj funkcji API
do wykonywania dowolnego zadania dotyczcego kadego rodzaju
struktury, by zmniejszy liczb zmian w strukturze twojej aplikacji.
Wic, co to jest ACE? ACE okrela prawa do obiektu dla pojedynczego uytkownika lub grupy.
Kady ACE posiada nagwek okrelajcy rodzaj, rozmiar i znaczniki dla ACE. Dalej mamy
mask dostpu, ktra okrela prawa posiadane przez uytkownika lub grup do danego obiektu.
Na kocu znajduje si wpis przeznaczony na identyfikator SID uytkownika lub grupy.
Istniej cztery rne rodzaje nagwkw ACE (trzy z nich s uywane w biecej wersji systemu Windows). Rodzaj access-allowed pojawia si w DACL i przyznaje prawa uytkownikowi. Moesz uy go, by doda do praw, ktre uytkownik ju posiada do danego obiektu,
kolejne uprawnienie wedug wzorca jeden po drugim. Powiedzmy, e nie chcesz, aby uytkownik zmienia czas systemowy, eby mona byo zachowa synchronizacj czasu na wszystkich maszynach znajdujcych si w sieci. Jednake, moe zdarzy si sytuacja taka jak zmiana
czasu kiedy uytkownik potrzebowaby tego prawa. Moesz uy access-allowed ACE, by
w tej konkretnej sytuacji przyzna uytkownikowi to prawo. Access-denied ACE odbiera uprawnienia, ktre uytkownik posiada do obiektu. Moesz go uy do odmowy dostpu do obiektu
podczas szczeglnych zdarze w systemie. Na przykad, moesz odebra prawa dostpu do
zdalnego terminala podczas przeprowadzania jego modernizacji. Trzeci rodzaj ACE system
audit wsppracuje z SACL. Okrela, jakie zdarzenia naley kontrolowa w przypadku konkretnego uytkownika lub grupy. Ostatni rodzaj ACE currently-unused to ACE alarmu systemowego.
Pozwala albo SACL albo DACL wszcz alarm, gdy pojawi si okrelone zdarzenie.
Wskazwka
Warto przejrze plik pomocy interfejsu Windows API, by dowiedzie si,
jakie prawa dostpu udostpnia system Windows. Powiniene rwnie
przyjrze si rnym strukturom uywanym do uzyskiwania tych
informacji. Szczeglnie wane s struktury ACL i ACE. Poszukaj
znacznikw ACE okrelajcych sposb reakcji obiektw zawartych w
kontenerze. Na przykad, przyjrzyj si staej
CONTAINER_INHERIT_ACE, ktra umoliwia podkatalogom
dziedziczenie ustawie zabezpiecze od katalogu nadrzdnego.
103
piecze nie s uoglnione. Nie moesz uy standardowego zestawu funkcji, by uzyska do nich
dostp. Faktycznie, jest pi klas deskryptorw zabezpiecze, z ktrych kada uywa innego
zestawu wywoa deskryptora do uzyskania pocztkowego dostpu do obiektu. (Musisz posiada
przywilej SE_SECURITY_NAME, by mc uywa ktrej z tych funkcji).
G Pliki, katalogi, potoki, zcza poczty uyj funkcji % oraz
%, by uzyska dostp do obiektu tego rodzaju.
Uwaga
Jedynie system plikw NTFS pod Windows 2000 zapewnia ochron.
System plikw VFAT udostpnia je w mniejszym stopniu pod Windows
95/98. Nie moesz przydzieli lub uzyska deskryptorw zabezpiecze
dla systemw plikw, takich jak FAT czy HPFS pod odpowiednimi
systemami operacyjnymi. System plikw FAT nie udostpnia adnej
rozszerzonej przestrzeni atrybutw, ktrej obecno jest warunkiem
koniecznym do implementacji mechanizmw zabezpiecze.
System plikw HPFS udostpnia rozszerzon przestrze atrybutw, lecz
nie obejmuj one adnych funkcji zabezpieczajcych. Wic ze wszystkich
opisanych systemw plikw, NTFS jest najbardziej bezpieczny.
Jednake, nigdy nie zakadaj, e system plikw jest cakowicie
bezpieczny. Istniej programy narzdziowe (dostpne w Internecie), ktre
umoliwiaj odczyt zawartoci plikw znajdujcych si na partycji NTFS,
nawet wtedy, gdy uytkownik nie jest zalogowany do systemu Windows
2000.
G Procesy, wtki, etony dostpu i obiekty synchronizacji potrzebujesz funkcji
-!+ i -!+, by uzyska dostp do tych
zaczynaj si od Reg, tak jak inne funkcje charakterystyczne dla rejestru, ktre
obsuguje system Windows.
G Obiekty usugi wykonawczej funkcje /!+ oraz
!+ pracuj z tym obiektem. Z pewnych powodw, adna
104
1. Pobierz deskryptor
2. Usu konkretny komponent
3. Zmodyfikuj zawarto tego komponentu
W celu zmiany deskryptora zabezpiecze, moesz odwrci ten proces. Innymi sowy, uywasz
funkcji takiej jak , by doda nowy ACE do ACL, nastpnie korzystasz z
0
), by dokona zmiany SACL w deskryptorze i na koniec zapisa sam deskryptor, uywajc funkcji, takiej jak % (zakadajc, e chcesz zmodyfikowa obiekt typu plik).
105
pliku, a inny do jego zapisu, a uytkownik prosi o te dwa prawa (do zapisu i odczytu pliku),
Windows bdzie widzia obydwa wpisy ACE jako przyznajce dane uprawnienia.
Wskazwka
System Windows przestanie czyta wpisy ACE po spenianiu dania
uytkownika odnonie do dostpu. Wszystkie swoje wpisy access-denied
ACE zawsze umieszczaj na pocztku listy, by unikn powstania
jakiejkolwiek moliwoci naruszenia zabezpiecze.
Musisz rwnie dba o porzdkowanie grupowych identyfikatorw SID. Prawa, ktre nabywa
uytkownik z tytuu przynalenoci do rnych grup, rwnie s kumulacyjne. Oznacza to, e
uytkownik nalecy do dwch grup, z ktrych jedna posiada dostp do danego pliku, druga
takiego prawa nie ma, bdzie mia dostp do tego pliku pod warunkiem e grupa majca
prawo dostpu znajduje si wczeniej na licie.
Oczywicie, moesz prbowa znale najlepszy ukad grup. Wraz ze wzrostem liczby grup
i poszczeglnych praw, ktre posiadaj konkretni uytkownicy, moliwo niezamierzonego
naruszenia zabezpiecze rwnie wzrasta. To wanie dlatego naley ostronie tworzy nowe
grupy i ogranicza ich uytkownikom prawa dostpu.
. Istniej pewne ograniczenia odnonie do poziomu przedstawiania udostpnionego obecnie przez system Windows. Na przykad,
106
nie s obsugiwane poczenia TCP/IP, wic bdziesz zmuszony skorzysta z innych metod
weryfikacji tego, czy uytkownik posiada odpowiedni poziom praw dostpu.
Innym zagadnieniem zwizanym z ochron jest zabezpieczenie samego serwera. Co powstrzyma
uytkownika, ktry wywouje program Excel z poziomu programu Word przed zrobieniem czego
z Excelem, co uszkodzi sam serwer? Zapewnienie, e kwestie zabezpiecze s realizowane, nie
jest trudne w przypadku plikw oraz innych rodzajw nazwanych struktur, poniewa serwer
automatycznie przydziela tym obiektom deskryptor zabezpiecze. (Serwer DDE, taki jak Excel,
nie musiaby nic robi w tej sytuacji, poniewa plik znajduje si pod kontrol serwera plikw).
Jednake, wiele prywatnych obiektw DDE lub serwerw aplikacji nie jest nazwanych i wymaga
specjalnej ochrony. Windows udostpnia funkcje API, by wspomc ochron samego serwera.
Na przykad, funkcja !+ pozwala serwerowi przydzieli deskryptor
zabezpiecze kademu ze swoich prywatnych obiektw powiedzmy, wtkowi lub innemu
procesowi. Deskryptor zabezpiecze ma za zadanie powstrzymanie wszystkich innych (poza
serwerem, oczywicie) przed uzyskaniem dostpu do obiektw prywatnych.
107
Wskazwka
COM+ nie uchroni ci przed dodawaniem do komponentu kodu
przeznaczonego do obsugi mechanizmu zabezpiecze opartego na rolach,
on tylko umoliwia tworzenie komponentu bez dodawania kodu. Jeeli
dodajesz kod do swojego komponentu, by wymusi korzystanie z
zabezpiecze opartych na rolach, komponent uywa zaprogramowanej
kontroli zabezpiecze. Z drugiej strony, jeeli dasz administratorowi
pen kontrol nad zabezpieczeniami i nie dodasz adnego kodu,
komponent uyje zabezpiecze deklaracyjnych.
G atwiejsze do zrozumienia opieranie zabezpiecze na rolach pozwala administratorowi
Z mechanizmu tego korzysta si, aby ledzi poczynania kadego, komu uda si wama
do twojego systemu. Zabezpieczenia oparte na rolach pozwalaj dokonywa inspekcji
zabezpiecze na poziomie metody, zamiast na poziomie obiektu. Uzyskasz lepszy
obraz tego, co cracker prbowa zrobi z twoim komponentem, i bdziesz mia wiksz
moliwo reakcji.
Wskazwka
W tym rozdziale przygldamy si zabezpieczeniom opartym na rolach na
poziomie teorii. W wielu sytuacjach administrator moe nie mie pojcia o
sposobie dziaania tego mechanizmu lub o jego wpywie na bezpieczestwo
komponentw, co oznacza, e by moe bdziesz musia udostpni
108
Mechanizm zabezpiecze opartych na rolach moe rwnie zapewni pewn ochron, ktrej
zabezpieczenia na poziomie obiektu tak naprawd nie obejmuj. Zwykle, listy uwierzytelniajce uytkownika s sprawdzane na poziomie aplikacji. Oznacza to, e dostp uytkownikowi
jest przyznawany tylko raz. Powstay w wyniku tego eton dostpu jest wykorzystywany do
uzyskiwania dostpu do pozostaych zasobw. W wiecie monolitycznych aplikacji, gdzie
pojedynczy serwer udostpnia uytkownikowi wszystko to, czego potrzebuje, ten rodzaj weryfikacji zabezpiecze niele si sprawdza. Jednake, co si stanie, gdy pocztkowa aplikacja
odwoa si do komponentu na jednym serwerze, a nastpnie okae si, e ten komponent musi
odwoa si do innego komponentu znajdujcego si na drugim serwerze? Dostp uytkownika do pierwszego serwera jest weryfikowany podczas procesu uruchamiania aplikacji (stanowi
jeden z jego etapw), lecz co z dostpem do drugiego serwera? Niestety, moe wtedy doj do
naruszenia integralnoci zabezpiecze pomidzy dwoma serwerami kolejna dziura w zabezpieczeniach, o ktrych bya mowa wczeniej.
Windows 2000 oferuje tzw. granic zabezpiecze (security boundary) moesz wymusi
sprawdzanie zabezpiecze albo na poziomie procesu (aplikacji), albo na poziomie komponentu.
Oznacza to, e jeste w stanie sprawdza listy uwierzytelniajce uytkownika za kadym razem,
gdy ma miejsce odwoanie do kolejnego komponentu. To zapewnia, e nie pojawi si moliwo
naruszenia zabezpiecze midzy dwoma serwerami. Dodatkowo, oprcz lepszej kontroli zabezpiecze, dostp na poziomie komponentu oznacza, e biece informacje o zabezpieczeniach
s wczane jako cz informacji dotyczcych kontekstu wysyanych do twojego komponentu
podczas wywoania. W sumie, gdy wymuszasz sprawdzanie zabezpiecze na poziomie komponentu, moe on uy zabezpiecze jako jednej z metod okrelania sposobu odpowiedzi na danie
uytkownika, czynic komponent bardziej elastycznym i lepiej przystosowanym do reakcji na
zmienne warunki w sieci. Uycie kontroli zabezpiecze na poziomie komponentu pociga za
sob jednak redukcj wydajnoci aplikacji i oznacza, e uytkownik bdzie spdza wicej czasu
w oczekiwaniu na reakcj ze strony aplikacji. W dodatku, ronie nieznacznie ruch w sieci, co
moe by problemem w sieciach, i tak ju zatoczonych, eby zapewni odpowiedni przepustowo potrzebn do wykonywania niezbdnych dla firmy zada.
Uwaga
Aplikacje bibliotek COM+ zawsze korzystaj z zabezpiecze na poziomie
komponentu. Nie moesz wczy mechanizmu zabezpiecze na poziomie
procesu dla aplikacji bibliotek, poniewa zawsze polegaj one na rolach
co oznacza weryfikacj dostpu na poziomie komponentu.
Uwierzytelnianie i role
Uwierzytelnianie i zabezpieczenia oparte na rolach nie wykluczaj si wzajemnie. Moesz tworzy komponenty oraz instalowa je w taki sposb, by mona byo uywa jednego lub obydwu
sposobw weryfikacji uytkownika oraz poziomu dostpu do komponentu, jaki posiadaj. Trzeba
jednak pamita, e proces weryfikacji przebiega inaczej w zalenoci od sposobu konfiguracji
109
to ustawienie zabezpiecze, ktre mona okreli jako nie obchodzi mnie ta kwestia.
Poprzez wyczenie obydwu poziomw kontroli zabezpiecze, umoliwiasz wszystkim
dostp do wszystkich zasobw, ktre komponent ma do zaoferowania. W wikszoci
sytuacji, zobaczysz takie ustawienie w przypadku komponentw przeznaczonych
cakowicie do uytku publicznego. Na przykad, moesz uy tego ustawienia dla
komponentw, ktre obsuguj wykonywanie jakich przyziemnych zada dla twojej
witryny WWW. Oczywicie, taki komponent powinien przej rygorystyczne testy
pod ktem obecnoci jakichkolwiek dziur w zabezpieczeniach i dodatkowo musi mie
ograniczony dostp do zasobw sieciowych.
Interfejs ISecurityCallContext
Interfejs ISecurityCallContext umoliwia dostp do danych o zabezpieczeniach dla konkretnego
komponentu w danym kontekcie. Dla ciebie jako programisty oznacza to, e dowiadujesz si,
w jakiej roli znajduje si uytkownik i jakie s jego prawa. Fakt, e interfejs ten jest przeznaczony
dla okrelonego kontekstu, oznacza, e moesz wycznie pracowa z daniem powizanym
110
Dodatkowo, oprcz informacji z kolekcji kontekstu wywoania zabezpiecze, interfejs ISecurityCallContext pozwala okreli, czy program wywoujcy lub uytkownik znajduj si w konkretnej roli. To jest rodzaj informacji, ktrego uywaby do uznawania lub odrzucania da
dostpu do okrelonych metod komponentu. Moesz rwnie okreli, czy zabezpieczenia oparte
na rolach s wczone dla tego komponentu (czy s udostpniane przez serwer).
Teraz, gdy znasz ju korzyci stosowania interfejsu ISecurityCallContext, przyjrzyjmy si dostpnym metodom. Tabela 3.3 udostpnia list metod, z ktrych bdziesz najczciej korzysta.
Tabela 3.3. Podsumowanie metod interfejsu ISecurityCallContext
Metoda
Opis
111
Mechanizm wyrwnywania
obcienia komponentu (CLB)
Niestety, obecna strategia komponentowa Microsoftu nie potrafi dostosowa si do wymogw
i potrzeb duych korporacji lub duych obcie, tak charakterystycznych dla Internetu. Co
si stanie, jeeli aplikacja, ktr tworzysz, nie uruchomi si na pojedynczym serwerze, nie zadziaa
dla kadego w firmie, bez wzgldu na to, jak bardzo wydajn j uczynisz? Pomyl, co mogoby
si sta, gdyby twoja elektroniczna witryna handlowa nagle przestaa dziaa z powodu obcienia
wywoanej przez sza witecznych zakupw. Co takiego przydarzyo si ju niektrym firmom.
Krtko mwic, komponenty niezbyt dobrze dostosowuj si do obecnych wymaga zwizanych
z moliwymi obcieniami, jak rwnie z du ich zmiennoci. W tym momencie, powiniene
si martwi nie tylko o dostrojenie samej aplikacji, ale rwnie o sposb jej pracy na wielu
serwerach. Okazuje si, e moliwo skalowania jest jedn z najwaniejszych przyczyn uywania
COM+. By moe, e twoja aplikacja bdzie musiaa dziaa na wielu serwerach, lecz uycie
COM+ pozwala uytkownikowi sdzi, e jego wersja aplikacji jest uruchamiana na tej samej
maszynie. Technologia ta to wyrwnywanie obcienia komponentu (CLB) moliwo przydziau uytkownikw do serwera, ktry najlepiej potrafi obsuy dania ich komponentw.
Uwaga
CLB nie sta si czci Windows 2000, lecz jest wan czci COM+.
Microsoft zdecydowa si na usunicie tego mechanizmu ze swojego
systemu operacyjnego i udostpnienie go w postaci oddzielnego produktu
(CLB wchodzi w skad pakietu Microsoft Application Center 2000). Ta
cz rozdziau opiera si na wersji mechanizmu CLB, ktry pocztkowo
firma Microsoft udostpniaa wraz z Windows 2000, a ktra pniej
112
W kolejnych podrozdziaach przyjrzymy si pewnym zagadnieniom pracy z aplikacjami wieloserwerowymi. W pierwszej czci zostan omwione cele, jakie CLB prbuje osign.
W kolejnej przyjrzymy si teorii kryjcej si za wewntrznymi metodami pracy mechanizmu
wyrwnywania obcienia. Na koniec przyjrzymy si niesprawnym serwerom. COM+ udostpnia pewne techniki suce do rozwizywania tego problemu.
113
Uwaga
Na razie typowa konfiguracja mechanizmu wyrwnywania obcienia
moe skada si z jednego routera oraz z maksymalnie omiu serwerw
(zwanych klastrem aplikacji). Kombinacja COM i MTS pozwala tym
maszynom pracowa razem w taki sposb, e uytkownik zyskuje
moliwie najszybsz odpowied od aplikacji rozproszonej. Oczywicie,
pojawi si takie aplikacje, ktre bd wymaga wikszej liczby
serwerw (ni wspomniane osiem) i wicej ni jednego routera, by mc
prawidowo zarzdza caoci. W zwizku z tym, firma Microsoft na
pewno rozszerzy moliwoci mechanizmu wyrwnywania obcienia.
Nie naley sdzi, e wyrwnywanie obcienia bdzie miao wpyw na ca aplikacj. Cz
twojej aplikacji moe by zainstalowana na serwerze, inna na maszynie uytkownika i jeszcze
jedna na specjalizowanym serwerze w celu uzyskania moliwoci dostpu do bazy danych.
Wyrwnywanie obcienia dziaa na poziomie klasy. Musisz jasno okreli klas, ktra ma
podlega wyrwnywaniu obcienia, i nastpnie zainstalowa j na serwerze. W momencie
gdy klient odwoa si do komponentu zawierajcego tak klas, system Windows 2000 widzc,
e ma ona podlega dziaaniu wyrwnywania obcienia, bdzie j odpowiednio obsugiwa.
Podczas tworzenia klas COM+ obsugujcych wyrwnywanie obcienia trzeba jednak pokona
kilka przeszkd. Poniewa zasoby serwera s jednym z czynnikw wpywajcych na efektywno,
powiniene uywa tej techniki jedynie w odniesieniu do krtko yjcych klas. Na przykad,
klasa, ktra po uzyskaniu odpowiedzi serwera na zapytanie skierowane do bazy danych przekazuje
jego wyniki uytkownikowi, a nastpnie ulega autodestrukcji pasuje do tej kategorii. W dodatku, klasa nie moe zakada, e zostanie wywoana przez okrelon maszyn. Oznacza to, e
nie moe polega na zasobach (takich jak pliki) znalezionych na tej konkretnej maszynie. Klienty
114