|
Poznańskie
Centrum Superkomputerowo - Sieciowe |
PROJEKT LDAP |
|
Projekt schematu bazy dla
potrzeb ogólnopolskiej usługi LDAP: przedstawienie dodatkowych
klas obiektów i atrybutów związanych z systemami GRID, umiejscowienie
obiektów związanych z aplikacjami typu portal w bazie Jerzy Chochulski Sebastian Szuber |
|
Poznań 2002 |
Spis treści
2. Klasy i atrybuty LDAP
dla systemów typu GRID
2.1. System informacyjny MDS
w oprogramowaniu GLOBUS
2.2. Definicja klas i
atrybutów w systemie MDS
Najważniejszą zaletą usług
katalogowych jest prosty sposób budowy centralnej bazy danych użytkowników i
zasobów oraz bardzo łatwy dostęp do tej bazy danych przez różne aplikacje.
Aby jednak stworzyć taką
bazę danych obejmującą obszary nie zdefiniowane w dotychczasowych standardach
należy stworzyć schemat bazy obejmujący definicję nowych klas, atrybutów i
sposobu ich wykorzystania.
Przedmiotem tej analizy jest
przegląd istniejących propozycji oraz próba zdefiniowania nowych standardów w
dwóch obszarach:
Systemy GRID przeżywają
obecnie gwałtowny rozwój i tu szczególnie ze względu na ich specyfikę: duże
rozproszenie i zróżnicowane typy zasobów szczególnie dobrze przydaje się protokół
LDAP jako centralne miejsce zbierania informacji o działaniu takiego systemu.
Zauważyli to również niektórzy autorzy oprogramowania dla systemów GRID i od
pewnego czasu stosują LDAP jako ich system informacyjny.
Aplikacje WWW i ich
rozwinięcie portale również potrzebują centralnego miejsca przechowywania
informacji. Tu jednak informacja ta dotyczy głównie użytkowników tych
aplikacji. Dane specyficzne dla aplikacji (produkty, usługi) są najczęściej
przechowywane w relacyjnych bazach danych. Jednak informacja dotycząca
użytkowników jest zazwyczaj dostępna przez LDAP ponieważ są tam przechowywane
dane dotyczące ich autentykacji i autoryzacji.
Spośród wielu systemów GRID
należy wyróżnić system GLOBUS [1]. GLOBUS to chyba obecnie najpopularniejszy i
najszybciej się rozwijający zestaw narzędzi do budowy systemów GRID. Jego
autorzy bardzo wcześnie dostrzegli potrzebę stworzenia centralnej bazy danych o
zasobach i wykorzystali do tego celu LDAP. Dlatego zdecydowaliśmy się oprzeć
dalsze rozważania na przykładzie tego systemu.
W obecnie dostępnej wersji
2.0 oprogramowania GLOBUS znajduje się system MDS (ang. Monitoring and
Discovery Service ) w wersji 2.1 [2]. System
ten wykorzystuje serwer OpenLDAP [3], darmową implementacje serwera LDAP do
zarządzania danymi dotyczącymi zasobów GRID.
Na potrzeby pozostałych
elementów systemu zostały zdefiniowane klasy i atrybuty przechowujące
informacje o zasobach systemu. Budowa drzewa informacji jest hierarchiczna.
Wszystkie fizyczne i logiczne komponenty są ułożone według pewnej hierarchii.
Przykład takiej hierarchii znajduje się na rysunku 1.
Rys. 1.
Przykład hierarchii elementów w drzewie informacyjnym GLOBUS.
Na potrzeby budowy drzewa
informacji dla systemu GLOBUS zostały stworzone definicje klas LDAP. Definicje
klas zostały podzielone na dwie grupy:
Klasy strukturalne obejmują
następujące klasy:
Mds - klasa
bazowa dla wszystkich klas MDS,
MdsHost - klasa reprezentująca system komputerowy,
MdsDevice - klasa reprezentującą urządzenie fizyczne lub logiczne widoczne
dla użytkowników,
MdsDeviceGroup - klasa
reprezentująca grupę powiązanych z sobą urządzeń.
Klasy szczegółowe definiują
poprzez swoje atrybuty różne szczegółowe aspekty urządzeń lub systemów
komputerowych. Przykładem mogą być procesor, pamięć czy systemy plików.
Klasy szczegółowe mogą być
dodawane do obiektów klas strukturalnych tworząc w ten sposób szczegółową
informację o danym obiekcie. Mechanizm ten jest wykorzystywany również do
łączenia informacji w obiektach nadrzędnych poprzez łączenie informacji
zawartej w obiektach podrzędnych. Przykład przedstawiony na rysunku 2 pokazuje
sposób połączenia w obiekcie nadrzędnym opisującym pamięć informacji z dwóch
obiektów podrzędnych opisujących pamięć fizyczną i pamięć wirtualną.
|
Rys. 2.
Przykład łączenia informacji z obiektów podrzędnych.
Ta możliwość łączenia
informacji z obiektów podrzędnych dotyczy również łączenia informacji z
obiektów zupełnie różnych typów.
Mechanizm ten jest
wykorzystywany w usłudze MDS do zbierania informacji w nadrzędnym obiekcie
reprezentującym komputer obliczeniowy wszystkich informacji zawartych w jego
elementach podrzędnych. Taki obiekt jest przydatny dla celów wyszukiwania
ponieważ umożliwia proste zdefiniowanie i wykorzystanie typowego mechanizmu
filtrów LDAP. Niestety jest to powiązane z utratą części informacji ponieważ w
modelu danych LDAP nie jest możliwe rozróżnienie poszczególnych wartości danego
atrybutu. W tym przypadku jeżeli komputer posiada na przykład jeden procesor z
zegarem 500MHz i dwa procesory z zegarem 600MHz to nadrzędny obiekt będzie
posiadał jedynie informację, że w komputerze jest zainstalowany co najmniej
jeden procesor o każdym z tych dwóch zegarów. Aby dowiedzieć się ile dokładnie
procesorów dysponuje danym zegarem konieczne jest przeszukanie obiektów
podrzędnych dla wybranego obiektu reprezentującego komputer obliczeniowy.
Schemat danych MDS określa
też pewne konwencje nadawania wartości niektórym atrybutom. Na przykład
ustalono, że obiekty klasy MdsDeviceGroup o nazwach
"processors", "memory", "filesystems" i "networks" zawierają podrzędne
obiekty opisujące odpowiednie kategorie urządzeń. Podobnie obiekt klasy MdsSoftwareDeployment
o nazwie "operating system" zawiera informację o systemie operacyjnym
komputera obliczeniowego.
Mds
Klasa reprezentuje
abstrakcyjny korzeń dla wszystkich typów danych MDS wymagających dynamicznych
metadanych |
|
Mds-validfrom
Atrybut wymagany,
jednowartościowy |
reprezentuje czas, od
którego obiekt i zawarta w nim informacja jest ważna |
Mds-validto
Atrybut wymagany,
jednowartościowy |
reprezentuje czas, od
którego obiekt i zawarta w nim informacja jest nieważna. |
Mds-keepto
Atrybut opcjonalny,
jednowartościowy |
reprezentuje czas, kiedy
obiekt powinien zostać usunięty; czas usunięcia powinien zawsze być późniejszy
od upływu okresu ważności o ile ten istnieje (istnienie czasu usunięcia
sugeruje, że mimo upłynięcia czasu ważności obiekt może zawierać pewne
przydatne informacje, a to znaczy, że lepsze są informacje przeterminowane
niż żadne) |
MdsVo
Klasa dziedziczy z klasy
Mds i reprezentuje wirtualną organizację (VO virtual organization). |
|
Mds-Vo-name
|
zawiera nazwę wirtualnej
organizacji |
MdsVoOp
Klasa dziedziczy z klasy
Mds i reprezentuje operację wykonywaną na wirtualnej organizacji (np.
rejestracja lokalnego serwisu GIIS w nadrzędnym serwisie GIIS) |
|
Mds-Vo-Op-name |
zawiera nazwę operacji |
MdsHost
Klasa dziedziczy z klasy
Mds i reprezentuje komputer przyłączony do sieci i jego różne usługi. |
|
Mds-Host-hn
|
zawiera pełną nazwę
komputera |
MdsHostNetNode
Klasa dziedziczy z klasy Mds
i reprezentuje element rozproszonej maszyny równoległej, która posiada
publicznie dostępny interfejs sieciowy |
|
Mds-Host-NetNode-hn
|
zawiera pełną nazwę
komputera |
MdsHostNode
Klasa dziedziczy z klasy Mds
i reprezentuje a ukryty element rozproszonej maszyny równoległej, która nie
posiada publicznie dostępnego interfejsu sieciowego |
|
Mds-Host-Node-name
|
zawiera lokalnie unikalną
nazwę komputera |
MdsHostNodeGroup
Klasa dziedziczy z klasy Mds
i reprezentuje a grupę komputerów obliczeniowych |
|
Mds-Host-Node-Group-name |
zawiera lokalnie unikalną
nazwę grupy |
MdsDevice
Klasa dziedziczy z klasy Mds
i reprezentuje lokalne urządzenie fizyczne lub logiczne widoczne dla
użytkownika |
|
Mds-Device-name
|
zawiera lokalnie unikalną
nazwę urządzenia |
MdsDeviceGroup
Klasa dziedziczy z klasy Mds
i reprezentuje grupę powiązanych urządzeń lokalnych |
|
Mds-Device-Group-name |
zawiera lokalnie unikalną
nazwę grupy |
MdsSoftware
Klasa dziedziczy z klasy Mds
i reprezentuje instancję zainstalowanego oprogramowania. |
|
Mds-Software-deployment
Atrybut wymagany,
jednowartościowy |
MdsComputer
Klasa dziedziczy z klasy Mds
i reprezentuje komputer z pamięcią współdzieloną |
|
Mds-Computer-isa
Atrybut wymagany,
wielowartościowy |
zawiera nieformalną nazwę
architektury komputera (ISA Instruction Set Architecture) |
Mds-Computer-platform
Atrybut wymagany,
wielowartościowy |
zawiera nieformalną nazwę
platformy |
Mds-Computer-manufacturer
Atrybut wymagany, wielowartościowy
|
zawiera nazwę producenta |
MdsComputerTotal
Klasa dziedziczy z klasy Mds
i reprezentuje zbiorczą informację o jednym lub więcej komputerach z pamięcią
współdzieloną |
|
Mds-Computer-Total-nodeCountAtrybut wymagany,
jednowartościowy |
zawiera liczbę reprezentowanych
elementów komputerowych |
MdsOs
Klasa dziedziczy z klasy Mds
i reprezentuje informację o zainstalowanym systemie operacyjnym. |
|
Mds-Os-name
Atrybut wymagany,
wielowartościowy |
zawiera nieformalna nazwę
systemu operacyjnego |
Mds-Os-release
Atrybut wymagany,
wielowartościowy |
zawiera nieformalną
informację o wydaniu systemu operacyjnego |
Mds-Os-version Atrybut wymagany,
wielowartościowy |
zawiera nieformalny numer
wersji systemu operacyjnego |
MdsCpu
Klasa dziedziczy z klasy Mds
i reprezentuje informacje o procesorze |
|
Mds-Cpu-vendor
Atrybut wymagany,
wielowartościowy |
zawiera nieformalną nazwę
producenta procesora |
Mds-Cpu-model
Atrybut wymagany,
wielowartościowy |
zawiera nieformalną
informację o modelu procesora |
Mds-Cpu-version
Atrybut wymagany, wielowartościowy |
zawiera nieformalną
informację o wersji procesora |
Mds-Cpu-features
Atrybut opcjonalny,
wielowartościowy |
zawiera nieformalną
informację o opcjonalnych cechach procesora |
Mds-Cpu-speedMHz
Atrybut opcjonalny,
wielowartościowy |
zawiera informację o
zegarze procesora |
MdsCpuSmp
Klasa dziedziczy z klasy Mds
i opisuje procesor w komputerze z pamięcią współdzieloną |
|
Mds-Cpu-Smp-sizeAtrybut wymagany,
wielowartościowy |
zawiera liczbę procesorów
w komputerze |
MdsCpuCache
Klasa dziedziczy z klasy
Mds i zawiera informacje o pamięci cache procesora |
|
zawiera całkowitą wielkość
pamięci cache pierwszego poziomu w kB |
|
Mds-Cpu-Cache-l1ikB
Atrybut opcjonalny,
wielowartościowy |
zawiera wielkość pamięci
cache instrukcji pierwszego poziomu w kB |
Mds-Cpu-Cache-l1dkB
Atrybut opcjonalny,
wielowartościowy |
zawiera wielkość pamięci
cache danych pierwszego poziomu w kB |
Mds-Cpu-Cache-l2kB
Atrybut opcjonalny,
wielowartościowy |
zawiera całkowitą wielkość
pamięci cache drugiego poziomu w kB |
MdsCpuFree
Klasa dziedziczy z klasy Mds
i zawiera informacje o dostępności procesora |
|
Mds-Cpu-Free-1minX100Atrybut wymagany,
wielowartościowy |
zawiera wartość
określającą dostępność procesora w przeciągu 1 minuty. |
Mds-Cpu-Free-5minX100Atrybut wymagany,
wielowartościowy |
zawiera wartość
określającą dostępność procesora w przeciągu 5 minut. |
Mds-Cpu-Free-15minX100Atrybut wymagany,
wielowartościowy |
zawiera wartość
określającą dostępność procesora w przeciągu 15 minut. |
MdsCpuTotal
Klasa dziedziczy z klasy
Mds i reprezentuje informację o jednym lub więcej elementach obliczeniowych. |
|
Mds-Cpu-Total-countAtrybut wymagany,
jednowartościowy |
zawiera liczbę wszystkich
procesorów we wszystkich elementach obliczeniowych reprezentowanych przez ten
obiekt |
MdsCpuTotalFree
Klasa dziedziczy z klasy
Mds i zawiera informację o dostępności procesorów w jednym lub więcej
elementach obliczeniowych |
|
Mds-Cpu-Total-Free-1minX100Atrybut wymagany,
jednowartościowy |
zawiera wartość
określającą dostępność procesorów z wszystkich elementów obliczeniowych
reprezentowanych przez ten obiekt w przeciągu 1 minuty. |
Mds-Cpu-Total-Free-5minX100Atrybut wymagany,
jednowartościowy |
zawiera wartość
określającą dostępność procesorów z wszystkich elementów obliczeniowych
reprezentowanych przez ten obiekt w przeciągu 5 minut. |
Mds-Cpu-Total-Free-15minX100Atrybut wymagany,
jednowartościowy |
zawiera wartość
określającą dostępność procesorów z wszystkich elementów obliczeniowych
reprezentowanych przez ten obiekt w przeciągu 15 minut. |
MdsMemoryRam
Klasa dziedziczy z klasy
Mds i reprezentuje fizyczną pamięć RAM w elemencie obliczeniowym |
|
Mds-Memory-Ram-sizeMBAtrybut wymagany,
wielowartościowy |
zawiera rozmiar pamięci
RAM (w MB) |
Mds-Memory-Ram-freeMBAtrybut wymagany, wielowartościowy |
zawiera rozmiar
niezaalokowanej pamięci RAM (w MB) |
MdsMemoryRamTotal
Klasa dziedziczy z klasy
Mds i reprezentuje fizyczną pamięć RAM w jednym lub więcej elementach
obliczeniowych |
|
Mds-Memory-Ram-Total-sizeMBAtrybut wymagany,
jednowartościowy |
zawiera rozmiar całej
pamięci RAM we wszystkich elementach obliczeniowych reprezentowanych przez
ten obiekt (w MB) |
Mds-Memory-Ram-Total-freeMBAtrybut wymagany,
jednowartościowy |
zawiera rozmiar całej
niezaalokowanej pamięci RAM we wszystkich elementach obliczeniowych
reprezentowanych przez ten obiekt (w MB) |
MdsMemoryVm
Klasa dziedziczy z klasy
Mds i reprezentuje dyskową wirtualną pamięć (VM virtual memory) w elemencie
obliczeniowym. |
|
Mds-Memory-Vm-sizeMBAtrybut wymagany,
wielowartościowy |
zawiera rozmiar wirtualnej
pamięci (w MB). |
Mds-Memory-Vm-freeMBAtrybut wymagany,
wielowartościowy |
zawiera rozmiar
niezaalokowanej wirtualnej pamięci (w MB). |
MdsMemoryVmTotal
Klasa dziedziczy z klasy
Mds i reprezentuje dyskową wirtualną pamięć (VM virtual memory) w jednym
lub więcej elemencie obliczeniowym |
|
Mds-Memory-Vm-Total-sizeMBAtrybut wymagany,
jednowartościowy |
zawiera rozmiar całej
pamięci wirtualnej we wszystkich elementach obliczeniowych reprezentowanych
przez ten obiekt (w MB) |
Mds-Memory-Vm-Total-freeMBAtrybut wymagany,
jednowartościowy |
zawiera rozmiar całej
niezaalokowanej pamięci wirtualnej we wszystkich elementach obliczeniowych
reprezentowanych przez ten obiekt (w MB) |
MdsFs
Klasa dziedziczy z klasy
Mds i reprezentuje skonfigurowany system plikowy w elemencie obliczeniowym |
|
Mds-Fs-mount
Atrybut opcjonalny,
wielowartościowy |
zawiera ścieżkę do
zamontowanego systemu plików |
Mds-Fs-sizeMB
Atrybut wymagany,
wielowartościowy |
zawiera rozmiar
sformatowanego systemu plików (w MB) |
Mds-Fs-freeMB
Atrybut wymagany,
wielowartościowy |
zawiera rozmiar wolnej
przestrzeni systemu plików (w MB) |
MdsFsTotal
Klasa dziedziczy z klasy
Mds i reprezentuje systemy plików w jednym lub więcej elementach
obliczeniowych |
|
Mds-Fs-Total-countAtrybut wymagany,
jednowartościowy |
zawiera liczbę wszystkich
reprezentowanych systemów plików |
Mds-Fs-Total-sizeMBAtrybut wymagany,
jednowartościowy |
zawiera rozmiar wszystkich
reprezentowanych systemów plików (w MB) |
Mds-Fs-Total-freeMBAtrybut wymagany,
jednowartościowy |
zawiera rozmiar wolnej
przestrzeni we wszystkich reprezentowanych systemach plików (w MB) |
MdsNet
Klasa dziedziczy z klasy
Mds i reprezentuje interfejs sieciowy w elemencie obliczeniowym |
|
Mds-Net-name
Atrybut wymagany,
wielowartościowy |
zawiera nazwę interfejsu
sieciowego |
Mds-Net-addr
Atrybut wymagany,
wielowartościowy |
zawiera adres IP
interfejsu sieciowego (np. adres karty sieciowej) |
Mds-Net-netaddr
Atrybut wymagany,
wielowartościowy |
zawiera lokalny (w sieci)
adres IP interfejsu sieciowego (np. adres komputera w sieci) |
Mds-Net-mtuB
Atrybut wymagany,
wielowartościowy |
zawiera wartość
maksymalnej przepustowości (w bajtach) interfejsu sieciowego |
MdsNetTotal
Klasa dziedziczy z klasy
Mds i reprezentuje informację o jednym lub więcej interfejsach sieciowych w
elementach obliczeniowych |
|
Mds-Net-Total-countAtrybut wymagany,
jednowartościowy |
zawiera liczbę wszystkich
intefejsów sieciowych w reprezentowanych elementach obliczeniowych |
MdsService
Klasa dziedziczy z klasy
Mds i reprezentuje serwis dostępny w sieci, widoczny przez zdalnych klientów |
|
Mds-Service-type
Atrybut wymagany,
jednowartościowy |
zawiera nazwę protokołu
używanego przez serwis, np. część mechanizmu z adresu URL serwisu |
Mds-Service-protocol
Atrybut wymagany,
wielowartościowy |
zawiera wersję protokołu
używanego przez serwis |
Mds-Service-hn
Atrybut wymagany,
jednowartościowy |
zawiera nazwę hosta, na
którym serwis jest uruchamiany, np. część hosta z adresu URL serwisu |
Mds-Service-port
Atrybut wymagany,
jednowartościowy |
zawiera port TCP, na
którym serwis jest uruchamiany, np. część adresu URL serwisu zawierająca
numer portu |
Mds-Service-url
Atrybut opcjonalny, jednowartościowy |
Adres URL serwisu |
MdsServiceLdap
Klasa dziedziczy z klasy
MdsService i reprezentuje serwis dostępny przez protokół LDAP |
|
Mds-Service-Ldap-suffixAtrybut wymagany,
wielowartościowy |
reprezentuje the root(s) of the logical service(s) in the LDAP server
DIT |
Mds-Service-Ldap-timeoutAtrybut opcjonalny,
wielowartościowy |
zawiera maksymalny czas
oczekiwania na wykonanie operacji LDAP-owej |
Mds-Service-Ldap-sizelimitAtrybut opcjonalny,
wielowartościowy |
zawiera maksymalną ilości
zwracanych obiektów podczas jednej operacji |
W
bazie LDAP-owej mogą być zapisane następujące informacje wykorzystywane w
zarządzaniu użytkownikami oraz przechowywaniu innych ich danych
wykorzystywanych w portalach i aplikacjach WWW :
Identyfikacja
użytkownika portalu może przebiegać przy użyciu już istniejącej bazy danych
osobowych (np. baza "white pages") lub poprzez tworzenie odrębnej bazy danych
użytkowników (często jest ona tworzona dynamicznie przy pomocy użytkowników
portalu, którzy sami podają swoje dane w formularzu rejestracyjnym). W
pierwszym przypadku do procesu autentykacji zostaną zastosowane dane z głównego
obiektu użytkownika, natomiast dane użytkownika dotyczące konkretnego portalu
znajdą się :
Przypadek pierwszy ilustruje
poniższy rysunek. Obiekt dodatkowy (zawierający dane specyficzne dla portalu,
może także zawierać dane dla potrzeb autoryzacji) wyróżniany jest nazwą portalu
(np. cn=Portal_1).
Nie można zdefiniować
ogólnej klasy obiektu i jego atrybutów, ze względu na różnorodność informacji,
którą może on przechowywać. Definicja tego obiektu należy do twórców portalu i
administratorów bazy LDAP-owej.
Drugi przypadek
przedstawiony jest na poniższym rysunku.
Utworzona jest osobna gałąź
ou=Portals, grupująca dane o wszystkich portalach i aplikacjach WWW. Każdy
portal reprezentowany przez jego nazwę (np. ou=Portal_2) grupuje dane o
użytkownikach specyficzne dla tego portalu w obiektach, które są powiązane z
obiektami w gałęzi ou=People poprzez niepowtarzalny w bazie atrybut występujący
w obu obiektach np. atrybut uid lub adres e-mailowy.
Tworzenie odrębnej bazy danych użytkowników portalu
wymusza utworzenie osobnej gałęzi dla portali. Obiekty reprezentujące
użytkowników zawierają wtedy wszystkie dane (także dla potrzeb autentykacji i
autoryzacji).
Dla względów bezpieczeństwa
można drzewo portalowe całkowicie wydzielić ze struktury "white pages", będzie
ono wtedy istniało jako osobne drzewo (możliwość umieszczenia w osobnej bazie
danych na innym serwerze LDAP). Poniższy rysunek przedstawia tą propozycję.
W tym przypadku można
utrzymywać dane powiązane z gałęzią ou=People (drzewo "white pages"), jak też
utrzymywać odrębną bazę użytkowników, w zależności od wymagań każdego z
portali.
Schemat MDS 2.1 oprócz wykorzystywania go w systemach typu GRID (w końcu dla tych celów został stworzony) może być używany dla przechowywania statycznej informacji o zasobach komputerowych takiej jak :
ˇ
informacja o
procesorach,
ˇ
informacja o systemach
operacyjnych,
ˇ
informacja o
zainstalowanej pamięci operacyjnej,
ˇ
informacja o
zainstalowanej pamięci dyskowej,
ˇ
informacja o obecnych
systemach plikowych,
ˇ
informacja o
zainstalowanych intrerfejsach sieciowych,
ˇ
informacja o
uruchomionych serwisach,
w celach np.
administracyjnych (zarządzanie zasobami komputerowymi). Taka infrastruktura
pozwalałaby na szybką i bezproblemową integrację z systemami typu Grid gdyby
zaszła taka potrzeba.
W części poświęconej portalom i aplikacjom WWW
przedstawione zostały możliwości umiejscowienia bazy danych użytkowników na
serwerze LDAP-owym. Z punktu widzenia bezpieczeństwa najlepszym rozwiązaniem
jest odizolowanie drzewa portalowego, z możliwością wykorzystywania informacji
o użytkownikach z drzewa "white pages" dla potrzeb autentykacji.
[ 1 ] |
MDS
2.1 Schema, www.globus.org/mds/Schema.html |
[ 2 ] |
T.A. Howes, M.C. Smith, G.S. Good "Understanding and Deploying LDAP
Directory Services", 1999 |