LDAP
Przegląd
Zewnętrzne uwierzytelnianie LDAP może być używane do sprawdzania nazw użytkowników i haseł.
Uwierzytelnianie LDAP w Zabbix działa co najmniej z Microsoft Active Directory i OpenLDAP.
Jeśli skonfigurowano tylko logowanie LDAP, użytkownik musi również istnieć w Zabbix, jednak jego hasło Zabbix nie będzie używane. Jeśli uwierzytelnianie zakończy się powodzeniem, Zabbix dopasuje lokalną nazwę użytkownika do atrybutu nazwy użytkownika zwróconego przez LDAP.
Provisioning użytkowników
Można skonfigurować JIT (just-in-time) provisioning użytkowników LDAP. W takim przypadku użytkownik nie musi już istnieć w Zabbix. Konto użytkownika może zostać utworzone, gdy użytkownik loguje się do Zabbix po raz pierwszy.
Gdy użytkownik LDAP wprowadzi swój login i hasło LDAP, Zabbix sprawdza, czy ten użytkownik istnieje na domyślnym serwerze LDAP. Jeśli użytkownik istnieje i nie ma jeszcze konta w Zabbix, w Zabbix tworzony jest nowy użytkownik, który może się zalogować.
Użytkownik utworzony za pomocą JIT provisioning jest powiązany z serwerem LDAP (katalogiem), który w momencie utworzenia jest ustawiony jako domyślny. Późniejsza zmiana domyślnego serwera LDAP nie zmienia ani nie aktualizuje serwera LDAP powiązanego z użytkownikami, którzy zostali już utworzeni za pomocą provisioning.
Jeśli JIT provisioning jest włączony, na karcie Authentication należy określić grupę użytkowników przeznaczoną dla użytkowników usuniętych z provisioningu.
JIT provisioning umożliwia również aktualizowanie utworzonych kont użytkowników na podstawie zmian w LDAP. Na przykład jeśli użytkownik zostanie przeniesiony z jednej grupy LDAP do innej, zostanie również przeniesiony z jednej grupy do innej w Zabbix; jeśli użytkownik zostanie usunięty z grupy LDAP, zostanie również usunięty z grupy w Zabbix, a jeśli nie należy do żadnej innej grupy, zostanie dodany do grupy użytkowników przeznaczonej dla użytkowników usuniętych z provisioningu. Utworzone konta użytkowników są aktualizowane zgodnie ze skonfigurowanym okresem provisioningu lub podczas logowania użytkownika do Zabbix.
Należy pamiętać, że provisioning w tle jest wykonywany przez frontend Zabbix, gdy użytkownik korzysta z niego lub ma przynajmniej otwartą stronę frontendu w przeglądarce. Nie ma dedykowanych procesów działających w tle do provisioningu użytkowników.
LDAP obsługuje trzy sposoby wiązania z katalogiem na potrzeby uwierzytelniania i wyszukiwania:
- Wiązanie anonimowe - nie podano Bind DN / Bind password, a serwer LDAP zezwala na zapytania anonimowe.
- Dedykowany użytkownik do wiązania (konto usługi) - określone konto LDAP jest ustawione w polach Bind DN / Bind password i używane przez Zabbix do wyszukiwania oraz provisioningu. Jest to zalecana i najbardziej elastyczna opcja, ponieważ Zabbix może wykonywać wyszukiwanie i provisioning w tle bez poświadczeń użytkownika końcowego.
- Bezpośrednie wiązanie użytkownika - Zabbix wykonuje wiązanie przy użyciu poświadczeń wprowadzonych przez użytkownika podczas logowania (nie skonfigurowano Bind DN / Bind password); jest to konfigurowane przez uwzględnienie symbolu zastępczego, takiego jak
uid=%{user}, w Base DN. W tym trybie Zabbix ma dostęp do hasła użytkownika tylko podczas interaktywnego logowania. W rezultacie działania provisioningu, które wymagają uwierzytelnienia w LDAP poza sesją logowania użytkownika (na przykład za pomocą przycisku Provision now lub podczas uruchamiania provisioningu w tle, gdy użytkownik nie jest aktywnie zalogowany), nie mogą zostać uwierzytelnione i dlatego nie będą działać. Provisioning i aktualizacje w przypadku bezpośredniego wiązania użytkownika odbywają się wyłącznie w momencie logowania użytkownika.
Wiele serwerów
W razie potrzeby można zdefiniować kilka serwerów LDAP. Na przykład do uwierzytelniania innej grupy użytkowników można użyć innego serwera. Po skonfigurowaniu serwerów LDAP w konfiguracji grupy użytkowników będzie można wybrać wymagany serwer LDAP dla odpowiedniej grupy użytkowników.
Jeśli użytkownik należy do wielu grup użytkowników i wielu serwerów LDAP, do uwierzytelniania zostanie użyty pierwszy serwer z listy serwerów LDAP posortowanej według nazwy w porządku rosnącym.
Konfiguracja

Parametry konfiguracji:
| Parametr | Opis |
|---|---|
| Włącz uwierzytelnianie LDAP | Zaznacz pole wyboru, aby włączyć uwierzytelnianie LDAP. |
| Włącz aprowizację JIT | Zaznacz pole wyboru, aby włączyć aprowizację JIT. |
| Serwery | Kliknij Dodaj, aby skonfigurować serwer LDAP (zobacz poniżej Konfiguracja serwera LDAP). |
| Logowanie z uwzględnieniem wielkości liter | Odznacz pole wyboru, aby wyłączyć uwzględnianie wielkości liter podczas logowania przy użyciu nazw użytkowników (domyślnie włączone). Wyłączenie uwzględniania wielkości liter podczas logowania umożliwia na przykład zalogowanie się jako „admin”, nawet jeśli użytkownik Zabbix ma nazwę „Admin” lub „ADMIN”. Należy pamiętać, że jeśli uwzględnianie wielkości liter podczas logowania jest wyłączone i istnieje wielu użytkowników Zabbix o podobnych nazwach użytkowników (np. Admin i admin), logowanie tych użytkowników będzie zawsze odrzucane z następującym komunikatem o błędzie: „Authentication failed: supplied credentials are not unique.” |
| Okres aprowizacji | Ustaw okres aprowizacji, czyli częstotliwość aprowizowania zalogowanego użytkownika podczas pracy z frontendem. |
Konfiguracja serwera LDAP

Parametry konfiguracji serwera LDAP:
| Parametr | Opis |
|---|---|
| Nazwa | Nazwa serwera LDAP w konfiguracji Zabbix. |
| Host | Nazwa hosta, adres IP lub URI serwera LDAP. Przykłady: ldap.example.com, 127.0.0.1, ldap://ldap.example.com W przypadku bezpiecznego serwera LDAP użyj protokołu ldaps i nazwy hosta. Przykład: ldaps://ldap.example.com W przypadku OpenLDAP 2.x.x i nowszych można użyć pełnego identyfikatora URI LDAP w postaci ldap://hostname:port lub ldaps://hostname:port. |
| Port | Port serwera LDAP. Wartość domyślna to 389. W przypadku bezpiecznego połączenia LDAP numer portu wynosi zwykle 636. Nie jest używany w przypadku korzystania z pełnych identyfikatorów URI LDAP. |
| Bazowa nazwa DN | Ścieżka bazowa do kont użytkowników na serwerze LDAP: ou=Users,ou=system (dla OpenLDAP), DC=company,DC=com (dla Microsoft Active Directory) uid=%{user},dc=example,dc=com (w przypadku bezpośredniego wiązania użytkownika, zobacz uwagę poniżej) |
| Atrybut wyszukiwania | Atrybut konta LDAP używany do wyszukiwania: uid (dla OpenLDAP), sAMAccountName (dla Microsoft Active Directory) |
| Bind DN | Konto LDAP używane do wiązania i wyszukiwania na serwerze LDAP, przykłady: uid=ldap_search,ou=system (dla OpenLDAP), CN=ldap_search,OU=user_group,DC=company,DC=com (dla Microsoft Active Directory) Obsługiwane jest również wiązanie anonimowe. Należy pamiętać, że wiązanie anonimowe może potencjalnie udostępnić konfigurację domeny nieupoważnionym użytkownikom (informacje o użytkownikach, komputerach, serwerach, grupach, usługach itd.). Ze względów bezpieczeństwa wyłącz wiązania anonimowe na hostach LDAP i zamiast tego używaj uwierzytelnionego dostępu. |
| Hasło Bind | Hasło LDAP konta używanego do wiązania i wyszukiwania na serwerze LDAP. |
| Opis | Opis serwera LDAP. |
| Konfiguruj aprowizację JIT | Zaznacz to pole wyboru, aby wyświetlić opcje związane z aprowizacją JIT. |
| Konfiguracja grup | Wybierz metodę konfiguracji grup: memberOf - przez wyszukiwanie użytkowników i ich atrybutu członkostwa w grupie groupOfNames - przez wyszukiwanie grup za pomocą atrybutu member Należy pamiętać, że preferowana jest metoda memberOf, ponieważ jest szybsza; użyj groupOfNames, jeśli serwer LDAP nie obsługuje memberOf lub wymagane jest filtrowanie grup. |
| Atrybut nazwy grupy | Określ atrybut, z którego należy pobrać nazwę grupy ze wszystkich obiektów w atrybucie memberOf (zobacz pole Atrybut członkostwa użytkownika w grupie)Nazwa grupy jest niezbędna do mapowania grup użytkowników. |
| Atrybut członkostwa użytkownika w grupie | Określ atrybut zawierający informacje o grupach, do których należy użytkownik (np. memberOf).Na przykład atrybut memberOf może zawierać informacje takie jak: memberOf=cn=zabbix-admin,ou=Groups,dc=example,dc=comTo pole jest dostępne tylko dla metody memberOf. |
| Atrybut imienia użytkownika | Określ atrybut zawierający imię użytkownika. |
| Atrybut nazwiska użytkownika | Określ atrybut zawierający nazwisko użytkownika. |
| Mapowanie grup użytkowników | Zmapuj wzorzec grupy użytkowników LDAP na grupę użytkowników i rolę użytkownika Zabbix. Jest to wymagane do określenia grupy użytkowników i roli, które aprowizowany użytkownik otrzyma w Zabbix. Kliknij Dodaj, aby dodać mapowanie. Pole Wzorzec grupy LDAP obsługuje symbole wieloznaczne (zobacz uwagę poniżej). Nazwa grupy musi odpowiadać istniejącej grupie. Jeśli użytkownik LDAP pasuje do kilku grup użytkowników Zabbix, staje się członkiem wszystkich tych grup. Jeśli użytkownik pasuje do kilku ról użytkowników Zabbix, otrzyma tę, która ma spośród nich najwyższy poziom uprawnień. |
| Mapowanie typów mediów | Zmapuj atrybuty LDAP użytkownika mediów (np. adres e-mail) na media użytkownika Zabbix w celu wysyłania powiadomień (wartość atrybutu jest używana jako pole Wyślij do mediów). |
| Konfiguracja zaawansowana | Kliknij nagłówek Konfiguracja zaawansowana, aby wyświetlić zaawansowane opcje konfiguracji (zobacz poniżej). |
| StartTLS | Zaznacz to pole wyboru, aby używać operacji StartTLS podczas łączenia z serwerem LDAP. Połączenie nie powiedzie się, jeśli serwer nie obsługuje StartTLS. StartTLS nie może być używany z serwerami korzystającymi z protokołu ldaps. |
| Filtr wyszukiwania | Zdefiniuj niestandardowy ciąg podczas uwierzytelniania użytkownika w LDAP. Obsługiwane są następujące symbole zastępcze:%{attr} - nazwa atrybutu wyszukiwania (uid, sAMAccountName)%{user} - wartość nazwy użytkownika do uwierzytelnieniaNa przykład, aby przeprowadzić wyszukiwanie z uwzględnieniem wielkości liter w środowisku LDAP lub Microsoft Active Directory, w którym wielkość liter nie ma znaczenia, ciąg można zdefiniować następująco: (%{attr}:caseExactMatch:=%{user}).Jeśli filtr nie zostanie dostosowany, LDAP użyje wartości domyślnej: (%{attr}=%{user}). |
Aby skonfigurować serwer LDAP do bezpośredniego wiązania użytkownika, dołącz atrybut uid=%{user} do parametru Bazowa nazwa DN (na przykład uid=%{user},dc=example,dc=com) i pozostaw parametry BindDN oraz Hasło Bind puste.
Podczas uwierzytelniania symbol zastępczy %{user} zostanie zastąpiony nazwą użytkownika wprowadzoną podczas logowania.
W przypadku bezpośredniego wiązania użytkownika Zabbix ma dostęp do danych uwierzytelniających użytkownika tylko podczas interaktywnego logowania.
Dlatego zadania aprowizacji wykonywane bez interaktywnego logowania (na przykład przycisk Aprowizuj teraz lub metoda API user.provision) pominą użytkowników uwierzytelniających się za pomocą bezpośredniego wiązania użytkownika, ponieważ Zabbix nie może wiązać się w ich imieniu.
Jeśli aprowizacja i wyszukiwanie LDAP mają działać z poziomu frontendu bez konieczności zalogowania użytkownika końcowego, użyj wiązania anonimowego lub dedykowanego użytkownika bind (konta usługi).
W polu Wzorzec grupy LDAP symbol wieloznaczny * działa jak .* w wyrażeniach regularnych i dopasowuje zero lub więcej znaków.
Na przykład wzorzec *Demo*Admin pasuje zarówno do grup LDAP WebDemoSuperAdmin, jak i WebDemoAdmin.
Wzorzec musi pasować do całej nazwy grupy, dlatego Demo*Admin (bez początkowego *) nie pasuje do żadnej z tych grup.
Następujące pola dotyczą wyłącznie metody groupOfNames w polu Konfiguracja grup:

| Parametr | Opis |
|---|---|
| Bazowa nazwa DN grupy | Ścieżka bazowa do grup na serwerze LDAP. |
| Atrybut nazwy grupy | Określ atrybut, z którego należy pobrać nazwę grupy w określonej bazowej ścieżce do grup. Nazwa grupy jest niezbędna do mapowania grup użytkowników. |
| Atrybut członków grupy | Określ atrybut zawierający informacje o członkach grupy w LDAP (np. member). |
| Atrybut referencyjny | Określ atrybut referencyjny dla filtra grupy (zobacz pole Filtr grupy). Następnie użyj %{ref} w filtrze grupy, aby pobrać wartości określonego tutaj atrybutu. |
| Filtr grupy | Określ filtr pobierający grupę, której członkiem jest użytkownik. Na przykład (member=uid=%{ref},ou=Users,dc=example,dc=com) dopasuje „User1”, jeśli atrybut member grupy ma wartość uid=User1,ou=Users,dc=example,dc=com, i zwróci grupę, której członkiem jest „User1”. |
W przypadku problemów z certyfikatami, aby bezpieczne połączenie LDAP (ldaps) działało, może być konieczne dodanie wiersza TLS_REQCERT allow do pliku konfiguracyjnego /etc/openldap/ldap.conf.
Może to zmniejszyć bezpieczeństwo połączenia z katalogiem LDAP.
Zaleca się utworzenie oddzielnego konta LDAP (Bind DN) do wykonywania wiązania i wyszukiwania na serwerze LDAP, z minimalnymi uprawnieniami w LDAP, zamiast używania rzeczywistych kont użytkowników (używanych do logowania do frontendu Zabbix).
Takie podejście zapewnia większe bezpieczeństwo i eliminuje konieczność zmiany Hasła Bind, gdy użytkownik zmieni własne hasło na serwerze LDAP.
W powyższej tabeli jest to konto o nazwie ldap_search.
Testowanie dostępu
Przycisk Testuj umożliwia przetestowanie dostępu użytkownika:
| Parametr | Opis |
|---|---|
| Login | Nazwa użytkownika LDAP do przetestowania (wstępnie wypełniona bieżącą nazwą użytkownika z frontend Zabbix). Ta nazwa użytkownika musi istnieć na serwerze LDAP. Zabbix nie aktywuje uwierzytelniania LDAP, jeśli nie będzie w stanie uwierzytelnić testowanego użytkownika. |
| Hasło użytkownika | Hasło użytkownika LDAP do przetestowania. |