2 LDAP

Übersicht

Externe LDAP-Authentifizierung kann verwendet werden, um Benutzernamen und Passwörter zu überprüfen.

Die LDAP-Authentifizierung von Zabbix funktioniert mindestens mit Microsoft Active Directory und OpenLDAP.

Wenn nur die LDAP-Anmeldung konfiguriert ist, muss der Benutzer auch in Zabbix vorhanden sein, sein Zabbix-Passwort wird jedoch nicht verwendet. Wenn die Authentifizierung erfolgreich ist, gleicht Zabbix einen lokalen Benutzernamen mit dem von LDAP zurückgegebenen Attribut für den Benutzernamen ab.

Benutzerbereitstellung

Es ist möglich, JIT-Benutzerbereitstellung (just-in-time) für LDAP-Benutzer zu konfigurieren. In diesem Fall ist es nicht erforderlich, dass ein Benutzer bereits in Zabbix existiert. Das Benutzerkonto kann erstellt werden, wenn sich der Benutzer zum ersten Mal bei Zabbix anmeldet.

Wenn ein LDAP-Benutzer seinen LDAP-Benutzernamen und sein Passwort eingibt, prüft Zabbix den standardmäßigen LDAP-Server darauf, ob dieser Benutzer existiert. Wenn der Benutzer existiert und noch kein Konto in Zabbix hat, wird in Zabbix ein neuer Benutzer erstellt und der Benutzer kann sich anmelden.

Ein über JIT-Bereitstellung erstellter Benutzer wird dem LDAP-Server (Verzeichnis) zugeordnet, der zum Zeitpunkt der Erstellung als Standard festgelegt ist. Eine spätere Änderung des standardmäßigen LDAP-Servers ändert oder aktualisiert nicht den mit bereits bereitgestellten Benutzern verknüpften LDAP-Server.

Wenn die JIT-Bereitstellung aktiviert ist, muss auf der Registerkarte Authentication eine Benutzergruppe für deprovisionierte Benutzer angegeben werden.

Die JIT-Bereitstellung ermöglicht außerdem, bereitgestellte Benutzerkonten anhand von Änderungen in LDAP zu aktualisieren. Wenn ein Benutzer beispielsweise von einer LDAP-Gruppe in eine andere verschoben wird, wird der Benutzer auch in Zabbix von einer Gruppe in eine andere verschoben; wenn ein Benutzer aus einer LDAP-Gruppe entfernt wird, wird der Benutzer auch in Zabbix aus der Gruppe entfernt und, falls er keiner anderen Gruppe angehört, der Benutzergruppe für deprovisionierte Benutzer hinzugefügt. Bereitgestellte Benutzerkonten werden basierend auf dem konfigurierten Bereitstellungsintervall oder bei der Anmeldung des Benutzers bei Zabbix aktualisiert.

Beachten Sie, dass die Hintergrundbereitstellung durch das Zabbix Frontend erfolgt, wenn der Benutzer damit interagiert oder zumindest eine Frontend-Seite im Browser geöffnet hat. Es gibt keine dedizierten Hintergrundprozesse für die Benutzerbereitstellung.

LDAP unterstützt drei Möglichkeiten, sich zur Authentifizierung und für Suchvorgänge an das Verzeichnis zu binden:

  • Anonyme Bindung — es werden kein Bind DN / Bind password angegeben und der LDAP-Server erlaubt anonyme Abfragen.
  • Dedizierter Bind-Benutzer (Servicekonto) — ein bestimmtes LDAP-Konto wird in Bind DN / Bind password festgelegt und von Zabbix für Suche und Bereitstellung verwendet. Dies ist die empfohlene und flexibelste Option, da Zabbix Suchvorgänge und Hintergrundbereitstellung ohne Anmeldedaten des Endbenutzers durchführen kann.
  • Direkte Benutzerbindung — Zabbix führt die Bindung mit den Anmeldedaten durch, die der Benutzer bei der Anmeldung eingibt (es ist kein Bind DN / Bind password konfiguriert); dies wird durch Einfügen eines Platzhalters wie uid=%{user} in die Base DN konfiguriert. In diesem Modus hat Zabbix nur während der interaktiven Anmeldung Zugriff auf das Passwort des Benutzers. Daher können Bereitstellungsaktionen, die eine Authentifizierung bei LDAP außerhalb der Anmeldesitzung des Benutzers erfordern (zum Beispiel über die Schaltfläche Provision now oder bei der Ausführung der Hintergrundbereitstellung, wenn der Benutzer nicht aktiv angemeldet ist), nicht authentifiziert werden und funktionieren daher nicht. Bereitstellung und Aktualisierungen bei direkter Benutzerbindung erfolgen nur in dem Moment, in dem sich der Benutzer anmeldet.

Mehrere Server

Bei Bedarf können mehrere LDAP-Server definiert werden. So kann beispielsweise ein anderer Server verwendet werden, um eine andere Benutzergruppe zu authentifizieren. Sobald LDAP-Server konfiguriert sind, kann in der Konfiguration der Benutzergruppe der erforderliche LDAP-Server für die jeweilige Benutzergruppe ausgewählt werden.

Wenn ein Benutzer mehreren Benutzergruppen und mehreren LDAP-Servern angehört, wird für die Authentifizierung der erste Server in der nach Namen aufsteigend sortierten Liste der LDAP-Server verwendet.

Konfiguration

Konfigurationsparameter:

Parameter Beschreibung
LDAP-Authentifizierung aktivieren Aktivieren Sie das Kontrollkästchen, um die LDAP-Authentifizierung zu aktivieren.
JIT-Bereitstellung aktivieren Aktivieren Sie das Kontrollkästchen, um die JIT-Bereitstellung zu aktivieren.
Server Klicken Sie auf Hinzufügen, um einen LDAP-Server zu konfigurieren (siehe unten LDAP-Server-Konfiguration).
Groß-/Kleinschreibung bei der Anmeldung Deaktivieren Sie das Kontrollkästchen, um die Groß-/Kleinschreibung bei Benutzernamen zu deaktivieren (standardmäßig aktiviert).
Wenn die Groß-/Kleinschreibung bei der Anmeldung deaktiviert ist, können Sie sich beispielsweise als "admin" anmelden, auch wenn der Zabbix-Benutzer "Admin" oder "ADMIN" heißt.
Bitte beachten Sie, dass bei deaktivierter Groß-/Kleinschreibung und mehreren Zabbix-Benutzern mit ähnlichen Benutzernamen (z. B. Admin und admin) die Anmeldung für diese Benutzer immer mit der folgenden Fehlermeldung verweigert wird: "Authentication failed: supplied credentials are not unique."
Bereitstellungszeitraum Legen Sie den Bereitstellungszeitraum fest, d. h. wie oft der angemeldete Benutzer während der Arbeit mit dem Frontend bereitgestellt wird.

LDAP-Server-Konfiguration

LDAP-Server-Konfigurationsparameter:

Parameter Beschreibung
Name Name des LDAP-Servers in der Zabbix-Konfiguration.
Host Hostname, IP oder URI des LDAP-Servers. Beispiele: ldap.example.com, 127.0.0.1, ldap://ldap.example.com
Für einen sicheren LDAP-Server verwenden Sie das Protokoll ldaps und den Hostnamen. Beispiel: ldaps://ldap.example.com
Mit OpenLDAP 2.x.x und höher kann eine vollständige LDAP-URI der Form ldap://hostname:port oder ldaps://hostname:port verwendet werden.
Port Port des LDAP-Servers. Standard ist 389.
Für eine sichere LDAP-Verbindung ist die Portnummer normalerweise 636.
Wird bei Verwendung vollständiger LDAP-URIs nicht verwendet.
Base DN Basispfad zu den Benutzerkonten auf dem LDAP-Server:
ou=Users,ou=system (für OpenLDAP),
DC=company,DC=com (für Microsoft Active Directory)
uid=%{user},dc=example,dc=com (für direktes Benutzer-Binding, siehe Hinweis unten)
Search attribute LDAP-Kontoattribut, das für die Suche verwendet wird:
uid (für OpenLDAP),
sAMAccountName (für Microsoft Active Directory)
Bind DN LDAP-Konto für das Binding und die Suche auf dem LDAP-Server, Beispiele:
uid=ldap_search,ou=system (für OpenLDAP),
CN=ldap_search,OU=user_group,DC=company,DC=com (für Microsoft Active Directory)
Anonymes Binding wird ebenfalls unterstützt. Beachten Sie, dass anonymes Binding potenziell die Domänenkonfiguration für nicht autorisierte Benutzer öffnet (Informationen über Benutzer, Computer, Server, Gruppen, Dienste usw.). Deaktivieren Sie aus Sicherheitsgründen anonyme Bindings auf LDAP-Hosts und verwenden Sie stattdessen authentifizierten Zugriff.
Bind password LDAP-Passwort des Kontos für das Binding und die Suche auf dem LDAP-Server.
Description Beschreibung des LDAP-Servers.
Configure JIT provisioning Aktivieren Sie dieses Kontrollkästchen, um Optionen für JIT-Provisioning anzuzeigen.
Group configuration Wählen Sie die Methode zur Gruppenkonfiguration:
memberOf - durch Suche nach Benutzern und ihrem Gruppenmitgliedschaftsattribut
groupOfNames - durch Suche nach Gruppen über das member-Attribut
Beachten Sie, dass memberOf vorzuziehen ist, da es schneller ist; verwenden Sie groupOfNames, wenn Ihr LDAP-Server memberOf nicht unterstützt oder eine Gruppenfilterung erforderlich ist.
Group name attribute Geben Sie das Attribut an, aus dem der Gruppenname aus allen Objekten im Attribut memberOf ermittelt wird (siehe Feld User group membership attribute).
Der Gruppenname ist für das Mapping von Benutzergruppen erforderlich.
User group membership attribute Geben Sie das Attribut an, das Informationen über die Gruppen enthält, denen der Benutzer angehört (z. B. memberOf).
Zum Beispiel kann das Attribut memberOf Informationen wie diese enthalten: memberOf=cn=zabbix-admin,ou=Groups,dc=example,dc=com
Dieses Feld ist nur für die Methode memberOf verfügbar.
User name attribute Geben Sie das Attribut an, das den Vornamen des Benutzers enthält.
User last name attribute Geben Sie das Attribut an, das den Nachnamen des Benutzers enthält.
User group mapping Ordnen Sie ein LDAP-Benutzergruppenmuster einer Zabbix-Benutzergruppe und einer Benutzerrolle zu.
Dies ist erforderlich, um festzulegen, welche Benutzergruppe/Rolle der bereitgestellte Benutzer in Zabbix erhält.
Klicken Sie auf Add, um eine Zuordnung hinzuzufügen.
Das Feld LDAP group pattern unterstützt Platzhalter. Der Gruppenname muss mit einer vorhandenen Gruppe übereinstimmen.
Wenn ein LDAP-Benutzer mehreren Zabbix-Benutzergruppen entspricht, wird der Benutzer Mitglied aller dieser Gruppen.
Wenn ein Benutzer mehreren Zabbix-Benutzerrollen entspricht, erhält der Benutzer die Rolle mit dem höchsten Berechtigungsniveau unter ihnen.
Media type mapping Ordnen Sie die LDAP-Medien-Attribute des Benutzers (z. B. E-Mail) den Zabbix-Benutzermedien für den Versand von Benachrichtigungen zu (der Attributwert wird als Feld Send to des Mediums verwendet).
Advanced configuration Klicken Sie auf den Abschnitt Advanced configuration, um erweiterte Konfigurationsoptionen anzuzeigen (siehe unten).
StartTLS Aktivieren Sie das Kontrollkästchen, um beim Verbinden mit dem LDAP-Server die StartTLS-Operation zu verwenden. Die Verbindung schlägt fehl, wenn der Server StartTLS nicht unterstützt.
StartTLS kann nicht mit Servern verwendet werden, die das Protokoll ldaps verwenden.
Search filter Definieren Sie beim Authentifizieren eines Benutzers in LDAP eine benutzerdefinierte Zeichenfolge. Die folgenden Platzhalter werden unterstützt:
%{attr} - Name des Suchattributs (uid, sAMAccountName)
%{user} - Benutzername des zu authentifizierenden Benutzers
Um beispielsweise eine case-sensitive Suche in einer case-insensitiven LDAP- oder Microsoft-Active-Directory-Umgebung durchzuführen, kann die Zeichenfolge wie folgt definiert werden:
(%{attr}:caseExactMatch:=%{user}).
Wenn der Filter nicht angepasst wird, verwendet LDAP standardmäßig: (%{attr}=%{user}).

Um einen LDAP-Server für direktes Benutzer-Binding zu konfigurieren, fügen Sie dem Parameter Base DN ein Attribut uid=%{user} hinzu (zum Beispiel uid=%{user},dc=example,dc=com) und lassen Sie die Parameter BindDN und Bind password leer. Beim Authentifizieren wird der Platzhalter %{user} durch den beim Anmelden eingegebenen Benutzernamen ersetzt.
Beim direkten Benutzer-Binding hat Zabbix nur während der interaktiven Anmeldung Zugriff auf die Anmeldedaten des Benutzers. Daher werden Provisioning-Aufgaben, die ohne interaktive Anmeldung ausgeführt werden (zum Beispiel die Schaltfläche Provision now oder die API-Methode user.provision), Benutzer ignorieren, die sich über direktes Benutzer-Binding authentifizieren, da Zabbix nicht in ihrem Namen binden kann. Verwenden Sie anonymes Binding oder einen dedizierten Bind-Benutzer (Servicekonto), wenn Provisioning und LDAP-Suchen im Frontend funktionieren sollen, ohne dass der Endbenutzer angemeldet sein muss.

Die folgenden Felder sind spezifisch für "groupOfNames" als Methode Group configuration:

Parameter Beschreibung
Group base DN Basispfad zu den Gruppen auf dem LDAP-Server.
Group name attribute Geben Sie das Attribut an, aus dem der Gruppenname im angegebenen Basispfad zu den Gruppen ermittelt wird.
Der Gruppenname ist für das Mapping von Benutzergruppen erforderlich.
Group member attribute Geben Sie das Attribut an, das Informationen über die Mitglieder der Gruppe in LDAP enthält (z. B. member).
Reference attribute Geben Sie das Referenzattribut für den Gruppenfilter an (siehe Feld Group filter).
Verwenden Sie dann %{ref} im Gruppenfilter, um Werte für das hier angegebene Attribut zu erhalten.
Group filter Geben Sie den Filter an, um die Gruppe abzurufen, der der Benutzer angehört.
Zum Beispiel entspricht (member=uid=%{ref},ou=Users,dc=example,dc=com) "User1", wenn das member-Attribut der Gruppe uid=User1,ou=Users,dc=example,dc=com ist, und gibt die Gruppe zurück, der "User1" angehört.

Falls Probleme mit Zertifikaten auftreten, müssen Sie möglicherweise eine Zeile TLS_REQCERT allow in die Konfigurationsdatei /etc/openldap/ldap.conf einfügen, damit eine sichere LDAP-Verbindung (ldaps) funktioniert. Dies kann die Sicherheit der Verbindung zum LDAP-Katalog verringern.

Es wird empfohlen, ein separates LDAP-Konto (Bind DN) zu erstellen, um das Binding und die Suche auf dem LDAP-Server mit minimalen Berechtigungen im LDAP durchzuführen, anstatt echte Benutzerkonten zu verwenden (die für die Anmeldung im Zabbix-Frontend genutzt werden).
Ein solcher Ansatz bietet mehr Sicherheit und erfordert keine Änderung des Bind password, wenn der Benutzer sein eigenes Passwort auf dem LDAP-Server ändert.
In der obigen Tabelle ist dies der Kontoname ldap_search.

Zugriff testen

Mit der Schaltfläche Test kann der Benutzerzugriff getestet werden:

Parameter Beschreibung
Login LDAP-Benutzername zum Testen (vorausgefüllt mit dem aktuellen Benutzernamen aus dem Zabbix Frontend). Dieser Benutzername muss auf dem LDAP-Server vorhanden sein.
Zabbix aktiviert die LDAP-Authentifizierung nicht, wenn der Testbenutzer nicht authentifiziert werden kann.
User password LDAP-Benutzerpasswort zum Testen.