You are on page 1of 47

IDZ DO

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

Rozdzia 2.Podstawy COM wersja skrcona......................................... 35


Tworzenie obiektu ............................................................................................................ 36
Serwer typu in-Process ............................................................................................... 37
Serwery typu Out-of-Process ..................................................................................... 38
Wielokrotne uycie komponentu................................................................................ 53
Wywoywanie metod interfejsu ........................................................................................ 54
Interfejs IUnknown..................................................................................................... 55
Interfejsy ActiveX ...................................................................................................... 56
Uywanie interfejsw ActiveX .................................................................................. 58
Zliczanie odwoa ...................................................................................................... 60
Wymagania dotyczce Rejestru........................................................................................ 61
Praca z apartamentami i wtkami ..................................................................................... 66
Rodzaje wtkw ......................................................................................................... 66
Rodzaje apartamentw i przydziaw ........................................................................ 68
Wymagania rozrzdu.................................................................................................. 71

Rozdzia 3.Wyjtkowe cechy COM+............................................................ 73


COM+ i automatyzacja..................................................................................................... 75

COM+. Kompendium programisty


Aktywacja w czasie trwania (JIT) .............................................................................. 76
Przetwarzanie transakcji ............................................................................................. 77
Kontekst COM+ ......................................................................................................... 78
Rozdzielacze zasobw ...................................................................................................... 80
Meneder wyrwnywania zasobw (CRM) ..................................................................... 80
Ujcia zdarze COM+ ...................................................................................................... 82
Katalog COM+ ................................................................................................................. 82
Pula obiektw ................................................................................................................... 83
Zabezpieczenia oparte na rolach....................................................................................... 83
Standardowe mechanizmy zabezpiecze Windows ................................................... 84
Zabezpieczenia oparte na rolach .............................................................................. 105
Mechanizm wyrwnywania obcienia komponentu (CLB) ......................................... 110
Cele mechanizmu wyrwnywania obcienia.......................................................... 111
Jak dziaa mechanizm wyrwnywania obcienia? ................................................. 112
Radzenie sobie z niesprawnymi serwerami i routerami ........................................... 113

Rozdzia 4.Przegld MTS............................................................................ 115


Co to jest transakcja? ...................................................................................................... 116
Wyjanienie pojcia transakcji ................................................................................. 117
MTS i COM+ ........................................................................................................... 118
Przebieg transakcji.......................................................................................................... 122
Przegld obiektw MTS ........................................................................................... 122
Okrelanie zdarze transakcji................................................................................... 123
Rozwaania na temat zdalnego uruchamiania.......................................................... 124
Rozwaania na temat podziau obcienia MTS...................................................... 125
Niezawodno aplikacji COM+...................................................................................... 125
Problemy zwizane z COM/DCOM ............................................................................... 127
Transakcje i bazy danych................................................................................................ 128
Obsuga rnych baz danych.................................................................................... 129
Cechy baz danych MTS............................................................................................ 130
Tworzenie baz danych z pomoc MTS .................................................................... 131
MTS i COM+ ........................................................................................................... 133
Rozwaania na temat zabezpiecze................................................................................ 133
Koordynator transakcji rozproszonych (MS-DTC) ............................................................ 135
MS-DTC w akcji ...................................................................................................... 135
Rozproszona cz MS-DTC ................................................................................... 135

Rozdzia 5.Przegld MSMQ........................................................................ 137


Przegld asynchronicznej komunikacji MSMQ ............................................................. 138
Routing wiadomoci................................................................................................. 139
Rodzaje dostpu do dysku ........................................................................................ 141
Gwarancje dostarczenia............................................................................................ 142
Bezpieczestwo ........................................................................................................ 144
MSMQ i MTS........................................................................................................... 149
Przegld kolejek wiadomoci ......................................................................................... 152
Rodzaje kolejek wiadomoci.................................................................................... 152
Kolejki wiadomoci dla aplikacji rozczonych....................................................... 154
Przesyanie wiadomoci jak to wyglda od strony serwera?..................................... 156
Czci skadowe wiadomoci ................................................................................... 156
Manipulacja kolejk i wiadomociami od strony COM........................................... 156
Obsuga bdw MSMQ........................................................................................... 160
Active Directory/Baza danych MQIS............................................................................. 161
Wymagania dotyczce instalacji bazy danych i ocena rozmiaru................................... 163
Rodzaje serwerw MSMQ w przedsibiorstwie ...................................................... 163

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

Rozdzia 6.Rodzaje aplikacji....................................................................... 173


Rnice midzy aplikacjami COM+............................................................................... 174
Komponenty serwerowe........................................................................................... 176
Korzyci wynikajce z uycia COM+...................................................................... 177
Atrybuty, kontekst i stan........................................................................................... 178
Cztery poziomy zmiany komponentu....................................................................... 180
Zagadnienia programowania........................................................................................... 186
Wydajno ................................................................................................................ 187
Bezpieczestwo ........................................................................................................ 187
Rodzaje aplikacji COM+ ................................................................................................ 189
Aplikacje serwerowe ................................................................................................ 189
Aplikacje biblioteczne .............................................................................................. 190
Aplikacje proxy ........................................................................................................ 190
Aplikacje preinstalowane ......................................................................................... 191
Rozwaania na temat aplikacji rozczonych ................................................................. 191
Oddzielna praca z MTS i MSMQ ................................................................................... 192

Rozdzia 7.Aplikacja sterowana przez transakcje .................................... 195


Instalacja SQL Server 6.5 Developer Edition................................................................. 197
Tworzenie zdalnego narzdzia diagnostycznego i programistycznego dla SQL Servera .. 202
Definiowanie aplikacji.................................................................................................... 209
Przegld zada aplikacji ........................................................................................... 211
Przegld bazy danych ............................................................................................... 212
Szczegowy przegld poszczeglnych tabel........................................................... 214
Tworzenie bazy danych i powizanych tabel ........................................................... 218
n-warstwowy widok projektu ................................................................................... 229
Tworzenie komponentw serwerowych ......................................................................... 231
Tworzenie powoki komponentu.............................................................................. 232
Dodanie kodu komponentu....................................................................................... 244
Rejestracja i instalacja komponentu na serwerze ..................................................... 252
Tworzenie komponentu klienckiego............................................................................... 263
Tworzenie powoki komponentu.............................................................................. 263
Dodanie kodu komponentu....................................................................................... 266
Tworzenie prostej aplikacji do testowania katalogu ................................................ 270
Tworzenie aplikacji testowej .......................................................................................... 280
Tworzenie powoki aplikacji .................................................................................... 281
Definiowanie interfejsu uytkownika....................................................................... 283
Dodanie kodu aplikacji............................................................................................. 292
Testowanie aplikacji COM+..................................................................................... 299

Rozdzia 8.Postpowanie w przypadku niepowodzenia transakcji ......... 301


Scenariusze niepowodzenia ............................................................................................ 302
Bdy trybu poczonego.......................................................................................... 305
Bdy trybu rozczonego......................................................................................... 311
Metody usuwania skutkw bdw................................................................................. 314
Wykrywanie rda bdu......................................................................................... 314
Interpretacja kodw bdw ..................................................................................... 339
Obsuga duej liczby bdw.................................................................................... 339

COM+. Kompendium programisty


Usuwanie bdw ..................................................................................................... 341

Rozdzia 9.Wysyanie wiadomoci i obiektw COM ................................ 345


Przegld scenariusza komunikacji .................................................................................. 348
Dwa interfejsy API ................................................................................................... 349
Definiowanie typu wiadomoci................................................................................ 353
Zrozumienie sekwencji transferu danych ................................................................. 355
Tworzenie wymaganych kolejek .............................................................................. 355
Tworzenie aplikacji typu odbiornik-odtwarzacz ............................................................ 357
Tworzenie powoki dla odbiornika i odtwarzacza.................................................... 357
Projektowanie formularza okna dialogowego .......................................................... 360
Dodanie kodu odtwarzania ....................................................................................... 361
Utworzenie aplikacji testowej......................................................................................... 364
Tworzenie powoki aplikacji testowej...................................................................... 364
Projektowanie formularza okna dialogowego aplikacji testowej................................ 366
Dodanie kodu aplikacji............................................................................................. 368
Testowanie aplikacji ....................................................................................................... 371
Sprawdzenie wiadomoci ......................................................................................... 371
Sprawdzenie wynikw testu ..................................................................................... 376
Kwestie administracyjne MSMQ.................................................................................... 377
Podstawy zarzdzania kolejkami.............................................................................. 377
Kolejka martwych listw.......................................................................................... 379
Kontrola Podgldu zdarze ...................................................................................... 379

Rozdzia 10.......................................................... Praca w trybie rozczonym 381


Definiowanie aplikacji.................................................................................................... 383
rodowisko biurowe a rozproszone.......................................................................... 385
Przedstawienie domylnego rejestratora, odbiornika i odtwarzacza w COM+........ 387
Przepyw danych aplikacji........................................................................................ 391
Tworzenie i instalacja komponentu ................................................................................ 391
Tworzenie powoki komponentu.............................................................................. 393
Dodanie kodu komponentu....................................................................................... 395
Instalacja komponentu.............................................................................................. 396
Tworzenie aplikacji testowej .......................................................................................... 403
Tworzenie powoki aplikacji .................................................................................... 404
Projektowanie formularza okna dialogowego .......................................................... 405
Dodanie kodu aplikacji............................................................................................. 406
Testowanie w trybie poczonym ................................................................................... 410
Testowanie w trybie rozczonym .................................................................................. 411

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

COM+. Kompendium programisty

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

Rozdzia 3. G Wyjtkowe cechy COM+

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

COM+. Kompendium programisty

W tym podrozdziale przyjrzymy si elementom automatyzacji. Pierwszym z nich jest aktywacja


w czasie trwania (JIT, Just In Time). Technologia ta pozwala serwerowi na bardziej wydajne
uywanie zasobw poprzez zachowywanie aktywnoci obiektw jedynie tak dugo, jak s potrzebne. Kiedy klient przez dugi czas przechowuje adres do nieuywanego komponentu, serwer
dezaktywuje ten komponent do chwili, gdy bdzie on ponownie potrzebny. Nastpnym razem,
gdy klient go zada, serwer dokona automatycznej reaktywacji tego komponentu.
Drugim elementem automatyzacji s transakcje. Zapewniaj one, e kade danie klienta jest
obsugiwane przynajmniej raz i tylko ten jeden raz. Jest to niezwykle wana cecha baz danych,
gdy wprowadzenie danych wicej ni jeden raz moe spowodowa ich uszkodzenie. Poniewa
bdziemy pracowa z transakcjami, ta cz bdzie jedynie przegldem zagadnienia. Wiadomoci
teoretyczne na ten temat mona znale w rozdziale 4., za przykad transakcyjny w rozdziale 7.
Przegld domen COM+ i jego kontekstu zawarty w ostatniej czci rozdziau pomoe zrozumie
programistom sposb, w jaki wykorzystywany jest poszczeglny egzemplarz komponentu.
Przegldanie komponentw w kontekcie pozwala wykona wicej przetwarzania mniejszym
kosztem. Pomaga rwnie w dziale automatyzacji poprzez umoliwienie COM+ dokonania
ulepsze w dziedzinie zabezpiecze. Wicej na temat specyfiki zabezpiecze COM+ w czci
zatytuowanej Zabezpieczenia oparte na rolach.

Aktywacja w czasie trwania (JIT)


Zawsze kto da dostpu do zasobw serwera. Z tego powodu, standardowe techniki programowania COM czsto obejmuj pojcie przejcia zasobu i nastpnie przetrzymania go do czasu,
a komponent nie bdzie duej potrzebowa tego zasobu. Oznacza to, e zasb moe by
zablokowany na dugo i przez ten czas by bezczynny. Nowa metodologia COM+ polega na
uzyskaniu dostpu do zasobu, nastpnie moliwie szybkim przekazaniu go do puli, by inne
aplikacje miay dostp do potrzebnych im zasobw. Oczywicie, wci gdzie tam jest duo
starszych aplikacji COM, ktre nie uywaj tej nowej strategii, wic jest bardzo prawdopodobne,
e wiele zasobw serwera wci jest marnowanych. Dlatego te potrzebny jest mechanizm
aktywacji w czasie trwania (JIT).
Uywanie aktywacji JIT oznacza, e nawet jeeli klient przetrzymuje odwoanie do komponentu,
Windows 2000 wci moe uywa fizycznych zasobw wymaganych przez komponent do
chwili, gdy bd znowu potrzebne aplikacji. Windows 2000 monitoruje wszystkie komponenty,
ktre s oznaczone jako zgodne z JIT. Kiedy minie okrelony czas bez wywoania jakiejkolwiek
metody, komponent jest dezaktywowany, a wykorzystywane przez niego zasoby wracaj do puli.
Tak dugo, jak mwimy o aplikacji, komponent istnieje, a odwoanie do niego wci pozostaje
prawidowe. Nastpnym razem, gdy aplikacja wywoa metod dezaktywowanego obiektu,
Windows 2000 dokona jego ponownej aktywacji i przydzielenia wymaganych zasobw. Cay
ten proces rozgrywa si w tle bez adnego udziau ze strony programisty. Uytkownik jest
cakowicie niewiadomy tego, co si stao.
Zatem, jeeli nowa technika polega na zwalnianiu zasobw, ktre nie s ju duej potrzebne,
jak aktywacja JIT pomaga programistom COM+? COM+ jest zaprojektowany do uatwiania
procesu tworzenia aplikacji rozproszonych. W rezultacie, komponent nie musi by aktywowany
na lokalnym serwerze waciwie moe by uruchomiony na zdalnym serwerze. Oznacza to,

Rozdzia 3. G Wyjtkowe cechy COM+

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

COM+. Kompendium programisty


By odwiey nieco Windows 2000, Microsoft nada nowe nazwy kilku
istniejcym ju produktom. Przeznaczenie ich jest takie same, jedynie
ich nazwy ulegy zmianie. Wikszo z zestawu funkcji udostpnianych
przez MTS obecna jest w DTC, ktry waciwie zaczyna jako cz
skadowa pakietu SQL Server. Obecnie MSMQ jest okrelany mianem
Queued Components (Skadniki w kolejce) lub Message Queuing
(Kolejkowanie wiadomoci), zalenie od tego, z ktr wersj MSMQ
pracujesz. W wielu przypadkach, podczas przegldania dokumentacji
Microsoftu okrelenia te bd wystpoway razem. Dla porzdku,
odwoujc si do MTS i MSMQ, bdziemy uywa ich starych nazw. Z
wyjtkiem sytuacji, gdy bdzie mowa o oknach dialogowych lub innych
cechach Windows 2000, ktre korzystaj z nowego nazewnictwa lub jeeli
nowe okrelenie jest z jakiego powodu bardziej odpowiednie.
Na przykad, jeeli bd mwi o tym, jak skonfigurowa MTS do
uycia z komponentem, najprawdopodobniej uyj okrelenia DTC w
trakcie opisywania sposobu wykonania tego zadania, poniewa jest to
nowe zastosowanie istniejcego produktu.

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

Rozdzia 3. G Wyjtkowe cechy COM+

79

i rodzajach aplikacji. Na przykad, podczas pracy z komponentem transakcyjnym bdziesz


uywa kontekstu, by decydowa o wyniku transakcji.
Kady obiekt COM+ ma dostp do interfejsu IObjectContext. Przyjrzymy mu si dokadniej
w rozdziale 4. podczas omawiania MTS. Istnieje sze metod bezporednio zwizanych
z MTS, ktre pozwalaj wpywa na wynik transakcji:    ,     ,
 ,   ,    ,
  . Metoda    jest
uywana wraz z zabezpieczeniami opartymi na rolach, w celu sprawdzenia obecnej roli programw dajcych ich uprawnie do uywania rnych metod wewntrz twojego komponentu.
Metoda   pozwala okreli, czy mechanizm zabezpiecze MTS jest wczony.
Zabezpieczenia MTS nie bd wczone jedynie wtedy, gdy obiekt jest uruchamiany w procesie
klienta. Naley sprawdzi t konkretn warto, aby upewni si, czy zabezpieczenia s wczone.
Sprawdzenie tej wartoci pozwala rwnie okreli miejsce uruchomienia komponentu (klient
czy serwer). Dodatkowo, oprcz interfejsu IObjectContext, istnieje kilka dodatkowych interfejsw
zwizanych z kontekstem komponentu. Oto ich lista:
G IObjectContextInfo pozwala uzyska kilka konkretnych informacji na temat biecego

kontekstu, wczajc w to identyfikatory transakcji, aktywnoci i kontekstu. Z pewnoci


uyjesz rwnie metody tego interfejsu     , by dowiedzie si, czy
obecnie twj komponent jest czci transakcji. Metoda    pozwoli
uzyska wskanik   do biecej transakcji (jeeli jest jaka).
G IContextState udostpnia biece informacje o obecnym stanie kontekstu i pozwala

okrela czy twj komponent zgadza si na wykonanie transakcji. W praktyce


waciwie nie zachodzi potrzeba skorzystania z tego interfejsu. Jednake, metoda
   pozwoli okreli stan swojego gosu w gosowaniu w sprawie
zakoczenia transakcji. Metoda 
!   pozwoli na okrelenie
biecego stanu bitu realizacji twojego komponentu ten bit okrela moment
zakoczenia procesu przetwarzania przez komponent.
G IObjectContextActivity jedyna metoda tego interfejsu uzyskuje identyfikator

aktywnoci dla biecego kontekstu komponentu.


G ISecurityCallContext omwimy dokadnie ten interfejs w czci dotyczcej

zabezpiecze opartych na rolach. Ten interfejs jest odpowiedzialny przede wszystkim


za umoliwianie komponentowi okrelania biecego stanu zabezpiecze. Mona
uy metod tego interfejsu do okrelenia, jakie role zostay przydzielone biecemu
uytkownikowi, co pozwolioby ustali, czy powinien mie dostp do konkretnych
metod w twoim komponencie.
Zwykle, by okreli stan swojego komponentu jak zosta aktywowany i przez kogo bdziesz
uywa waciwoci kontekstu, by w ten sposb wybra najlepszy sposb dziaania podczas
obsugi wywoa jego metod. Jednake istniej dwa szczeglne zdarzenia, ktre wymagaj
dokadniejszego omwienia: aktywacja i przechwycenie. Aktywacja pojawia si, gdy komponent
jest po raz pierwszy tworzony lub reaktywowany z puli obiektw. Podczas aktywacji tworzony
jest nowy kontekst dla komponentu lub uywany jest ju istniejcy zwykle podczas wywoania
obsugi zamykanego klienta przez kolejny obiekt. Przechwycenie pojawia si podczas wywoania
krzyujcego kontekst. Kontekst programu dajcego jest tak dostosowywany, by pasowa do
tego, ktry posiada wywoywany komponent. Dwa obiekty maj rne wymagania odnonie do
rodowiska dziaania, ktre s zawarte w ich kontekstach. To sedno kwestii uywania kontekstw

80

COM+. Kompendium programisty

pozwalaj obiektom dziaa w rodowisku najlepiej dostosowanym do ich potrzeb. Uywanie


przechwytywania pozwala dwm obiektom wspdziaa w sposb nie naruszajcy kontekstu,
w jakim pracuj.

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.

Rozdzia 3. G Wyjtkowe cechy COM+

81

Meneder wyrwnywania zasobw


(CRM)
Meneder wyrwnywania zasobw (Compensating Resource Manager CRM) jest czci
COM+, ktra obsuguje mechanizm zarzdzania wyrwnywaniem zasobw w poczeniu
z Distributed Transaction Coordinator (DTC dla tych, ktrzy nie lubi nowej terminologii).
Pamitaj, e Windows 2000 pozwala zarzdza obiektami innymi ni poczenia z baz danych
oraz innymi obiektami powizanymi rwnie z bazami danych pocztkowo zarzdzanymi przez
MTS. Teraz moesz zarzdza wszystkimi rodzajami obiektw rnego typu, zarwno zawierajcymi kod, jak i dane.
Zasadniczo, meneder zasobw obsuguje trwae obiekty w komponencie transakcyjnym, podczas
gdy rozdzielacz zasobw zajmuje si tymi nietrwaymi (istniejcymi wycznie w pamici).
SQL Server jest przykadem menedera zasobw, a sterownik ODBC (zapewniajcy dostp
do niego) jest przykadem rozdzielacza zasobw.
Oglnie, obiekty zaangaowane w transakcj nie s wiadome, czy transakcja si udaa, czy te
nie. Autor komponentu zakada, e albo transakcja si powioda i system Windows 2000 nie bdzie zmuszony robi nic wicej, albo zakoczya si niepowodzeniem. W przypadku niepowodzenia, przywracany jest stan sprzed transakcji i rozpoczynana jest nowa transakcja. W adnym
przypadku, nie istnieje aden powd, by komponent musia zna wynik transakcji.
Jednake, istniej sytuacje, gdy komponent bdzie musia wykona pewn prac w sytuacji niepowodzenia transakcji. Na przykad, pracujc z aplikacj bazodanow, komponent moe zada
przywrcenia stanu sprzed bdnej transakcji. Poniewa komponent jest zwykle dezaktywowany
na granicach transakcji w celu zachowania ochrony transakcji, potrzebuje jakiego sposobu, by
wykona t potransakcyjn czynno. I to jest zadanie dla wyrwnawczej czci CRM. Meneder
wyrwnywania zasobw jest specjalnym rodzajem menedera zasobw, ktry pozwala komponentowi na wykonanie pewnej pracy naprawczej w sytuacji niepowodzenia transakcji.
CRM jest obiektem nietransakcyjnym. Innymi sowy, nie moe bra udziau w transakcji. Transakcja zostaa zakoczona i nie ma nic, na co CRM mgby mie wpyw transakcja zakoczya
si niepowodzeniem i czas, by wykona napraw.
Stworzysz CRM jako cz kodu startowego swojego komponentu i zarejestrujesz za pomoc
udostpnianego przez system programu CRM Clerk, ktry zapamituje informacje o CRM
i zapisuje przejawy wszelkiej aktywnoci ze strony komponentu. Ten dziennik stanowi podstaw
dziaa naprawczych, ktre podejmuje CRM pozwala on CRM dowiedzie si, gdzie transakcja
doznaa niepowodzenia, i wykona kad czynno wymagan do przywrcenie stanu sprzed
transakcji.
Podstawowy CRM jest zoony z dwch czci: CRM Worker i CRM Compensator. Ten pierwszy
jest czci, ktra jest aktywna podczas przygotowania do etapu dwufazowego zatwierdzania
transakcji. Jest to cz twojego CRM, ktra wsppracuje programem CRM Clerk w celu
utworzenia trwaych wpisw w dzienniku, ktre posu do przywrcenia stanu sprzed bdnej

82

COM+. Kompendium programisty

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.

Ujcia zdarze COM+


W tej kwestii naprawd nie ma nic nowego poza nazw i sposobem, w jaki ta technologia moe by zastosowana do twoich komponentw. W przypadku kadego komponentu COM, ujcie
zdarze odbiera powiadomienia o zdarzeniu. Po odebraniu komponent zwykle przeprowadza
jak akcj w odpowiedzi na zdarzenie. Ujcia zdarze COM+ pocztkowo odnosiy si do
zdarze generowanych przez MTS. Nowa nazwa odzwierciedla po prostu zmian obecnych
obowizkw MTS: jego zdolno do wykonywania szerszego zakresu zada i e jest bardziej
zorientowany obiektowo.

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-

Rozdzia 3. G Wyjtkowe cechy COM+

83

ponentu. Moesz rwnie instalowa, importowa, eksportowa, uruchamia oraz zamyka


pojedyncze aplikacje.
Interfejs ICOMAdminCatalog udostpnia rwnie inne makropoleceniowe moliwoci. Na
przykad, s takie metody, ktre umoliwiaj ci prac z wicej ni jedn aplikacj naraz. Ta
makropoleceniowa zdolno jest rozszerzana na rejestrowanie wicej ni jednej klasy zdarze
komponentu naraz, co naprawd oszczdza duo czasu w trakcie pracy z bardziej zoonymi
komponentami.
Istniej rwnie pewne metody obsugiwane przez interfejs ICOMAdminCatalog, ktre mog
nadawa si, lub nie, do pracy na twoim serwerze. Na przykad, ze wzgldu na to, e Microsoft
sprzedaje CLB jako oddzielny produkt, nie istnieje aden sposb, by dowiedzie si, czy bdziesz
mia t usug zainstalowan na swojej maszynie. Jednake, istniej metody suce do uruchamiania i zatrzymywania tej usugi, jeeli tylko jest zainstalowana. Jednym z zada zwizanych
z usug, ktre zawsze bdzie dostpne, jest zdolno do tworzenia kopii bezpieczestwa REGDB
(centralnego magazynu danych konfiguracyjnych COM+) i jej pniejszego odtwarzania.

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.

Zabezpieczenia oparte na rolach


Ochrona to bardzo wana kwestia, zwaszcza e komputerowi wamywacze (crackerzy) zaczli
pojawia si ju na prawie kadym polu zastosowa komputerw. Nowoci, takie jak rozpowszechnienie kontrolek ActiveX, skryptw jzyka Java, rnego rodzaju innych skryptw, uywanie makropolece w aplikacjach oraz nieprzewidywalne bdy programistyczne w najwaniejszych
produktach chocia brzmi to paranoicznie przyczyniy si do tego, e administratorzy maj
mniejsz moliwo ochrony zasobw, za crackerzy wiksz atwo ich uszkodzenia.
Windows 2000 udostpnia rnorodne sposoby zmniejszania takiego zagroenia. Jeeli piszesz
aplikacj, ktra bdzie korzysta ze wszystkich mechanizmw zabezpieczajcych systemu
Windows 2000 i jeeli administrator sieci prawidowo skonfiguruje uprawnienia obiektw
w sieci, wtedy ryzyko dokonania wamania jest znacznie mniejsze ale wci istnieje. Krtko
mwic, ochrona jest nieustannie zmieniajcym si procesem zarzdzania konfiguracj, uwanego
ledzenia zdarze i aktualizacji oprogramowania.

84

COM+. Kompendium programisty

Na szczcie, Windows 2000 posiada wiele narzdzi zabezpieczajcych. Kolejne podrozdziay


opisz dwa elementy skadowe tego ukadu ochrony. Pierwszym jest standardowy mechanizm
zabezpiecze obiektw, ktry istnieje do momentu powstania systemu Windows NT i, ktry
zosta znaczco usprawniony w Windows 2000. Zabezpieczenia oparte na obiektach okrelaj
wymogi odnonie do konkretnego poziomu dostpu, ktre musz by spenione przez uytkownika, jeli ten chce uzyska dostp do tego obiektu poprzez uycie etonu. Drugim elementem
jest nowszy mechanizm zabezpiecze opartych na rolach, ktrego bdziesz uywa z wieloma
komponentami. W tej sytuacji, obiekty s przydzielane konkretnym rolom, tak jak uytkownicy,
ktrzy potrzebuj dostpu do nich. Rola jest ukierunkowana na zadanie. By uzyska dostp do
obiektu, uytkownik musi wykonywa zadanie, ktrego wymaga ten obiekt. Te dwie technologie
pracuj razem, by zapewni twojej sieci bezpieczestwo.

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).

Standardowe mechanizmy zabezpiecze


Windows
Windows 2000 pozwala konfigurowa mechanizmy ochronne na kilka rnych sposobw, wczajc w to dobrze znane zabezpieczenia na poziomie uytkownika i pliku. Moesz rwnie
tworzy grupy, przydzielajc prawa dostpu wanie im, zamiast poszczeglnym uytkownikom.
Dodatkowo, istnieje moliwo ledzenia kadego aspektu dziaania systemu zabezpiecze przy
korzystaniu z rnych ostrzee i plikw zawierajcych zapis wszelkiej aktywnoci. adne
zdarzenie nie przelizgnie si bez kontroli i bliszego przyjrzenia si mu. Faktycznie, prosty
moment przekazywania informacji z jednego procesu do innego jest przyczyn przeprowadzania
przez system Windows 2000 pewnego rodzaju kontroli.
Dla aplikacji poziom zabezpiecze udostpniany przez Windows 2000 ma zarwno wady, jak
i zalety. Z jednej strony, nie ma zbyt wielu sabych punktw., ktre aplikacje mog wykorzysta,
by zama zabezpieczenia. W wikszoci przypadkw, Windows 2000 po prostu przerwie prac
bdnie dziaajcej aplikacji, zanim zdy doj do jakiegokolwiek naruszenia zabezpiecze.
Z drugiej strony, taka surowa ochrona waciwie zbyt mocno ingeruje w prac niektrych starszych
aplikacji, utrudniajc im w peni prawidow prac, ktra jest moliwa w warunkach mniej
surowych zabezpiecze panujcych w Windows 95/98. Zasadniczo, zabezpieczenia oferowane
przez Windows 2000 mog waciwie mie wpyw na poziom zgodnoci, ktry bdzie moga

Rozdzia 3. G Wyjtkowe cechy COM+

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

COM+. Kompendium programisty

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

Rozdzia 3. G Wyjtkowe cechy COM+

87

wirus dokonuje ataku za porednictwem zoliwego skryptu. W momencie gdy certyfikaty


skryptw ujrz wiato dzienne, przegldarka WWW bdzie moga dokona wywoania
WinVerifyTrust w celu przeprowadzenia kontroli skryptu, zanim zostanie on uruchomiony.
G Cae aplikacje lub inne zoone sytuacje pobierania Internet Explorer potrafi

kontrolowa okrelone rodzaje pobieranych danych. Na przykad, pobieranie pliku


OCX rozpoczyna sekwencj WinVerifyTrust. Co si dzieje, jeeli parametry pobierania
nie mieszcz w ograniczonym zakresie spraw sprawdzanych przez Internet Explorera?
Uytkownik chciaby pobra i zainstalowa, dajmy na to, Dooma, Quakea lub inn
gr. Proces instalacji moe zawiera nieprzewidywalne akcje, takie jak: dodawanie
wpisw w rejestrze systemowym czy ponowne uruchomienie komputera. Obecnie
Internet Explorer nie potrafi sobie poradzi z tak sytuacj. Firma Microsoft planuje
uczyni przysz wersj usugi ICD bardziej solidn i poszerzy jej moliwoci
o obsug takich zdarze, jak te opisane wczeniej. Krtko mwic, nie ma znaczenia,
jak mocno jeste dzisiaj pewien bezpieczestwa swojej sieci, poniewa istnieje dua
liczba dziur w zabezpieczeniach, ktrych crackerzy mog uy w celu uzyskania
dostpu do twojej sieci.

Czci twojej strategii ochrony powinno by przeprowadzenie testu


kilku przegldarek, by pozna ich reakcje zwaszcza wtedy, gdy
tworzysz witryn WWW przeznaczon do oglnego dostpu. Jako
programista pracujcy z wieloma produktami powiniene regularnie
ledzi zmiany na wszystkich odwiedzanych przez siebie serwisach
WWW w poszukiwaniu nowych pomysw. Nowsze wersje przegldarek
Internet Explorer i Netscape Communicator uwzgldniaj importeksport pewnej iloci danych aplikacji. Jednake, jeeli uywasz starszej
wersji ktrej z tych przegldarek, produkt o nazwie NavEx pozwoli ci
stworzy kopie folderu Ulubione uywanego przez Internet Explorera i
zapisanie go w postaci zakadek Netscape Communicatora i na odwrt.
Znajdziesz go w nastpujcych miejscach w sieci, skd bdziesz mg go
pobra i przetestowa: http://www.pcworld.com/fileworld/
file_description/frameset/0,1458,4008,00, lub
http://www.zdnet.com/pcmag/pctech/content/17/01/ ut1701.001.html.

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

COM+. Kompendium programisty

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.

Przegld standardw zabezpiecze


Standardy zabezpiecze s wan czci ochrony bezpieczestwa sieci. W poprzedniej czci
ostrzegalimy ci o istnieniu dziur w zabezpieczeniach sieci, ktre bior si z rnych rde
wczajc w to system operacyjny i oprogramowanie z pki, ktrego uywasz do prowadzenia swojej firmy. Aby mie pewno bezpieczestwa swoich danych i caego systemu, na
ktrym pracujesz, skorzystaj ze standardw zabezpiecze
Uytkowanie zestandaryzowanych zabezpiecze daje oczywiste korzyci. Twoje metody zabezpiecze zazbi si z tymi uywanymi przez inne lokalizacje, redukujc krzyw nauki uytkownika i umoliwiajc korzystanie z narzdzi stworzonych przez innych programistw. Ponadto,
wiedzc, gdzie mog pojawi si naruszenia bezpieczestwa, bdziesz mg stworzy komponenty, ktrych zadaniem jest monitorowanie w celu ich wyszukiwania do chwili, gdy odpowiednie
komisje standaryzacyjne nie okrel sposobu rozwizania problemu.

Rozdzia 3. G Wyjtkowe cechy COM+

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.

Jeeli chcesz pozna najnowsze informacje na temat najnowszych


standardw bezpieczestwa (zwaszcza w Internecie), zajrzyj pod adres:
http://www.w3.org/Security/. Co prawda, znajdziesz tam jedynie oglne
informacje, ale s tam rwnie cza do innych miejsc, gdzie s
umieszczone bardziej szczegowe materiay. Programici, chccy
spojrze na kwesti zabezpiecze komercyjnie, powinni zajrze pod
adres: http://www.rsasecurity.com/. Witryna RSA zawiera rnorodne
tematy, wczajc obecny stan wysikw firm MasterCard i VISA, by
umoliwi bezpieczne transakcje za pomoc kart kredytowych. Z tego
miejsca powiniene rwnie zaczyna poszukiwania informacji
dotyczcych dodawania obsugi nowych technologii fizycznego
zabezpieczania (np. smartcard) do swoich aplikacji. Moesz rwnie
zapozna si z osigniciami IETF, przegldajc dokument znajdujcy si
pod adresem: ftp://ftp.isi.edu/internet-drafts/1id-abstracts.txt.
Tabela 3.1. Standardy wewntrznych zabezpiecze systemu Windows 2000

Standard

Opis

Inicjatywa
cyfrowych podpisw
(DSI Digital Signature
Initiative)

Standard zapocztkowany przez W3C w celu przezwycienia pewnych


ogranicze zabezpiecze na poziomie kanau transmisji. Zabezpieczenia
na tym poziomie nie radz sobie z semantyk nazw dokumentw i aplikacji.
Wystpuj rwnie problemy z wydajnym wykorzystaniem szerokoci
pasma sieci Internet, poniewa cao procesu przetwarzania odbywa
si w sieci, zamiast po stronie klienta lub serwera. Ten standard okrela
matematyczn metod przesyania podpisw bdcych zasadniczo
unikaln reprezentacj pojedynczej osoby lub firmy. DSI rwnie
zapewnia now metod oznaczania waciwoci zabezpiecze (PICS2)
i nowy format zapewnie (PEP). Ten standard jest rwnie oparty
na standardach PKCS7 i X509.v3. Wicej informacji znajdziesz pod
adresem: http://www.w3.org/Dsig/Overview.html.

Protok zabezpiecze IP
(IPSec Internet Protocol
Security Protocol)

IETF stworzy specjaln grup robocz (IP Security Protocol Working


Group), by przyjrzaa si problemom zabezpiecze protokou IP
chociaby jego niemonoci szyfrowania danych na poziomie
protokou. Obecnie grupa pracuje nad specyfikacjami, ktre ostatecznie
przyczyni si do zwikszenia bezpieczestwa transakcji IP. Wicej
informacji o tej grupie roboczej znajdziesz pod adresem:
http://www.ietf.cnri.reston .va.us/html.charters/ipsec-charter.html.

Usuga uwierzytelniania
sieciowego Kerberos
(Kerberos Network
Authentication Service)

Jest to zatwierdzona specyfikacja IETF, ktra okrela niezaleny protok


uwierzytelniania. Model Kerberos jest czciowo oparty na zaufanym,
niezalenym protokole uwierzytelniania Needhama i Schroedera oraz
modyfikacjach zaproponowanych przez Denninga i Sacco. Tak jak

90

COM+. Kompendium programisty

IETF RFC1510

w przypadku wielu innych protokow uwierzytelniania w Internecie,


Kerberos dziaa jako zaufana, niezalena usuga uwierzytelniania. Korzysta
z konwencjonalnej kryptografii, ktra posuguje si kombinacj oglnie
dostpnego klucza publicznego i nie rozpowszechnianego klucza
prywatnego. Kerberos kadzie nacisk na uwierzytelnianie klienta
z opcjonaln weryfikacj serwera.

Technologia prywatnej
komunikacji
(PCT Private
Communication
Technology)

IETF i firma Microsoft pracuj razem nad tym konkretnym protokoem.


Podobnie jak SSL, PCT jest zaprojektowany, by zapewni bezpieczny
sposb komunikacji pomidzy serwerem i klientem na niskim poziomie
protokou. Moe wsppracowa z kadym protokoem wysokiego
poziomu, np. HTTP, FTP czy TELNET. Aktualne informacje na temat
tej nowej technologii zabezpiecze znajdziesz pod adresem:.
http://www.graphcomp .com/info/specs/ms/pct.htm.

Protok SSL
(Secure Socket Layer)

Jest to standard W3C, pocztkowo proponowany przez Netscape, sucy


do przesyania zaszyfrowanych danych midzy klientem a serwerem na
poziomie protokou. Umoliwia niskopoziomowe szyfrowanie transakcji
w protokoach wyszego poziomu, np. HTTP, NNTP i FTP. Standard
rwnie okrela metody uwierzytelniania serwera i klienta (chocia
weryfikacja lokalizacji klienta jest opcjonalna). Wicej szczegw
na temat protokou SSL znajdziesz pod adresem:
http://home.netscape.com/security/index.html.

Po zapoznaniu si z wymogami wewntrznego bezpieczestwa, bdziesz musia pozna te,


ktre zawsze pojawiaj si poza firm mianowicie w Internecie. Przyjrzyjmy si rnym
rodzajom standardw zabezpiecze internetowych, ktre albo ju si nimi stay, albo bd nimi
ju wkrtce. Tabela 3.2 pokazuje list standardw lub ich projektw, ktre byy dostpne w trakcie
powstawania tej ksiki. Tak wic, w momencie gdy czytasz te sowa moe by dostpna ju
wiksza liczba tych standardw.
Tabela 3.2. Standardy zabezpiecze w Internecie

Standard

Opis

Distributed
Authentication Security
Service (DASS)
IETF RFC1507

DASS jest dzieem IETF. Definiuje eksperymentaln metod udostpniania


usug uwierzytelniania w Internecie. Celem weryfikacji w tym wypadku
jest okrelenie, kto wysa komunikat albo danie. Obecne schematy hase
maj pewne problemy, ktre DASS prbuje rozwiza. Na przykad,
nie ma sposobu, by dokona weryfikacji, e nadawca hasa nie podszywa
si pod kogo innego. DASS udostpnia usugi uwierzytelniania w rodowisku
rozproszonym, ktre jest rdem wyzwa specjalnego rodzaju uytkownicy
nie loguj si po prostu na jedn maszyn; istnieje potencjalna moliwo,
e mogliby zalogowa si na kady komputer w sieci. Wicej informacji
na temat tego standardu znajdziesz pod nastpujcym adresem:
http://www.wu-wien.ac.at:8082/rfc/rfc1507.hyx/$$root. Warto rwnie
spojrze na list innych standardw zabezpiecze znajdujc si pod adresem:
http://afs.wu-wien.ac.at/usr/edvz/gonter/rfc-list.html

Generic Security
Service Application
Program Interface
(GSS-API)

Jest to zatwierdzona specyfikacja IETF, ktra okrela metody oglnej obsugi


wywoa usug zabezpiecze. Uywajc standardowego interfejsu, pozwala
na wiksz mobilno kodu rdowego pomidzy szerszym zakresem platform
systemowych. IETF nie postrzega tej specyfikacji jako koca procesu, lecz

Rozdzia 3. G Wyjtkowe cechy COM+

91

IETF RFC1508

raczej punkt wyjcia do innych, bardziej dokadnych standardw w przyszoci.


Jednake, wiadomo istnienia tego standardu moe pomc ci odnale
podobiestwa midzy rnymi metodami implementacji zabezpiecze.
Wicej informacji odnonie tego standardu znajdziesz pod adresem:
http://www.wu-wien.ac.at:8082/rfc/rfc1508.hyx/$$root. Warto spojrze
take na list innych standardw zabezpiecze. Mona j znale pod
adresem: http://afs.wu-wien.ac.at/usr/edvz/gonter/rfc-list.html

Generic Security Service


Application Program
Interface (GSS-API)
C bindings
IETF RFC1508

Jest to zatwierdzona specyfikacja IETF, ktra okrela metody obsugi


wywoa usug uywajcych jzyka C. To jedna z pierwszych okrelonych
implementacji standardw opartych na RFC1508.

Joint Electronic
Payment Initiative
(JEPI)

Standard zapocztkowany przez W3C. JEPI udostpnia metod suc


do tworzenia usug handlu elektronicznego. Do przeprowadzenia transakcji
bdzie uywana jaka forma elektronicznej gotwki lub karty kredytowe.
Dane przesyane midzy klientem i serwerem bd uywa szyfrowania,
cyfrowych podpisw oraz uwierzytelniania (wymiana kluczy), by w ten sposb
zapewni bezpieczestwo wymiany informacji. Niektre elementy, takie
jak zabezpieczenia na poziomie transportu (rwnie zwane prywatnoci),
dopiero s definiowane przez IETF. Wicej o tym standardzie znajdziesz
pod adresem: http://www.w3.org/Ecommerce/Overview-JEPI.html.

Tabela 3.2. Standardy zabezpiecze w Internecie cig dalszy

Standard

Opis

Privacy Enhanced Mail


Part I (PEM1) Message
Encryption and
Authentication
Procedures
IETF RFC1421

Jest to zatwierdzona specyfikacja IETF, ktra ma zapewni, e twoja prywatna


korespondencja elektroniczna taka pozostanie. Zarysowuje szkic procedury
szyfrowania poczty w taki sposb, e poczta uytkownika jest bezpieczna,
a proces odszyfrowywania jest dla niego niewidoczny. Obejmuje to obsug
kluczy i zarzdzania innymi formami certyfikatw. Cz specyfikacji jest
oparta na CCITT X.400 zwaszcza w obszarach usugi obsugi poczty
(Mail Handling Service MHS) i agenta przesyania wiadomoci (Mail
Transfer System MTS). Wicej wiadomoci na temat tego standardu
znajdziesz pod adresem: http://www.ietf.org/rfc/rfc1421.txt.

Privacy Enhanced Mail


Part II (PEM2)
Certificate-Based Key
Management
IETF RFC1422

Jest to zatwierdzona specyfikacja IETF, ktra suy do zarzdzania kluczami


zabezpiecze. Udostpnia zarwno infrastruktur, jak i architektur zarzdzania
opart na technice certyfikacji za pomoc klucza publicznego. Standard
IETF RFC1422 jest rozszerzeniem specyfikacji CCITT X.509. Wykracza
poza granice okrelone przez CCITT w X.509, udostpniajc procedury
i konwencje dla infrastruktury zarzdzania kluczami przeznaczone
do uytku z PEM. Wicej o tym standardzie znajdziesz pod adresem:
http://www.si.hhs.nl/~henks/comp/crypt.html.

Privacy Enhanced Mail


Part III (PEM3)
Algorithms, Mode,
Identifiers
IETF RFC1423

Jest to zatwierdzona specyfikacja IETF, ktra okrela algorytmy


kryptograficzne, tryby uywania oraz identyfikatory do uywania z PEM.
Specyfikacja obejmuje cztery gwne obszary informacji zwizanych
z szyfrowaniem. S to nastpujce algorytmy: szyfrowania wiadomoci,
kontroli ich integralnoci, zarzdzania kluczami symetrycznymi
i asymetrycznymi (wczajc w to zarwno algorytmy symetrycznego
szyfrowania, jak i asymetrycznych podpisw). Wicej o tym standardzie

92

COM+. Kompendium programisty


dowiesz si pod adresem: http://www.si.hhs.nl/ ~henks/comp/crypt.html.

Privacy Enhanced Mail


Part IV (PEM4)
Certification and
Related Services IETF
RFC1424

Jest to zatwierdzona specyfikacja IETF, ktra okrela metod certyfikacji


kluczy. Rwnie udostpnia list usug zwizanych z kryptografi, ktre
witryna internetowa potrzebowaaby udostpni uytkownikowi. Wicej
informacji dotyczcych tego standardu znajdziesz pod adresem:
http://www.si.hhs.nl/~henks/comp/crypt.html.

Secure/Multipurpose
Internet Mail
Extensions (S/MIME)

Ta specyfikacja jest promowana przez konsorcjum producentw, m.in.


Microsoft, Banyan, VeriSign, QUALCOMM, Frontier Technologies,
Network Computing Devices, FTP Software, Wollongong, SecureWare
i Lotus. Pocztkowo bya rozwijana przez RSA Data Security, Inc.,
jako metoda dla innych programistw do tworzenia agentw przesyania
wiadomoci (MTA), ktre uywaj zgodnej technologii szyfrowania.
Oznacza to, e jeeli kto wysya do ciebie wiadomo, korzystajc
z produktu Lotusa, ty moesz j odczyta za pomoc programu firmy
Banyan. S/MIME jest oparty na popularnym standardzie internetowym
MIME (RFC1521). Informacje o standardzie MIME znajdziesz pod
adresem: http://www.nacs.uci.edu/indiv/ehood/MIME/MIME.html.
Ca list zasobw charakterystycznych dla S/MIME mona pobra pod
adresem: http://www.rsasecurity.com/standards/smime/resources.html.

Tabela 3.2. Standardy zabezpiecze w Internecie cig dalszy

Standard

Opis

Bezpieczna sie
rozlega
(S/WAN Secure
Wide Area Network)

W tej chwili S/WAN znajduje si w pocztkowej fazie swojego rozwoju.


Jest to inicjatywa wspierana przez RSA Data Security, Inc. IETF rwnie
posiada komisj, ktra pracuje nad tym standardem. RSA chciaaby wczy
standard IETF IPSec do specyfikacji S/WAN. Gwnym celem S/WAN
jest umoliwienie firmom wyszukania najlepszego firewalla oraz produktw
stosu TCP/IP i wykorzystanie do budowy wirtualnych sieci prywatnych (VPN)
opartych na Internecie. Obecne rozwizania czsto zmuszaj do korzystania
z obydwu produktw pochodzcych z jednego rda (od tego samego
producenta). Wicej o S/WAN znajdziesz pod adresem:
http://www.rsasecurity.com/rsalabs/faq/5-1-3.html.

Bezpieczny protok
transmisji hipertekstu
(SHTTP Secure
Hypertext Transfer
Protocol)

Bieca technologia szyfrowania przesyanych danych uywana przez Open


Marketplace Server, ktry ma podobne moliwoci, jak protok SSL.
Rnica polega na tym, e dziaa on z protokoem HTTP. Grupa WTS
(Web Transaction Security) instytucji IETF powstaa ostatnio wanie w celu
przygotowania takiej specyfikacji jak ta. Wicej informacji o tym standardzie
znajdziesz pod adresem: http://www.ietf. org/html.charters/wts-charter.html.

Uniwersalne
identyfikatory zasobw
(URI Universal
Resource Identifiers)
IETF RFC2396 oraz
inne np. RFC1630

URI to biece zadanie IETF. Obecnie nazwy zasobw i adresy s udostpniane


w postaci zwykego tekstu. URL jest waciwie form URI, ktra zawiera
adres odwzorowywujcy konkretne miejsce w Internecie. URI udostpniby
rodki szyfrowania nazw i adresw obiektw w Internecie. W zasadzie,
by odwiedzi prywatn witryn WWW, musiaby zna zaszyfrowan nazw
zamiast nazwy wyraonej zwykym tekstem. Jeeli chciaby dowiedzie
si czego wicej na temat URI i jak wypada on w porwnaniu do URL, zajrzyj
na witryn W3C znajdujc si pod adresem: http://www.w3.org/ Addressing/.

Tabele 3.1 oraz 3.2 daj przejrzysty obraz standardw zwizanych z

Rozdzia 3. G Wyjtkowe cechy COM+

93

zabezpieczeniami stworzonymi przez IETF. Wikszo dokumentw IETF


RFC moesz znale pod adresem: http://www.ietf.org/rfc/, za list obecnie
dziaajcych grup roboczych IETF pod adresem:
http://ietf.cnri.reston.va.us/ html.charters/. Te wszystkie grupy robocze
pomagaj w tworzeniu standardw uywanych w Internecie.
To zadziwiajce, e standardy producenta s prawdopodobnie najszybciej rozwijajcym si
obecnie obszarem w Internecie poza technologi przegldarek (ktra wydaje rozwija si tak
szybko, e nawet betatesterzy maj duy problem, by dotrzyma kroku zmianom). Zauwaysz
rwnie, e wikszo standardw znajdujcych si tabeli 3.1 oraz 3.2 pochodzi od dwch grup:
IETF (Internet Engineering Task Force) lub W3C (World Wide Web Consortium). IETF istnieje
od dawna. Jest to jedna z pierwszych grup pracujcych nad sprawami zwizanymi z Internetem.
Chcc zagbia si w zagadnienia zwizane z bezpieczestwem w sieci Internet (i w mniejszym
wymiarze o innych obszarach standardw, takich jak znaczniki jzyka HTML), bdziesz
duo czyta o grupie W3C. Na przykad, firma Microsoft obecnie stara si o zatwierdzenie przez
W3C znacznika "! ' & oraz innych rozszerze jzyka HTML zwizanych z ActiveX.
Standardy zabezpiecze znajdujce si w tabeli 3.2 prezentuj spojrzenie na bezpieczestwo
ze strony Internetu. To wane, by zapamita ten fakt. Standardy te okrelaj poczenie midzy
klientem i serwerem. Wci moesz dodawa kolejne rodki zabezpieczajce na kliencie, serwerze
lub obydwu naraz (tak jak pokazano to w tabeli 3.1). Wikszo tych standardw nie obejmuje
swoim zasigiem dodatkowych produktw internetowych, takich jak firewalle. Twoja firma
moe oczywicie skorzysta z tych dodatkowych mechanizmw zabezpieczajcych.

Konfiguracja systemu zabezpiecze Windows 2000


Odkrylimy ju niektre z wyzwa dotyczcych ochrony w Windows 2000 (w postaci dziur
w zabezpieczeniach) i standardw, ktre staraj si naprawi te problemy. Jednake, wci nie
przyjrzelimy si interfejsowi API zabezpiecze systemu Windows 2000. Jest to cz systemu
operacyjnego Windows 2000, ktra umoliwia programicie pen kontrol nad sposobem, w jaki
aplikacje i komponenty bd obsugiwa zabezpieczenia. Przyjrzyjmy si, jak mona zaimplementowa te mechanizmy zabezpiecze w wiecie realnym. Ponisza lista opisuje dziewi
poziomw zabezpiecze systemu Windows 2000:
G Wbudowane zabezpieczenia Windows 2000 posiada pewien poziom zabezpiecze,

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,

czy pobierane z Internetu komponenty nie zostay w jakikolwiek sposb sfaszowane,


i zapewnia okrelony poziom odpowiedzialnoci za komponent (poprzez wywietlanie
uytkownikowi nazwiska jego autora oraz innych informacji). W zasadzie jest
to rwnoznaczne z podpisywaniem komponentw. Podpis Authenticode obsuguje
trzy rne rodzaje cyfrowych certyfikatw: 128-bitowe cyfrowe podpisy generowane

94

COM+. Kompendium programisty


lokalnie, przemysowy standard kryptografii opartej na kluczu publicznym (PKCS) #7
i #10 oraz cyfrowe certyfikaty X.509 w wersji 3.

G Interfejs API obsugujcy kryptografi (CryptoAPI) niektre rodzaje zabezpiecze

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

uwierzytelniania pocztkowo stosowana przez niektre z wikszych serwisw sieciowych


(CompuServe i MSN). Pozwala uytkownikowi korzysta z tego samego hasa
czonkowskiego, by uzyska dostp do pewnej liczby witryn w Internecie, ktre
s powizane razem w cao jako jedna organizacja czonkowska. Innymi sowy, metoda
ta polega na replikacji niektrych identycznych funkcji wielu serwerw w sieci lokalnej,
do ktrych uytkownicy mog uzyska dostp, posugujc si tym samym hasem. DPA
korzysta z usugi MMS (Microsoft Membership Service) zapewniajcej uwierzytelnianie
czonkostwa oraz informacji dostpowych specyficznych dla serwera.
G Kerberos jest to gwny zamiennik dostawcy zabezpiecze o nazwie Windows NT

LAN Manager (NTLM), ktry jest uywany do zapewnienia bezpieczestwa twoim


danym podczas pracy z systemem Windows. Kerberos wersja 5 jest relatywnie nowym
standardem przemysowym protokou zabezpiecze stworzonym przez specjalistw
z MIT (Massachussets Institute of Technology) i oferuje pierwszorzdn obsug
zabezpiecze uzyskiwan poprzez wykorzystanie architektury klucza prywatnego.
Protok ten obsuguje obustronne uwierzytelnianie klienta i serwera, redukuje
obcienie serwera podczas ustanawiania poczenia i umoliwia klientowi delegacj
(przekazanie) uwierzytelniania serwerowi poprzez wykorzystanie mechanizmw
poredniczcych (proxy). Kerberos czy si bezporednio z centrum dystrybucji kluczy
(KDC, Key Distribution Center) i kontem usugi katalogowej (DS, Directory Service)
w celu uzyskania kluczy sesyjnych niezbdnych do prawidowego uwierzytelniania.
G Technologia komunikacji prywatnej (PCT Private Communication Technology)

jest to specjalny poziom zabezpiecze w Internecie, nad ktrym wsplnie pracuj


Microsoft i IETF. PCT umoliwi klientowi i serwerowi nawizanie bezpiecznego
poczenia z niewielk szans na podsuchanie. Skuteczno dziaania zabezpiecze
na tym poziomie zaley od takich technologii, jak: podpisy cyfrowe i szyfrowanie danych.
G Infrastruktura klucza publicznego (PKI) jest to protok umoliwiajcy dwm

lokalizacjom wymian zaszyfrowanych danych (nie wymagajcy adnych wczeniejszych


przygotowa). Domyln metod rozpoczcia wymiany danych jest nawizanie
bezpiecznego poczenia za pomoc protokou zabezpiecze warstwy czy (SSL,
Secure Socket Layer). Gwn rnic midzy t technologi a pozostaymi obecnymi
na rynku jest to, e korzysta ona z systemu certyfikatw klucza publicznego sucego

Rozdzia 3. G Wyjtkowe cechy COM+

95

do przeprowadzania bezpiecznego transferu danych. Najnowsza specyfikacja protokou


SSL to SSL3, przez organizacj IETF nazywana rwnie protokoem zabezpieczenia
warstwy transportu (TLS, Transport Layer Security). Nowszym dodatkiem jest
technologia PCT. PCT wci korzysta z metody szyfrowania kluczem publicznym,
lecz istniej pewne wyrane zalety wynikajce z jego uytkowania, ktre omwimy
w tym podrozdziale. Jedn z korzyci wynikajcych z uywania technologii PKI jest
to, e nie istnieje wymg korzystania z usug adnego serwera autoryzujcego, poniewa
certyfikat jest wydawany przez dobrze znan instytucj certyfikujc (np. firmy Thawte
czy VeriSign w przypadku oglnodostpnego wykorzystywania tej technologii).
G Uwierzytelnianie Windows 2000 poprzez HTTP wielu ludzi przyjmuje bdne

zaoenie, e zabezpieczenia musz by trudne do zrozumienia lub bardzo zoone.


Ale wcale tak by nie musi. Pod Windows 2000 uwierzytelnianie moe przybiera
dwie postacie, gdy przygldamy si tej kwestii z perspektywy Internetu. Po pierwsze,
popro o nazw uytkownika i haso, a nastpnie sprawd te informacje z list dostpu
na serwerze. Istniej dwa sposoby, by to zrobi: podstawowa metoda, ktra jest uywana
podczas standardowej procedury logowania i w mechanizmie wyzwanie-odpowied
systemu Windows 2000. Druga metoda korzysta z informacji od klienta, ktry dostarcza
wymagan nazw uytkownika i haso na podstawie biecego ustawienia sesji. Klient
dostarcza informacji, z ktrych korzysta uytkownik, by zalogowa si do maszyny.
Inna metoda polega na istniejcej technologii, zwanej SSL (Secure Socket Layer).
SSL korzysta w swojej pracy z algorytmw szyfrowania oraz cyfrowych certyfikatw.
Nic nie stoi na przeszkodzie, aby wykorzysta rwnoczenie obydwa mechanizmy
zabezpiecze nie wykluczaj si nawzajem.

Wbudowane mechanizmy zabezpiecze


Windows 2000 jest chyba najbardziej przeprojektowanym systemem operacyjnym dostpnym
obecnie na rynku, jeeli chodzi o kwestie zabezpiecze. Jeeli masz jakie wtpliwoci na temat znaczenia zabezpiecze, przyjrzyj si moliwociom prezentowanym przez Windows 2000.
Moesz ich uywa wedug wasnego uznania. Na przykad, moesz zrobi uytek z moliwoci
zaawansowanych, wbudowujc ich obsug w komponent lub przyzna dostp do okrelonych
funkcji programu poprzez Internet. Windows 2000 udostpnia rne rodzaje ochrony stosownie
do potrzeb uytkownika. Niektre z tych mechanizmw s oparte na biecych standardach
zabezpiecze.
Oczywicie, sposb uywania mechanizmw zabezpieczajcych systemu Windows 2000 zaley
od uytkownika oraz rozmieszczenia aplikacji. Internet nakada ograniczenia, poniewa niektre
elementy ochrony znajduj si poza twoj kontrol. Naley wykaza duo rozsdku podczas
przydzielania dostpu do funkcji aplikacji w Internecie, aby nie uszkodzi systemu zabezpiecze
swojej sieci. W dodatku, korzystanie z pewnych funkcji poprzez Internet jest po prostu niepraktyczne, bo po prostu nie s one wane. (Inne mechanizmy zabezpiecze zajmuj miejsce systemw lokalnej ochrony patrz tabele 3.1 oraz 3.2).
Czy tworzysz komponenty dla Internetu, sieci WAN, LAN lub lokalnego uytku, zauwaysz,
e zrozumienie wewntrznej architektury systemu zabezpiecze jest spraw zasadnicz. Na
przykad, musisz zdecydowa, czy komponent kliencki lub serwerowy jest lepiej dostosowany

96

COM+. Kompendium programisty

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

Rozdzia 3. G Wyjtkowe cechy COM+

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

COM+. Kompendium programisty

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.

Przypadek uywania zabezpiecze opartych na obiektach


Istniej waciwie dwa rodzaje zabezpiecze, ktre moesz wdroy, pracujc z COM+:
schemat zabezpiecze oparty na obiektach (tradycyjny) oraz opartych na rolach (charakterystyczny dla Windows 2000). Wybr midzy tymi dwiema technologiami wywrze
znaczcy wpyw na sposb tworzenia projektu wasnego komponentu przynajmniej
z perspektywy zabezpiecze. Zabezpieczenia oparte na rolach pozwalaj zdefiniowa
zasady dostpu w d do poziomu metody na podstawie rl, jakie wypenia uytkownik
w obrbie firmy. Zwykle wystarczy okrelenie zabezpiecze do poziomu metody. Moe
si jednak zdarzy, e bdziesz musia zabezpieczy komponent w sposb niemoliwy
do zrealizowania przy wykorzystaniu mechanizmu zabezpiecze opartych na rolach.
Podczas pracy z zabezpieczeniami obiektw, w czasie projektowania musisz zadecydowa o tym, w jaki sposb twj komponent bdzie uywany, aby doda konieczne funkcje
bezpieczestwa. Wielu programistw obecnie myli jedynie o Internecie, jednak firmy
maj znacznie szerszy zasig uytkowania komponentw, ni tylko zastosowanie ich
w Internecie. Nie ma takiej reguy, ktra zabraniaaby tworzenia komponentw projektowanych specjalnie do wykorzystania jako fragmentu aplikacji. W rozdziale 7. przekonamy si, e komponenty bdce czci n-warstwowej aplikacji mog by uywane
w sieci LAN lub WAN do uzyskiwania dostpu do bazy danych. Komponenty mog by
odpowiedzi na aplikacje zwykle uywane przez administratorw sieci (lub inne wykwalifikowane osoby). Konsola zarzdzania firmy Microsoft (MMC, Microsoft Management Console) moe obecnie przysparza wielu problemw, poniewa administratorzy
nie przywykli do korzystania z niej. Jednak komponentowa natura przystawek, ktrych
uywa konsola MMC, sprawi, e korzystanie z narzdzi administracyjnych stanie si
bezpieczniejsze i atwiejsze. Faktycznie, prawie kady komponent moe przyjmowa
wiele tosamoci. Mgby nawet doda zdolno do wykrywania biecego pooenia
kontrolki lub doda specjalne pole lokalizacji jako cz konfiguracji arkusza waciwoci.
Kto mgby wybra podzestaw funkcji do uycia w Internecie, inny zestaw funkcji do
wykorzystania w sieci LAN i jeszcze inny do uytku lokalnego.
Do teraz wielu z was pyta, jakiego rodzaju narzdzi potrzebuje administrator, by uzyska
dostp do mechanizmw zabezpiecze, lecz nie korzystajc w tym celu z programw dostarczonych wraz z sieciowym systemem operacyjnym (NOS). Windows 2000 waciwie
udostpnia wiele atwych w uyciu narzdzi, wic dodawanie nowych funkcji, w opinii niektrych programistw nie jest warte zachodu przynajmniej nie wtedy, gdy komponent jest
uywany lokalnie. W podrozdziale zatytuowanym Zabezpieczenia oparte na rolach przekonamy si, e nie zawsze konieczne jest wbudowywanie specjalnych mechanizmw zabezpieczajcych w twj komponent, nawet jeeli istniej pewne szczeglne potrzeby dotyczce
ochrony, lecz zdarza si, e mechanizm zabezpiecze opartych na rolach bdzie niewystarczajcy. Mowa o mechanizmie zabezpiecze opartych na rolach, poniewa ta nowa funkcja
systemu Windows 2000 znaczco zmniejszya ilo kodu pisanego rcznie potrzebnego do

Rozdzia 3. G Wyjtkowe cechy COM+

99

wdroenia ochrony, lecz nie wyeliminowaa cakowicie tej koniecznoci.


Przyjrzyjmy si sytuacji, w ktrej potrzebowaby implementacji pewnego rodzaju wewntrznych zabezpiecze w swoim komponencie. Zastanw si, co by si stao, gdyby
osob, ktra zarzdza aplikacj, nie by administrator sieci kto, kto jest przeszkolony
do samodzielnej pracy z sieciowym systemem operacyjnym. Powiedzmy, e t osob jest
kierownik zespou lub inna osoba, ktra nie musi mie penego wgldu w sprawy sieci,
ale potrzebuje wystarczajcych informacji, by mc skutecznie zarzdza powierzon
aplikacj. Znajdziesz si w takiej sytuacji o wiele razy czciej, ni mgby sdzi. Due
firmy majce wiele maych zespow pracownikw bardzo czsto zaliczaj si do tej
kategorii. Administrator sieci nie musi mie wiedzy potrzebnej do prawidowego zarzdzania aplikacj, ale rwnie nie chce, by kierownik zespou mia wgld do sieci. Zabezpieczenia oparte na rolach mog by odpowiedzi na t potrzeb, ale wcale nie musi tak
by. Problemem jest to, e tak naprawd nie moesz zdefiniowa pojedynczej roli, ktra
zaspokoiaby potrzeby wszystkich zespow w firmie przynajmniej nie moesz tego
zrobi ze stuprocentow pewnoci. Potrzeba implementacji wasnych wewntrznych
metod ochrony lub uywania mechanizmu zabezpiecze opartych na rolach zaley od tego,
jak dobrze potrafisz zdefiniowa rol dla osoby uywajcej komponentu. Czasami dodanie
oddzielnych zabezpiecze jest zasadnicz czci procesu tworzenia komponentu.
Wic, o co chodzi w czci etonu dostpu dotyczcej przywilejw? Zaczyna si od liczby
przywilejw, ktre posiada uytkownik nie grup, do ktrych on naley, ale liczby wpisw
o specjalnych przywilejach w etonie dostpu. Ta cz rwnie zawiera tablic wpisw dotyczcych przywilejw. Kady wpis dotyczcy przywileju zawiera lokalnie unikalny identyfikator (LUID) zasadniczo wskanik do obiektu i mask atrybutw. Maska ta informuje
o prawach, jakie uytkownik ma do obiektu. Grupowe wpisy SID s zasadniczo takie same.
Zawieraj liczb przywilejw i tablic wpisw ich dotyczcych.

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.

Korzystanie z etonw dostpu


W zagadnienie zabezpiecze doskonale wprowadzaj wywoania etonw, ktre udostpnia
interfejs Windows API. By zrobi cokolwiek z kontem uytkownika nawet jeeli chcesz si
dowiedzie, kto posiada dostp do konkretnej stacji roboczej powiniene wiedzie o etonach.
etony s centraln czci rwnania zabezpiecze po stronie uytkownika. Prawie zawsze bdziesz rozpoczyna dostp do konta uytkownika, wywoujc funkcj ! (  . Przyjrzyj si nazwie tej funkcji radzi sobie z kadym rodzajem procesu. Jedynym celem tej funkcji

100

COM+. Kompendium programisty

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.

Obserwacja przepywu praw dostpu


Trzeba wiedzie, e uprawnienia do obiektu spywaj w d do moliwie najniszego
wza, chyba e inny identyfikator 
to zmienia. Na przykad, jeeli dasz uytkownikowi
prawo do odczytu i zapisu w katalogu \Temp na twardym dysku, te uprawnienia bd
rwnie dotyczyy katalogu \Temp\Stuff (chyba e przyznae uytkownikowi konkretne
uprawnienia do tego podkatalogu).
To samo pojcie przepywu praw dostpu zachowuje prawdziwo rwnie w odniesieniu
do kontenerw. Przyznanie uytkownikowi praw dostpu do obiektu kontenera, takiego
jak dokument programu Word, daje mu prawo do przegldania wszystkiego, co znajduje
si wewntrz tego kontenera, nawet innych plikw, ktre pojawiaj si w jego wntrzu
(w wikszoci przypadkw). Jak widzisz, wane jest ledzenie dokadnych praw uytkownika do rnych obiektw na twoim serwerze poprzez wykonywanie przegldw
zabezpiecze, poniewa mgby przypadkowo przyzna uytkownikowi wiksze
uprawnienia, ni potrzebuje on do wykonania okrelonego zadania.
Sprawdzenie konta uytkownika (lub inny dostp do informacji etonu) jest zadaniem cakiem
prostym. By odebra potrzebne informacje, uywasz funkcji (  ,  . Ta funkcja
wymaga klasy etonu jako parametru informujcego system Windows, jakiego rodzaju informacji
potrzebujesz. Na przykad, uyby klasy TokenUser, gdyby chcia zdoby informacje o konkretnym uytkowniku. Musisz przekaza funkcji waciw struktur danych, ktrej system
Windows moe uy do przechowywania zwracanych przez t funkcj informacji, ktrych
potrzebujesz rni si one, w zalenoci od klasy etonu, ktrego dasz.

Rozdzia 3. G Wyjtkowe cechy COM+

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

COM+. Kompendium programisty

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.

Uywanie deskryptorw zabezpiecze


Zrozumienie, czym jest deskryptor zabezpiecze i jak wspdziaaj rne struktury, ktre on
zawiera, nie wystarczy. Powiniene rwnie wiedzie, jak rozpocz proces waciwego uzyskiwania dostpu i korzystania z deskryptorw zabezpiecze, by mc napisa program. Pierwsz
spraw, ktr powiniene zrozumie, jest to, e w odrnieniu od etonw, deskryptory zabez-

Rozdzia 3. G Wyjtkowe cechy COM+

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

obiektw. Wszystkie te obiekty, nawet etony dostpu, s waciwie obiektami jdra


systemu i jako takie, w celach ochronnych, posiadaj rwnie swj wasny deskryptor
zabezpiecze.
G Terminale, pulpity, okna i menu funkcje .!+
i .!+ umoliwiaj dostp do tych obiektw. Terminal

to kombinacja klawiatury, myszy i monitora sprztu uywanego do uzyskiwania


dostpu do systemu. Pulpit zawiera okna i menu wywietla elementy, ktre wida
na ekranie. Te cztery obiekty dziedzicz uprawnienia od siebie w pokazany sposb.
Innymi sowy, pulpit odziedziczy prawa terminala.
G Klucze rejestru systemowego ten rodzaj obiektw wymaga uycia
*- i *-. Zauwa, e nazwy tych dwch funkcji

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

z tych funkcji nie pojawia si wrd pozostaych wywoa funkcji zabezpiecze


w pliku pomocy Windows API. Musisz wic zna nazwy tych funkcji by odszuka

104

COM+. Kompendium programisty

je w pliku pomocy. Usuga wykonawcza jest zadaniem dziaajcym w tle udostpnianym


przez system Windows takim samym, jak na przykad funkcja nadzorowania zasilacza
UPS. List usug obsugiwanych przez twj system znajdziesz, klikajc dwukrotnie
ikon apletu Usugi w Panelu sterowania (Windows NT) lub Narzdzia administracyjne
i dalej Usugi (Windows 2000).
Po uzyskaniu dostpu do obiektu, moesz wykona rnorodne zadania, korzystajc ze standardowego zestawu funkcji API. Na przykad, funkcja 

 ) pobiera kopi
DACL z dowolnego rodzaju deskryptora. Innymi sowy, deskryptory dla tych wszystkich obiektw
maj prawie taki sam format nawet jeeli rozmiar wikszoci komponentw bdzie si rni
(z powodu tego, e kady obiekt zawiera inn liczb list ACE). Identyfikatory SID take maj
rne rozmiary.
W celu sprawdzenia lub zmodyfikowania zawartoci deskryptora zabezpiecze, naley nastpnie
deassemblowa komponenty. Na przykad, moesz zobaczy konkretne ACE w DACL lub SACL,
korzystajc z funkcji API  . Mona rwnie uy identyfikatorw SID waciciela i grupy
do wywoania funkcji zwizanych z tym identyfikatorem (omwilimy te funkcje w czci tego
rozdziau dotyczcej etonw dostpu). Moesz uy standardowego zestawu funkcji, by mie
moliwo manipulacji deskryptorem zabezpiecze po zdobyciu konkretnej procedury dziaania.
Aby uzyska dostp do deskryptora zabezpiecze:

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).

Wzmacnianie zabezpiecze w Windows


Jeli zacze zastanawia si, jak system Windows ocenia wpisy ACE w DACL, prawdopodobnie odkryjesz kilka obszarw, gdzie mog potencjalnie wystpi problemy, z ktrymi narzdzia Windows radz sobie automatycznie, ale ty bdziesz musia to przewidzie w swojej
aplikacji, by uzyska ten sam efekt. (SACL ma ten sam problem, lecz dotyczy on jedynie mechanizmu inspekcji, wic efekt jest mniej dotkliwy od strony systemu zabezpiecze).
System Windows ocenia wpisy ACE w DACL w kolejnoci ich pojawiania si. Na pocztku
wyglda to niewinnie. Jednak, w pewnych sytuacjach moe sta si to problemem. Na przykad,
jeeli chcesz odebra wszystkie prawa uytkownika w jednym obszarze, lecz jego lista wpisw
ACE zawiera czonkostwo w grupie, ktre umoliwia mu dostp do tego obszaru. Jeeli najpierw
na licie umieciby wpis access-allowed ACE, uytkownik uzyskaby dostp do tego obszaru
Windows koczy przeszukiwanie listy natychmiast po znalezieniu pierwszego wpisu ACE,
ktry przyznaje wszystkie potrzebne prawa uytkownika (lub ACE, ktry odmawia jednego
prawa). Przyznane prawa s kumulacyjne. Jeeli jeden wpis ACE przyznaje prawo do odczytu

Rozdzia 3. G Wyjtkowe cechy COM+

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.

Inne kwestie dotyczce zabezpiecze


Przygldajc si zabezpieczeniom w systemach Windows 95/98 lub Windows 2000, trzeba jeszcze
zwrci uwag na dwie kwestie: ochron danych i serwera. Pierwsza z nich dotyczy zdolnoci
klienta do uzyskiwania dostpu do danych, do ktrych nie powinien go mie podczas uzyskiwania
dojcia do danych poprzez serwer (nie mwi tu o serwerze plikw, lecz o pewnym rodzaju
mechanizmu DDE lub innym serwerze aplika cji). Pomyl o tym w ten sposb: co si dzieje,
jeeli klient nie mia praw do okrelonego rodzaju danych, lecz uzyska do nich dostp poprzez
wywoanie DDE do serwera, ktry mia wymagane uprawnienia? Jak mona zabezpieczy sam
serwer, aby niewiadomie nie narusza zabezpiecze?
Windows udostpnia kilka funkcji API, ktre umoliwiaj przedstawienie klienta serwerowi.
W zasadzie, funkcje te umoliwiaj serwerowi przyjcie ogranicze zabezpiecze klienta w celu
okrelenia, czy klient posiada wystarczajce prawa, by mie dostp do danych lub procesu. Zamy, e uytkownik programu MS Word potrzebuje dostpu do pliku danych programu Excel.
Uytkownik moe uzyska dostp do tego pliku za porednictwem mechanizmu DDE. W tej
sytuacji, serwer musiaby zweryfikowa poziom uprawnie uytkownika programu Word (czy
s one wystarczajce, by uzyska dostp do tego pliku), zanim wyle potrzebne dane. Serwer
moe nawet zauway, e klient posiada wysze uprawnienia, gdy korzysta z tej techniki.
Ostatecznym kryterium jest to, e najwaniejszym zadaniem serwera jest ochrona danych, zasobw i rodowiska, ktrymi zarzdza.
Ten zestaw funkcji API obsuguje trzy rne rodzaje komunikacji: DDE, nazwane potoki oraz
RPC. Potrzebujesz rnych funkcji API dla kadego rodzaju komunikacji. Na przykad, by przedstawi klienta DDE, uyby funkcji

   . Istniej pewne ograniczenia odnonie do poziomu przedstawiania udostpnionego obecnie przez system Windows. Na przykad,

106

COM+. Kompendium programisty

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.

Zabezpieczenia oparte na rolach


Jak dotd, omawialimy tradycyjne zabezpieczenia obiektw udostpnianym przez Windows
2000. Jeeli tworzysz standardowe aplikacje lub komponenty, ktre bd przeznaczone do
wykorzystania w Windows NT/2000, ochrona obiektw byaby wystarczajca. Nowoci podczas pracy z COM+ pod Windows 2000 s zabezpieczenia oparte na rolach.
Przyjrzyjmy si dokadniej temu nowemu mechanizmowi w systemie Windows 2000. Kolejne
czci tego rozdziau pomog zrozumie, jak zabezpieczenia oparte na rolach dopasowuj si do
scenariusza programowania komponentu COM+. Warto zna korzyci stosowania mechanizmu
zabezpiecze opartego na rolach. Zabezpieczenia oparte na rolach mog by uywane razem
z uwierzytelnianiem lub zamiast niego. Po poznaniu tego, czego dotycz wymogi korzystania
z zabezpiecze opartych na rolach, przyjrzymy si gwnemu interfejsowi ISecurityCallContext.

Zalety zabezpiecze opartych na rolach


Podczas gdy mechanizm zabezpiecze obiektowych niele si sprawdza, w wielu sytuacjach
ma rwnie surowe ograniczenia, ktre zmuszaj programist albo do zignorowania kwestii
zabezpiecze, albo do rcznego napisania ogromnej iloci kodu. Najwaniejszym ograniczeniem
tego mechanizmu zabezpiecze jest rozdrobnienie. Ustalasz zabezpieczenia dla caego obiektu,
uprawnienia uytkownika do tego obiektu s oparte na indywidualnym lub grupowym etonie
dostpu. Mechanizm zabezpiecze opartych na rolach w pewnym stopniu radzi sobie z problemem
rozdrobnienia poprzez umoliwienie ci ustawiania zabezpiecze na poziomie metody. Dodatkowo,
oprcz wikszej elastycznoci w ustalaniu poziomu dostpu uytkownika do komponentu,
zabezpieczenia oparte na rolach daj ci nastpujce korzyci:
G Konfiguracja zwykle bdziesz uywa narzdzi administracyjnych przystawki

konsoli MMC o nazwie Usugi skadowe lub skryptw, by konfigurowa komponent


do korzystania z zabezpiecze opartych na rolach. Jednake moesz rwnie ustali

Rozdzia 3. G Wyjtkowe cechy COM+

107

pewne rodzaje zabezpiecze jako cz procesu inicjalizacji twojego komponentu.


(Zwykle, nie dodasz adnego kodu do komponentu, by pozwoli administratorowi
na pen elastyczno tworzenia zasad bezpieczestwa, ktre speniaj wymagania firmy).
G adnego pisania dodatkowego kodu COM+ automatycznie rozwizuje szczegy

zwizane z bezpieczestwem, jeeli potrafisz sobie poradzi z zabezpieczeniami


na poziomie metody. Bdziesz musia dodatkowo zawrze tylko obsug interfejsu
ISecurityCallContext w swoim komponencie. Oczywicie, wymg mniejszej iloci
kodu przekada si na mniejsz specyfikacj projektu nie ma adnych wymaga
odnonie do zabezpiecze na poziomach interfejsu lub projektu komponentu.

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

lepiej wykonywa prac zwizan z konfiguracj zabezpiecze komponentu. Wci


moesz dodawa grupy lub pojedynczych uytkownikw do roli, rnica tkwi w sposobie
postrzegania. atwiej jest przyzna uytkownikowi lub grupie dostp do pojedynczych
metod zawartych w komponencie przy wykorzystaniu zada, ktre ten uytkownik
lub grupa maj realizowa.
G Bardziej elastyczne w odrnieniu od niezmiennych funkcji ochrony, mechanizm

zabezpiecze opartych na rolach jest konfigurowany spoza komponentu. Oznacza to,


e nie s konieczne zmiany w kodzie, gdy potrzeby firmy ulegaj zmianie. Zamiast
zmienia kod komponentu (wraz z usuwaniem bdw i nieodcznym testowaniem),
administrator moe dokona zmiany, ktrej wykonanie bdzie trwao jedynie sekundy.
G Dokadna inspekcja w tym rozdziale zdylimy ju przyjrze si sprawie inspekcji.

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

COM+. Kompendium programisty


instrukcj konfiguracji swojego komponentu. Mechanice pracy z
zabezpieczeniami opartymi na rolach przyjrzymy si w rozdziale 7.,
podczas omawiania instalacji komponentw.

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

Rozdzia 3. G Wyjtkowe cechy COM+

109

komponentu. Ponisza lista pomoe ci zrozumie, w jaki sposb uwierzytelnianie i zabezpieczenia


oparte na rolach mog wsppracowa:
G Uwierzytelnianie wczone, zabezpieczenia oparte na rolach s uywane

uwierzytelnianie pojawia si na poziomie procesu. Kady uytkownik, ktry nie


moe zosta uwierzytelniony, nie zostanie zweryfikowany na poziomie komponentu.
Gdy ju znajduje si na poziomie komponentu, mechanizm zabezpiecze opartych
na rolach pozwala uzyska im dostp do zerowej lub wikszej liczby metod
komponentu, w zalenoci od przyznanej danemu uytkownikowi roli. Jeeli ma
prawo korzysta z komponentu, wci nie majc przypisanej roli, wtedy cay proces
zakoczy si niepowodzeniem, a danie uytkownika bdzie odrzucone. Jest to
domylne ustawienie konfiguracyjne COM+.
G Uwierzytelnianie wczone, zabezpieczenia oparte na rolach nie s uywane

uytkownik jest uwierzytelniany jedynie na poziomie procesu, na poziomie


komponentu nie. Jeeli uwierzytelnianie powiedzie si, uytkownik zyskuje
dostp do wszystkich moliwoci oferowanych przez komponent. Jest to domylne
ustawienie systemu Windows NT 4.0. To s rwnie ustawienia, jakich bdzie
uywa kady komponent COM, ktry przeniesiesz do Windows 2000 do chwili,
gdy administrator konkretnie okreli ustawienia mechanizmu zabezpiecze opartego
na rolach lub programista doda obsug tych zabezpiecze do swojego komponentu.
G Uwierzytelnianie wyczone, zabezpieczenia oparte na rolach s uywane nawet

jeeli Windows 2000 przechodzi przez procedury uwierzytelniania uytkownika,


to wynik tego procesu jest zasadniczo pominity. Jedyny przeprowadzany sposb
weryfikacji dostpu uytkownika to zabezpieczenia oparte na rolach. Mona uy
tego sposobu, gdy standardowe uwierzytelnianie systemu Windows 2000 nie jest
wystarczajco elastyczne, by poradzi sobie z rnymi rolami, ktre uytkownik
moe spenia, lub gdy wikszo zasobw komponentu jest oglnie dostpnych.
Na przykad, moesz pozwoli kademu dokonywa przeszukiwania twoich fragmentw
bazy danych katalogu, lecz ograniczy dostp do funkcji usuwania oraz edycji.
G Uwierzytelnianie wyczone, zabezpieczenia oparte na rolach nie s uywane jest

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

COM+. Kompendium programisty

z tym konkretnym egzemplarzem komponentu. W dodatku, nie bdziesz w stanie uzyska


informacji o komponencie jako caoci.
Ten interfejs jest zwykle dostpny dla twojego komponentu COM+, jeeli administrator wczy
mechanizm zabezpiecze opartych na rolach, lecz nie zawsze bdziesz zmuszony korzysta
z niego. Bdzie to potrzebne tylko wtedy, gdy zdecydujesz si na obsug zabezpiecze wewntrz komponentu, zamiast umoliwia administratorowi obsug tych zabezpiecze jako
czci konfiguracji komponentu. Otrzymasz komunikat o bdzie E_NOINTERFACE, jeeli
podejmiesz prb uzyskania wskanika do interfejsu, w momencie gdy mechanizm zabezpiecze opartych na rolach jest wyczony, wic mona atwo dowiedzie si, kiedy moesz
korzysta z tego interfejsu wewntrz komponentu.
Zwykle bdziesz uywa interfejsu ISecurityCallContext, by zdoby okrelone rodzaje informacji
o biecym kontekcie komponentu. Wszystkie te informacje s zawarte w kolekcji kontekstu
wywoania zabezpiecze jest to zasadniczo tablica informacji na temat obecnie uruchomionego
egzemplarza twojego komponentu. Poniej znajduje si lista informacji, ktre moesz uzyska
z kolekcji kontekstu wywoania zabezpiecze:
G Liczba programw dajcych
G Najniszy poziom uwierzytelnienia
G Obiekty wywoujce
G Bezporedni obiekt wywoujcy
G Pocztkowy obiekt wywoujcy

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



Zwraca liczb dostpnych waciwoci w kolekcji kontekstu wywoania


zabezpiecze.

 

Pobiera warto dla okrelonego elementu danych wewntrz kolekcji


kontekstu wywoania zabezpiecze. Oczywicie, element danych, ktry
podasz, musi znajdowa si w zakresie dostpnych waciwoci, wic
powiniene najpierw uy metody 
, by okreli liczb
dostpnych waciwoci.



Uzyskuje wskanik iteracji dla kolekcji kontekstu wywoania


zabezpiecze.

 

Okrela, czy bezporedni program dajcy znajduje si w okrelonej roli.

Rozdzia 3. G Wyjtkowe cechy COM+

111

Ta metoda nie wywietli wszystkich rl, w jakich si znajduje; pozwala


jedynie sprawdzi, czy znajduje si on w podanej przez ciebie roli.
Moesz uywa tej metody do okrelania, czy program dajcy powinien
mie dostp do konkretnych metod lub zasobw wewntrz komponentu.


Okrela, czy mechanizm zabezpiecze opartych na rolach jest wczony


dla tego egzemplarza komponentu. Ta metoda nie okreli, czy mechanizm
zabezpiecze jest aktywny dla innych egzemplarzy komponentu. Ju
wiesz, e zabezpieczenia oparte na rolach s dostpne na serwerze, poniewa
kada prba uzyskania wskanika do interfejsu ISecurityCallContext nie
powiedzie si, jeeli serwer nie obsuguje zabezpiecze opartych na rolach

 

Zasadniczo wykonuje to samo zadanie, co metoda  



lecz dla okrelonego uytkownika. Rnica pomidzy programem
wywoujcym a uytkownikiem jest taka, e ten pierwszy jest tym, ktry
obecnie uywa komponentu. danie uytkownika moe odnosi si do
kadego uytkownika, ktry ma dostp do serwera niekoniecznie tego,
ktry odpowiada za biece wywoanie.

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

COM+. Kompendium programisty


zostaa udostpniona jako oddzielny pakiet do pobrania dla betatesterw. To jest cz wycznie teoretyczna, ktra pomoe ci zrozumie
sposb, w jaki CLB jest powizany z COM+ jako caoci. Nie
powiniene uywa tych informacji do pisania aplikacji upewnij si, e
posiadasz obecnie wydan wersj CLB i dopiero tej wersji uywaj do
pisania aplikacji.

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.

Cele mechanizmu wyrwnywania


obcienia
Aplikacje przedsibiorstwa musz obsugiwa du liczb uytkownikw, ktrzy mog mie,
lub nie, atwy dostp do serwera. Ta sama aplikacja, ktra umoliwia pracownikowi dziau
sprzeday przyjmowanie zamwie przez telefon, musi poradzi sobie z pracownikami tego
dziau znajdujcymi si w podry lub nawet przebywajcymi za granic. Faktycznie, wraz
z pojawieniem si Internetu, sprzedawca nie musi nawet by czowiekiem moe to by
program komputerowy znajdujcy si na drugim kocu linii obsugi klienta. Wic, pierwszym celem mechanizmu wyrwnywania obcienia jest danie aplikacji moliwoci rozrastania si, by
moga pracowa rwnie dobrze zarwno na jednym, jak i na kilku serwerach.
Sprzedawcy w podry oraz uytkownicy, ktrzy nawizuj kontakt z twoj firm przez Internet,
maj jedn cech wspln: korzystaj z pocze telefonicznych, ktre w kadej chwili mog
ulec zerwaniu. Ostatnie artykuy zamieszczane we wszystkich wydawnictwach branowych
pokazay, e firmy potrzebuj mechanizmu odpornoci na bdy dla aplikacji pracujcych
w trybie online. Niektrzy uytkownicy rozwaaj moliwo zaprzestania uywania Internetu
z powodu niewystarczajcego poziomu obsugi, ktrego dowiadczyli w przeszoci. Pomyl,
jakie spowodowaoby to straty, gdyby pracownik dziau sprzeday nie mg ledzi na bieco
zawartoci firmowej bazy danych. Drugim celem mechanizmu wyrwnywania obcienia jest
tworzenie aplikacji, ktre potrafi nie tylko tolerowa awarie serwera, ale rwnie sprawiaj,
e s one niewidoczne dla klienta (przynajmniej w takim stopniu, w jakim jest to moliwe).
Ostatecznie, strategia wyrwnywania obcienia COM+ jest zaprojektowana tak, by uatwi prac
z uzupeniajcymi si technologiami. Dlatego wane jest, aby tworzone przez ciebie aplikacje
dziaajce na poziomie przedsibiorstwa potrafiy wsppracowa z rozwizaniami dostarczanymi
przez inne firmy.

Rozdzia 3. G Wyjtkowe cechy COM+

113

Jak dziaa mechanizm wyrwnywania


obcienia?
W przeszoci klient kontaktowaby si bezporednio z serwerem, by uzyska dostp do zawartoci
bazy danych (sprawdzi co, dopisa nowy rekord lub go zmodyfikowa). Takie podejcie
problem. Jest nim to, e klient musi zna konkretn nazw serwera oraz, bardzo czsto, rwnie
jego lokalizacj. Oczywicie, jeeli uruchamiasz aplikacj na wielu serwerach, moe to sta si
przyczyn problemu zarwno dla administratora sieci, jak i autora aplikacji.
COM+ ma inne podejcie do problemu dostpu. Zamiast czy si z serwerem, klient uzyskuje
dostp do routera. Router, na podstawie wasnych informacji na temat dostpnoci poszczeglnych serwerw, czy uytkownika z najbardziej dyspozycyjnym i najmniej obcionym
serwerem. Router cay czas otrzymuje informacje kontrolne na temat dostpnoci poszczeglnych serwerw. W tym celu korzysta z mechanizmu ledzenia czasu reakcji, ktry uatwia mu
dokonanie wyboru najlepszego serwera. Oczywicie, poniewa kady klient korzysta z tego
samego routera, nie musz zna lokalizacji i nazwy serwera, ktrego uywaj. Wszystko rozgrywa si w dynamicznym rodowisku.

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

COM+. Kompendium programisty

bd potrzeboway rwnie obserwowa stan krtko yjcych klas podlegajcych dziaaniu


mechanizmu wyrwnywania obcienia. Innymi sowy, kliencka cz twojej aplikacji powinna
tworzy egzemplarz obiektu, uy go, a nastpnie zniszczy moliwie szybko.
Router wyrwnywania obcienia waciwie skada si z dwch oddzielnych usug zwizanych
ze sob poprzez wspuytkowanie obszaru pamici. Pierwsz z nich usuga wyrwnywania
obcienia (LBS), drug za meneder sterowania usugami (SCM).
Usuga LBS zawiera kompletn list komponentw podlegajcych wyrwnywaniu obcienia
przechowywan w bazie danych znajdujcej si w pamici. Celem tej usugi jest obsuga tablic
routera wyrwnywania obcienia na potrzeby SCM. Wraz ze zmianami iloci komponentw
(instalacja-usunicie) dokonywanymi przez administratora sieci lub programist, nastpuje
odzwierciedlenie ich w tablicach routera wyrwnywania obcienia.
W momencie gdy klient formuuje wywoanie DCOM i wysya je do routera wyrwnywania
obcienia, to waciwie SCM odbiera to danie. SCM poszukuje komponentu w tablicy routera
wyrwnywania obcienia, nastpnie sam przesya wywoanie DCOM do jednego z serwerw
klastra aplikacji, wymagajc realizacji dania. Jeden z serwerw znajdujcych si w klastrze
tworzy egzemplarz danego obiektu, nastpnie przekazuje porednika bezporednio do klienta.
W tym momencie, serwer i klient maj ustanowione bezporednie poczenie router nie jest
ju duej potrzebny.
W tym miejscu potrzebna jest usuga LBS. Formuuje danie odnonie do dziaajcych serwerw,
by uzyska zestawienie czasu ich reakcji. Zestawienia te s nastpnie wprowadzane do tabeli
routera wyrwnywania obcienia, ktra umoliwi mu prawidowy wybr sprawnego serwera
w klastrze aplikacji do obsugi kolejnego dania komponentu.

Radzenie sobie z niesprawnymi serwerami i


routerami
Router jest podstawowym sposobem obsugi niesprawnych serwerw. Cz informacji w tablicy routera wyrwnywania obcienia oznacza stan serwera (sprawny-niesprawny). Router
wie, kiedy serwer uleg awarii, poniewa w zwizku z tym nie odpowiada on na dania pochodzce z czci routera obsugujcej wyrwnywanie obcienia. Kiedy takie zdarzenie ma
miejsce, serwer jest oznaczany w tej tablicy jako niesprawny. Router rwnie przydzieli innemu
serwerowi obsug da obsugiwanych przez nieczynny serwer. W ten sposb uytkownik
nawet nie zauway, e jeden serwer uleg awarii, a drugi go zastpi.
Nieczynny router jest prawdziwym problemem, poniewa stanowi gwny punkt awarii. Moesz go skonfigurowa jako zasb Microsoft Cluster Service (MSCS). W zasadzie stworzyby wirtualn maszyn zoon z kilku serwerw i w ten sposb znaczco zredukowaby
szans na wyczenie routera z pracy. Nieprawdopodobne jest, by w tym samym czasie wszystkie
serwery w klastrze zostay odczone ze wzgldu na awari.

You might also like