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.

Udostępnianie użytkowników

Możliwe jest skonfigurowanie JIT (just-in-time) udostępniania użytkowników 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, aby ustalić, czy taki użytkownik istnieje. Jeśli użytkownik istnieje i nie ma jeszcze konta w Zabbix, w Zabbix tworzony jest nowy użytkownik i użytkownik może się zalogować.

Użytkownik utworzony za pomocą udostępniania 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ż udostępnieni.

Jeśli udostępnianie JIT jest włączone, na karcie Authentication należy określić grupę użytkowników dla użytkowników wycofanych z udostępniania.

Udostępnianie JIT umożliwia również aktualizowanie udostępnionych 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, zostanie dodany do grupy użytkowników dla użytkowników wycofanych z udostępniania. Udostępnione konta użytkowników są aktualizowane zgodnie ze skonfigurowanym okresem udostępniania lub gdy użytkownik loguje się do Zabbix.

Należy pamiętać, że udostępnianie w tle jest wykonywane przez frontend Zabbix, gdy użytkownik z niego korzysta lub ma co najmniej jedną otwartą stronę frontend w przeglądarce. Nie ma dedykowanych procesów działających w tle do udostępniania 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 anonimowe zapytania.
  • 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 udostępniania. Jest to zalecana i najbardziej elastyczna opcja, ponieważ Zabbix może wykonywać wyszukiwania i udostępnianie 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); konfiguruje się to 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 związane z udostępnianiem, które wymagają uwierzytelnienia w LDAP poza sesją logowania użytkownika (na przykład użycie przycisku Provision now lub uruchomienie udostępniania w tle, gdy użytkownik nie jest aktywnie zalogowany), nie mogą się uwierzytelnić i dlatego nie będą działać. Udostępnianie 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:

Parameter Description
Enable LDAP authentication Zaznacz pole wyboru, aby włączyć uwierzytelnianie LDAP.
Enable JIT provisioning Zaznacz pole wyboru, aby włączyć JIT provisioning.
Servers Kliknij Add, aby skonfigurować serwer LDAP (zobacz konfiguracja serwera LDAP poniżej).
Case-sensitive login Usuń zaznaczenie pola wyboru, aby wyłączyć rozróżnianie wielkości liter podczas logowania nazw użytkowników (domyślnie włączone).
Wyłączenie rozróżniania wielkości liter podczas logowania umożliwia na przykład zalogowanie się jako "admin", nawet jeśli użytkownik Zabbix to "Admin" lub "ADMIN".
Należy pamiętać, że jeśli rozróżnianie 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 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 provisioning, czyli jak często zalogowany użytkownik będzie provisionowany podczas pracy z frontendem.

Konfiguracja serwera LDAP

Parametry konfiguracji serwera LDAP:

Parameter Description
Name 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 URI LDAP w postaci ldap://hostname:port lub ldaps://hostname:port.
Port Port serwera LDAP. Domyślnie 389.
W przypadku bezpiecznego połączenia LDAP numer portu wynosi zwykle 636.
Nie jest używany przy korzystaniu z pełnych URI LDAP.
Base DN Bazowa ścieżka 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, zobacz uwagę 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 potencjalnie udostępnia konfigurację domeny nieautoryzowanym 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 JIT provisioning.
Group configuration Wybierz metodę konfiguracji grup:
memberOf - poprzez wyszukiwanie użytkowników i ich atrybutu członkostwa w grupie
groupOfNames - poprzez 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 niezbędna 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ć takie informacje: 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 z nich.
Jeśli użytkownik pasuje do kilku ról użytkowników Zabbix, otrzyma tę o najwyższym poziomie uprawnień spośród nich.
Media type mapping Mapuj atrybuty LDAP użytkownika media (np. e-mail) na media użytkownika Zabbix do wysyłania powiadomień (wartość atrybutu jest używana jako pole media Send to).
Advanced configuration Kliknij nagłówek Advanced configuration, aby wyświetlić zaawansowane opcje konfiguracji (zobacz poniżej).
StartTLS Zaznacz pole wyboru, aby używać operacji StartTLS podczas łączenia z serwerem LDAP. Połączenie zostanie przerwane, 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 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 uwierzytelnienia
Na przykład, aby przeprowadzić wyszukiwanie z uwzględnieniem wielkości liter w środowisku LDAP lub Microsoft Active Directory, które domyślnie nie rozróżnia wielkości 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 dla 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 wpisaną podczas logowania.
W przypadku bezpośredniego wiązania użytkownika Zabbix ma dostęp do poświadczeń użytkownika tylko podczas interaktywnego logowania. Dlatego zadania aprowizacji, które działają bez interaktywnego logowania (na przykład przycisk Provision now lub metoda API user.provision), zignorują 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 wiążącego (konta usługowego), jeśli potrzebujesz, aby aprowizacja i wyszukiwania LDAP działały z frontend bez konieczności logowania się użytkownika końcowego.

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

Parameter Description
Group base DN Bazowa ścieżka do grup na serwerze LDAP.
Group name attribute Określ atrybut, z którego ma być pobierana nazwa grupy w określonej bazowej ścieżce do grup.
Nazwa grupy jest niezbędna 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 "User1" jest członkiem.

W przypadku problemów z certyfikatami, aby bezpieczne połączenie LDAP (ldaps) działało, może być konieczne dodanie linii TLS_REQCERT allow do pliku konfiguracyjnego /etc/openldap/ldap.conf. Może to obniżyć 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 frontend Zabbix).
Takie podejście zapewnia większe bezpieczeństwo i nie wymaga zmiany Bind password, gdy użytkownik zmienia 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.