Wiele organizacji opiera swoje działania na protokole LDAP (Lightweight Directory Access Protocol), który służy do zarządzania, przechowywania i weryfikacji tożsamości kluczowych użytkowników.
Może to jednak wprowadzać w błąd, skutkując myleniem go z usługą Active Directory.
W niniejszym artykule zgłębimy temat LDAP, analizując jego przeznaczenie i sposób funkcjonowania. Następnie omówimy jego najważniejsze cechy, strukturę katalogów oraz możliwości porządkowania danych. Na koniec podkreślimy znaczenie protokołu LDAP w kontekście administracji usługami katalogowymi i procesem uwierzytelniania użytkowników.
Czym jest LDAP?
LDAP to akronim od Lightweight Directory Access Protocol, czyli protokół lekkiego dostępu do katalogów. Jest to otwarty protokół, który umożliwia bezpieczne potwierdzanie tożsamości użytkowników w lokalnych katalogach. Co istotne, jest to protokół aplikacyjny niezależny od producenta, co czyni go wszechstronnym i powszechnie stosowanym, zwłaszcza w rozproszonych usługach katalogowych w sieci.
Protokół LDAP efektywnie pozwala aplikacjom na wysyłanie zapytań o informacje dotyczące użytkowników. Może on być wykorzystywany w różnorodnych elementach infrastruktury IT, w tym w systemach poczty elektronicznej, autoryzacji, zarządzaniu licencjami oraz administracji użytkownikami.
Należy jednak odróżnić go od usług Active Directory – zbioru usług i baz danych wykorzystywanych przez firmy do organizowania, udostępniania i zabezpieczania zasobów IT. W istocie, usługi katalogowe umożliwiają organizacjom przechowywanie danych o charakterze opisowym, statycznym i wartościowym.
Z technicznego punktu widzenia, LDAP jest odpowiedzialny za cały proces przedstawiania danych w ramach usługi katalogowej. Gwarantuje on, że użytkownicy mogą uzyskiwać dane w zdefiniowany sposób. To oznacza, że LDAP pozwala organizacjom na tworzenie wpisów danych w usługach katalogowych za pomocą odpowiednich narzędzi.
W ramach usługi Active Directory, protokół LDAP zapewnia sposób tworzenia wpisów na bazie różnych udostępnionych elementów bazowych.
Podsumowując, LDAP to:
- Protokół komunikacyjny.
- Otwarty protokół aplikacyjny, niezależny od dostawcy.
- Protokół programowy do przechowywania i porządkowania danych w sposób umożliwiający ich łatwe wyszukiwanie.
- Współpracuje z katalogami lokalnymi.
- Działa z usługą Active Directory, która zawiera dane statyczne, opisowe i wartościowe.
- Nie jest to nowy protokół, został wydany w roku 2003.
Jaki jest jego cel?
Cel LDAP można sprowadzić do trzech podstawowych założeń:
- Przechowywanie danych w katalogu LDAP/Active.
- Potwierdzanie uprawnień użytkownika do dostępu do tego katalogu.
- Umożliwienie aplikacjom korzystania z odpowiedniego języka komunikacji w celu przesyłania i odbierania danych z usług katalogowych.
Innymi słowy, LDAP pełni rolę protokołu komunikacyjnego, który nie tylko umożliwia uwierzytelnianie i autoryzację, ale również organizuje dane w sposób ułatwiający ich przeszukiwanie. Dzięki LDAP organizacje mogą przechowywać kluczowe informacje dotyczące użytkowników i zasobów IT, w tym ich dane uwierzytelniające. Dodatkowo, może on zapewnić bezpieczny dostęp, pozwalając administratorom na aktywne definiowanie zasad dostępu.
Jak działa LDAP?
Podstawą działania LDAP jest architektura klient-serwer.
W związku z tym, proces uwierzytelniania LDAP odbywa się zgodnie z modelem klient-serwer. Kluczowymi elementami tego procesu są:
- Directory System Agent (DSA): serwer z uruchomionym protokołem LDAP w konkretnej sieci.
- Nazwa wyróżniająca (DN): zawiera ścieżkę umożliwiającą nawigację po drzewie informacji katalogowych (DIT).
- Directory User Agent (DUA): DUA to klient, za pomocą którego uzyskuje się dostęp do DSA.
- Względna nazwa wyróżniająca (RDN): RDN określa każdy element w ścieżce DN.
- Interfejs programowania aplikacji (API): API umożliwiają komunikację między usługami i produktami.
W procesie weryfikacji tożsamości LDAP, gdy użytkownik uruchamia program kliencki LDAP, np. aplikację poczty e-mail, administrator może skonfigurować sposób, w jaki klient LDAP ma współdziałać z usługami katalogowymi w celu uwierzytelnienia. Może na przykład zastosować jedną z dwóch dostępnych metod uwierzytelniania użytkownika:
Podczas próby logowania wymagane jest uwierzytelnienie DN. Po uruchomieniu procesu, LDAP przypisuje klienta do agenta systemu katalogów (DSA), który używa nazwy wyróżniającej, aby odnaleźć pasujące rekordy w bazie danych.
Względna nazwa wyróżniająca (RDN) w obrębie nazwy wyróżniającej jest kluczowym elementem wyszukiwania LDAP, ponieważ jest ona wykorzystywana na każdym etapie procesu przeszukiwania drzewa informacji katalogowych (DIT).
Jeśli wyszukiwanie zakończy się sukcesem, pasujące identyfikatory UID i hasło użytkownika zostaną sprawdzone w celu potwierdzenia tożsamości. W przeciwnym razie, operacja zwróci nieprawidłowe wyniki.
Na koniec, klient odłącza się od serwera LDAP. Po tym etapie, uwierzytelniony użytkownik może komunikować się z usługami za pośrednictwem interfejsów API. Oznacza to, że ma dostęp do przeglądania wszystkich przechowywanych informacji, ograniczeniem są jedynie przyznane uprawnienia.
Jeśli chcesz dowiedzieć się więcej na temat działania LDAP, zachęcamy do zapoznania się z artykułem opublikowanym w 2003 roku przez Grega Vanedera i Marka Wahla. Dodatkowo, informacje na temat operacji wyszukiwania LDAP można znaleźć w sekcji poświęconej operacji wyszukiwania LDAP.
Kluczowe cechy LDAP
Do najważniejszych cech LDAP należą:
- Uwierzytelnianie sesji użytkownika: protokół ten może być wykorzystany do weryfikacji sesji użytkownika w usłudze bazy danych, takiej jak Active Directory.
- Różne rodzaje operacji: LDAP umożliwia również wykonywanie operacji na bazie danych serwera katalogów, w tym
- łączenie sesji
- usuwanie wpisów LDAP
- modyfikowanie istniejących wpisów
- wyszukiwanie i porównywanie wpisów
- odrzucanie zapytań
- rozwiązywanie operacji
- Lekkość: protokół LDAP charakteryzuje się lekkością, co zapewnia niskie obciążenie sieci i zasobów systemowych.
- Niezależność od dostawcy i protokołu: LDAP jest niezależny zarówno od dostawcy, jak i protokołu. Oznacza to, że działa z dowolnym dostawcą, rozwiązaniem czy protokołem. Na przykład, można używać LDAP przez TCP/IP lub X.25. Jednak najnowsza wersja LDAP, czyli LDAPv3, wykorzystuje protokół TCP/IP.
- Struktura katalogów: LDAP korzysta ze struktury drzewiastej katalogów do przechowywania danych i uzyskiwania do nich dostępu w bazie danych katalogów. Relacja rodzic-dziecko przyspiesza proces wyszukiwania i pobierania informacji.
- Standaryzacja: LDAP jest standaryzowany przez IETF (Internet Engineering Task Force). Standaryzacja gwarantuje, że LDAP działa bezproblemowo u różnych dostawców.
- Bezpieczeństwo: protokół LDAP jest bezpieczny. Bezpieczeństwo jest osiągane dzięki zastosowaniu bezpiecznego protokołu TLS w warstwie TCP/IP. Można również wykorzystać bezpieczne gniazdo (SSL) do szyfrowania, deszyfrowania i przesyłania informacji zdalnie, zachowując pełną integralność i poufność.
- Replikacja: LDAP obsługuje replikację na wielu serwerach. Zapewnia to redundancję danych i dostępność danych w przypadku awarii. Wykorzystuje Syncrepl – silnik replikacji Sync.
Struktura katalogów LDAP
Katalog LDAP posiada przejrzystą i zdefiniowaną strukturę. Ułatwia to dostęp do danych i usprawnia przeszukiwanie zawartości katalogu LDAP.
LDAP ma strukturę drzewiastą, a więc hierarchiczną. Dlatego preferowany jest jako drzewo informacji katalogowych (DIT).
Poszczególne poziomy struktury katalogów LDAP obejmują:
- Katalog główny
- Organizację
Jak widać, katalog LDAP ma strukturę drzewiastą. Katalog „główny” jest wpisem najwyższego poziomu, zawierającym wszystkie inne wpisy w katalogu. Poniżej znajdują się kraje, które następnie dzielą się na organizacje, które rozgałęziają się na jednostki organizacyjne (OU), a na końcu na osoby i grupy.
Aby lepiej zrozumieć strukturę katalogów LDAP, spójrzmy na poniższy przykład.
- Root (Top-level entry) | +-- Country: "dc=com" (e.g., dc=example,dc=com) | +-- Organization: "dc=example" (e.g., dc=example) | +-- Organizational Unit (OU): "ou=Users" | | | +-- User: "cn=Nitish Singh" | | | +-- User: "cn= Oliver Green" | +-- Organizational Unit (OU): "ou=Groups" | +-- Group: "cn=Admins" | +-- Group: "cn=Users" | +-- Group: “cn=Superusers”
Jednostka główna jest identyfikowana za pomocą DC, co oznacza atrybut Domain Component. W związku z tym, jeśli „dc=com”, wpis główny jest identyfikowany jako domena „com”.
Pod węzłem głównym można mieć wiele organizacji lub domen, które są reprezentowane przez „dc=organizacja” w domenie „com”.
Analogicznie, każda organizacja może mieć jedną lub więcej jednostek organizacyjnych (OU), które administrator może logicznie podzielić na podjednostki. Na przykład, można utworzyć jednostkę organizacyjną dla „użytkowników”, „grup” lub „superużytkowników”.
Ostatecznie, w ramach każdej jednostki organizacyjnej, można zdefiniować różne wpisy, w tym grupy, urządzenia, użytkowników itd. W naszym przykładzie, dwie wartości użytkowników jednostki organizacyjnej to „Nitish Singh” i „Oliver Green”. Podobnie, w grupach OU, mamy „Administratorów”, „Użytkowników” i „Superużytkowników”.
Struktura katalogów LDA opiera się w dużej mierze na nazwie wyróżniającej (DN), ponieważ jest ona wykorzystywana do identyfikacji każdego wpisu. Dzieje się tak, ponieważ zawiera ona unikalną nazwę i służy do pobierania względnej nazwy wyróżniającej (RDN).
Wspólne elementy LDAP
Aby zrozumieć organizację danych LDAP, konieczne jest poznanie wspólnych elementów LDAP, które składają się na konstrukcję wpisów w systemie LDAP.
Do podstawowych elementów danych LDAP należą:
- Atrybuty
- Wpisy
- Drzewa informacji o danych
Atrybuty
Atrybuty w LDAP to pary klucz-wartość. Przechowują one dane w systemie LDAP. Na przykład, atrybut mail służy do przechowywania adresu poczty elektronicznej w systemie LDAP.
Poczta: [email protected]
Wpisy
Wpisy w systemie LDAP są powiązane z przypisaniami w celu nadania im znaczenia. Wpisy można traktować jako zbiór powiązanych atrybutów.
Na przykład, dane w formacie LDIF (LDAP Data Interchange Format) będą wyglądać następująco:
dn: sn=Hogwarts, ou=wizards, dc=WizardingWorld, dc=fiction objectclass: wizard sn: Hogwarts cn: Harry Potter
Drzewa informacji o danych
Drzewa informacji o danych, znane również jako DIT, reprezentują dane i umożliwiają dostęp do nich w systemie LDAP. Ze względu na rozgałęziony charakter danych, logiczne jest przedstawienie ich w formie drzewa. Jest to analogiczne do systemu plików z powiązaniami rodzic-dziecko.
Organizacja danych LDAP
Mając podstawową wiedzę na temat encji, możemy teraz przeanalizować organizację danych w systemie LDAP.
LDAP wykorzystuje DIT do organizowania i strukturyzowania danych. Jak to się odbywa? Zobaczmy.
Wpisy w DIT są umieszczane w sposób hierarchiczny. Gdy tworzony jest nowy wpis, jest on dodawany do struktury drzewiastej jako element potomny istniejącego wpisu.
Cały proces rozpoczyna się na szczycie drzewa hierarchii DIT. Ze względu na to, że obejmuje wszystkie wpisy potomne, najczęściej jest oznaczany jako organizacja, np. „dc=com” lub „example”. Odbywa się to za pomocą komponentów domeny, aby ułatwić zarządzanie. W ten sposób administrator może określić lokalizację za pomocą „l=nazwa_lokalizacji” lub segmentów organizacyjnych, takich jak „ou=tech”, „marketing” itd.
We wpisach używana jest jednostka organizacyjna (OU) „objectClass”. Dzieje się tak dlatego, że wpisy mogą używać etykiety atrybutu „ou=”. Są one proste i umożliwiają skuteczne kategoryzowanie i wyszukiwanie informacji w DIT.
Następnie pojawia się kolejna ważna koncepcja, czyli względna nazwa wyróżniająca. Jest to względna nazwa elementu w zależności od jego poziomu w hierarchii DIT. Aby uzyskać dostęp do wpisu, należy wprowadzić wartości RDN podmiotu wraz z wartością RDN rodzica.
W ten sposób tworzony jest łańcuch wartości RDN, który przechodzi od dołu do góry, wyznaczając ścieżkę do danego wpisu. Ten łańcuch wartości RDN jest znany jako „Nazwa wyróżniająca lub DN”.
Innymi słowy, podczas tworzenia wpisu, konieczne jest podanie nazwy wyróżniającej, aby LDAP wiedział, gdzie dokładnie należy umieścić nowe zasoby lub informacje. W związku z tym, RDN działa jako wartość względna, a DN jest bardziej ścieżką bezwzględną.
Znaczenie LDAP
W tej części przyjrzymy się znaczeniu protokołu LDAP z dwóch perspektyw:
- Zarządzanie usługą katalogową: LDAP posiada odpowiednie mechanizmy do przechowywania danych katalogowych LDAP oraz do uzyskiwania do nich dostępu. Zostało to omówione w sekcjach „Jak działa LDAP i komponenty danych” oraz „Organizacja”. LDAP to sposób na zarządzanie, przechowywanie, dostęp i zabezpieczenie danych. Umożliwia on również sprawne wyszukiwanie informacji i oferuje skalowalność oraz replikację.
- Uwierzytelnianie użytkownika: poza zarządzaniem usługami katalogowymi, LDAP wyróżnia się w procesie uwierzytelniania i autoryzacji użytkowników. Po nawiązaniu połączenia, użytkownik ma dostęp do przechowywanych zasobów, zgodnie z zasadami dostępu ustalonymi przez administratora.
LDAP a Active Directory
Często dochodzi do mylenia LDAP i Active Directory. LDAP i Active Directory firmy Microsoft ściśle ze sobą współpracują, zapewniając organizacjom narzędzia do bezpiecznego przechowywania danych organizacyjnych i dostępu do nich w różnych działach.
LDAP jest protokołem, podczas gdy Active Directory to usługa katalogowa, która przechowuje dane organizacyjne w strukturze przypominającej drzewo.
LDAP działa jako protokół komunikacyjny, umożliwiający dostęp do serwerów katalogowych, takich jak Active Directory.
Podsumowanie
LDAP to kluczowy protokół do pracy z usługami Active Directory. Jest to lekki protokół, który nie obciąża usług i serwerów, z którymi współpracuje. Co więcej, jego otwarty, niezależny od dostawców i ustandaryzowany charakter sprawia, że można go łatwo zintegrować z istniejącymi rozwiązaniami.
Zachęcamy również do zapoznania się z tematem uwierzytelniania wieloskładnikowego (MFA).