2 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żliwe jest skonfigurowanie provisioningu użytkowników JIT (just-in-time) dla użytkowników LDAP. W takim przypadku nie jest wymagane, aby użytkownik istniał już w Zabbix. Konto użytkownika może zostać utworzone, gdy użytkownik zaloguje się do Zabbix po raz pierwszy.

Gdy użytkownik LDAP wprowadza swój login LDAP i hasło, Zabbix sprawdza domyślny serwer LDAP, czy taki użytkownik istnieje. Jeśli użytkownik istnieje i nie ma jeszcze konta w Zabbix, w Zabbix tworzony jest nowy użytkownik, a użytkownik może się zalogować.

Użytkownik utworzony za pomocą provisioningu JIT 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ż provisionowani.

Jeśli provisioning JIT jest włączony, na karcie Authentication należy określić grupę użytkowników dla użytkowników zdeprovisionowanych.

Provisioning JIT umożliwia również aktualizację provisionowanych kont użytkowników na podstawie zmian w LDAP. Na przykład, jeśli użytkownik zostanie przeniesiony z jednej grupy LDAP do innej, użytkownik zostanie również przeniesiony z jednej grupy do innej w Zabbix; jeśli użytkownik zostanie usunięty z grupy LDAP, użytkownik zostanie również usunięty z grupy w Zabbix i, jeśli nie należy do żadnej innej grupy, dodany do grupy użytkowników dla użytkowników zdeprovisionowanych. Provisionowane konta użytkowników są aktualizowane zgodnie ze skonfigurowanym okresem provisioningu lub gdy użytkownik loguje się do Zabbix.

Należy pamiętać, że provisioning w tle jest wykonywany przez frontend Zabbix, gdy użytkownik wchodzi z nim w interakcję lub ma co najmniej jedną otwartą stronę frontend 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 wiążący (konto usługi) — określone konto LDAP jest ustawione w Bind DN / Bind password i jest używane przez Zabbix do wyszukiwania oraz provisioningu. Jest to zalecana i najbardziej elastyczna opcja, ponieważ Zabbix może wykonywać wyszukiwania 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 (bez skonfigurowanych 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 provisioningowe, które wymagają uwierzytelnienia w LDAP poza sesją logowania użytkownika (na przykład użycie przycisku Provision now lub uruchomienie provisioningu w tle, gdy użytkownik nie jest aktywnie zalogowany), nie mogą się uwierzytelnić i dlatego nie będą działać. Provisioning i aktualizacje dla 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
Enable LDAP authentication Zaznacz pole wyboru, aby włączyć uwierzytelnianie LDAP.
Enable JIT provisioning Zaznacz pole wyboru, aby włączyć aprowizację JIT.
Servers Kliknij Add, aby skonfigurować serwer LDAP (zobacz konfiguracja serwera LDAP poniżej).
Case-sensitive login Odznacz pole wyboru, aby wyłączyć rozróżnianie wielkości liter podczas logowania dla nazw użytkowników (domyślnie włączone).
Wyłączenie rozróżniania wielkości liter podczas logowania pozwala na przykład zalogować się jako „admin”, nawet jeśli użytkownik Zabbix to „Admin” lub „ADMIN”.
Pamiętaj, że jeśli rozróżnianie wielkości liter podczas logowania jest wyłączone i istnieje wielu użytkowników Zabbix o podobnych nazwach użytkownika (np. Admin i admin), logowanie dla tych użytkowników będzie zawsze odrzucane z następującym komunikatem o błędzie: „Authentication failed: supplied credentials are not unique.”
Provisioning period Ustaw okres aprowizacji, tj. jak często zalogowany użytkownik będzie aprowizowany podczas pracy z frontend.

Konfiguracja serwera LDAP

Parametry konfiguracji serwera LDAP:

Parameter Description
Name Nazwa serwera LDAP w konfiguracji Zabbix.
Host Nazwa hosta, IP lub URI serwera LDAP. Przykłady: ldap.example.com, 127.0.0.1, ldap://ldap.example.com
Dla bezpiecznego serwera LDAP użyj protokołu ldaps i nazwy hosta. Przykład: ldaps://ldap.example.com
W OpenLDAP 2.x.x i nowszych można użyć pełnego URI LDAP w postaci ldap://hostname:port lub ldaps://hostname:port.
Port Port serwera LDAP. Domyślnie 389.
Dla bezpiecznego połączenia LDAP numer portu to zwykle 636.
Nie jest używany przy korzystaniu z pełnych URI LDAP.
Base 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 (dla bezpośredniego wiązania użytkownika, patrz uwaga poniżej)
Search attribute Atrybut konta LDAP używany do wyszukiwania:
uid (dla OpenLDAP),
sAMAccountName (dla Microsoft Active Directory)
Bind DN Konto LDAP 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ż anonimowe wiązanie. Należy pamiętać, że anonimowe wiązanie może potencjalnie udostępnić konfigurację domeny nieuprawnionym użytkownikom (informacje o użytkownikach, komputerach, serwerach, grupach, usługach itp.). Ze względów bezpieczeństwa wyłącz anonimowe wiązania na hostach LDAP i zamiast tego używaj uwierzytelnionego dostępu.
Bind password Hasło LDAP konta używanego do wiązania i wyszukiwania na serwerze LDAP.
Description Opis serwera LDAP.
Configure JIT provisioning Zaznacz to pole wyboru, aby wyświetlić opcje związane z aprowizacją JIT.
Group configuration Wybierz metodę konfiguracji grup:
memberOf - przez wyszukiwanie użytkowników i atrybutu ich przynależności do grup
groupOfNames - przez wyszukiwanie grup za pomocą atrybutu member
Należy pamiętać, że memberOf jest preferowane, ponieważ działa szybciej; użyj groupOfNames, jeśli serwer LDAP nie obsługuje memberOf lub wymagane jest filtrowanie grup.
Group name attribute Określ atrybut, z którego ma być pobierana nazwa grupy ze wszystkich obiektów w atrybucie memberOf (zobacz pole User group membership attribute)
Nazwa grupy jest wymagana do mapowania grup użytkowników.
User group membership attribute 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=com
To pole jest dostępne tylko dla metody memberOf.
User name attribute Określ atrybut zawierający imię użytkownika.
User last name attribute Określ atrybut zawierający nazwisko użytkownika.
User group mapping Mapuj wzorzec grupy użytkowników LDAP na grupę użytkowników Zabbix i rolę użytkownika.
Jest to wymagane do określenia, jaką grupę/rolę otrzyma aprowizowany użytkownik w Zabbix.
Kliknij Add, aby dodać mapowanie.
Pole LDAP group pattern obsługuje symbole wieloznaczne. Nazwa grupy musi odpowiadać istniejącej grupie.
Jeśli użytkownik LDAP pasuje do kilku grup użytkowników Zabbix, stanie się członkiem wszystkich tych grup.
Jeśli użytkownik pasuje do kilku ról użytkowników Zabbix, otrzyma tę z najwyższym poziomem uprawnień.
Media type mapping Mapuj atrybuty LDAP użytkownika mediów (np. email) na media użytkownika Zabbix do wysyłania powiadomień (wartość atrybutu jest używana jako pole Send to mediów użytkownika).
Advanced configuration Kliknij etykietę Advanced configuration, aby wyświetlić zaawansowane opcje konfiguracji (patrz poniżej).
StartTLS Zaznacz 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.
Search filter Zdefiniuj własny 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 uwierzytelnienia
Na przykład, aby przeprowadzić wyszukiwanie z rozróżnianiem wielkości liter w środowisku LDAP lub Microsoft Active Directory niewrażliwym na wielkość liter, ciąg można zdefiniować następująco:
(%{attr}:caseExactMatch:=%{user}).
Jeśli filtr nie zostanie dostosowany, LDAP użyje domyślnego: (%{attr}=%{user}).

Aby skonfigurować serwer LDAP do bezpośredniego wiązania użytkownika, dodaj atrybut uid=%{user} do parametru Base DN (na przykład uid=%{user},dc=example,dc=com) i pozostaw parametry BindDN oraz Bind password puste. Podczas uwierzytelniania symbol zastępczy %{user} zostanie zastąpiony nazwą użytkownika wprowadzoną podczas logowania.
Przy bezpośrednim wiązaniu użytkownika Zabbix ma dostęp do poświadczeń użytkownika tylko podczas interaktywnego logowania. Dlatego zadania aprowizacji działające bez interaktywnego logowania (na przykład przycisk Provision now lub metoda API user.provision) będą ignorować 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. Użyj anonimowego wiązania lub dedykowanego użytkownika do wiązania (konta usługi), jeśli potrzebujesz, aby aprowizacja i wyszukiwania LDAP działały z frontend bez konieczności zalogowania użytkownika końcowego.

Poniższe pola są specyficzne dla metody Group configuration „groupOfNames”:

Parameter Description
Group base DN Ścieżka bazowa do grup na serwerze LDAP.
Group name attribute Określ atrybut, z którego ma być pobierana nazwa grupy w określonej ścieżce bazowej do grup.
Nazwa grupy jest wymagana do mapowania grup użytkowników.
Group member attribute Określ atrybut zawierający informacje o członkach grupy w LDAP (np. member).
Reference attribute Określ atrybut referencyjny dla filtra grupy (zobacz pole Group filter).
Następnie użyj %{ref} w filtrze grupy, aby pobrać wartości dla atrybutu określonego tutaj.
Group filter Określ filtr do pobrania grupy, 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 w pliku konfiguracyjnym /etc/openldap/ldap.conf wiersza TLS_REQCERT allow. Może to obniżyć bezpieczeństwo połączenia z katalogiem LDAP.

Zaleca się utworzenie osobnego 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 frontend Zabbix).
Takie podejście zapewnia większe bezpieczeństwo i nie wymaga zmiany parametru Bind password, gdy użytkownik zmieni własne hasło na serwerze LDAP.
W powyższej tabeli jest to nazwa konta ldap_search.

Testowanie dostępu

Przycisk Test umożliwia przetestowanie dostępu użytkownika:

Parameter Description
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.
User password Hasło użytkownika LDAP do przetestowania.