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 (Just-in-Time) Benutzerbereitstellung 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 den mit bereits bereitgestellten Benutzern verknüpften LDAP-Server nicht.

Wenn die JIT-Bereitstellung aktiviert ist, muss im Reiter Authentifizierung 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, während 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 Endbenutzer-Anmeldedaten 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 die Verwendung der Schaltfläche Provision now oder die 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
Enable LDAP authentication Aktivieren Sie das Kontrollkästchen, um die LDAP-Authentifizierung zu aktivieren.
Enable JIT provisioning Aktivieren Sie das Kontrollkästchen, um die JIT-Bereitstellung zu aktivieren.
Servers Klicken Sie auf Add, um einen LDAP-Server zu konfigurieren (siehe LDAP-Server-Konfiguration unten).
Case-sensitive login Deaktivieren Sie das Kontrollkästchen, um die Groß-/Kleinschreibung bei der Anmeldung für Benutzernamen zu deaktivieren (standardmäßig aktiviert).
Wenn die Groß-/Kleinschreibung bei der Anmeldung deaktiviert ist, kann man sich beispielsweise als „admin“ anmelden, auch wenn der Zabbix-Benutzer „Admin“ oder „ADMIN“ ist.
Bitte beachten Sie, dass bei deaktivierter Groß-/Kleinschreibung bei der Anmeldung 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: „Authentifizierung fehlgeschlagen: Die angegebenen Anmeldedaten sind nicht eindeutig.“
Provisioning period 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 im Format 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 Benutzerkonten im 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 direkte Benutzerbindung, siehe Hinweis unten)
Search attribute Für die Suche verwendetes LDAP-Kontoattribut:
uid (für OpenLDAP),
sAMAccountName (für Microsoft Active Directory)
Bind DN LDAP-Konto für Bindung und Suche über den 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)
Anonyme Bindung wird ebenfalls unterstützt. Beachten Sie, dass anonyme Bindung die Domänenkonfiguration potenziell für unbefugte Benutzer öffnen kann (Informationen über Benutzer, Computer, Server, Gruppen, Dienste usw.). Deaktivieren Sie aus Sicherheitsgründen anonyme Bindungen auf LDAP-Hosts und verwenden Sie stattdessen authentifizierten Zugriff.
Bind password LDAP-Passwort des Kontos für Bindung und Suche über den LDAP-Server.
Description Beschreibung des LDAP-Servers.
Configure JIT provisioning Aktivieren Sie dieses Kontrollkästchen, um Optionen für JIT-Provisionierung anzuzeigen.
Group configuration Wählen Sie die Methode zur Gruppenkonfiguration aus:
memberOf - durch Suche nach Benutzern und ihrem Attribut für Gruppenzugehörigkeit
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 Gruppenfilterung erforderlich ist.
Group name attribute Geben Sie das Attribut an, aus dem der Gruppenname aus allen Objekten im Attribut memberOf abgerufen wird (siehe Feld User group membership attribute)
Der Gruppenname ist für die Zuordnung 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 Benutzerrolle zu.
Dies ist erforderlich, um zu bestimmen, 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 in allen diesen Gruppen.
Wenn ein Benutzer mehreren Zabbix-Benutzerrollen entspricht, erhält der Benutzer die Rolle mit der höchsten Berechtigungsstufe darunter.
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 die Beschriftung 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 in einer LDAP- oder Microsoft-Active-Directory-Umgebung ohne Berücksichtigung der Groß-/Kleinschreibung eine Suche mit Berücksichtigung der Groß-/Kleinschreibung durchzuführen, kann die Zeichenfolge wie folgt definiert werden:
(%{attr}:caseExactMatch:=%{user}).
Wenn der Filter nicht angepasst wird, verwendet LDAP den Standardwert: (%{attr}=%{user}).

Um einen LDAP-Server für direkte Benutzerbindung zu konfigurieren, hängen Sie ein Attribut uid=%{user} an den Parameter Base DN an (zum Beispiel uid=%{user},dc=example,dc=com) und lassen Sie die Parameter BindDN und Bind password leer. Bei der Authentifizierung wird ein Platzhalter %{user} durch den beim Login eingegebenen Benutzernamen ersetzt.
Bei direkter Benutzerbindung hat Zabbix nur während des interaktiven Logins Zugriff auf die Anmeldedaten des Benutzers. Daher ignorieren Provisionierungsaufgaben, die ohne interaktiven Login arbeiten (zum Beispiel die Schaltfläche Provision now oder die API-Methode user.provision), Benutzer, die sich mit direkter Benutzerbindung authentifizieren, da Zabbix nicht in ihrem Namen binden kann. Verwenden Sie anonyme Bindung oder einen dedizierten Bind-Benutzer (Dienstkonto), wenn Provisionierung und LDAP-Suchen im Frontend funktionieren sollen, ohne dass der Endbenutzer angemeldet sein muss.

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

Parameter Beschreibung
Group base DN Basispfad zu den Gruppen im LDAP-Server.
Group name attribute Geben Sie das Attribut an, aus dem der Gruppenname im angegebenen Basispfad zu den Gruppen abgerufen wird.
Der Gruppenname ist für die Zuordnung 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, deren Mitglied der Benutzer ist.
Zum Beispiel entspricht (member=uid=%{ref},ou=Users,dc=example,dc=com) dem Benutzer "User1", wenn das member-Attribut der Gruppe uid=User1,ou=Users,dc=example,dc=com ist, und gibt die Gruppe zurück, deren Mitglied "User1" ist.

Bei Problemen mit Zertifikaten müssen Sie möglicherweise eine Zeile TLS_REQCERT allow zur Konfigurationsdatei /etc/openldap/ldap.conf hinzufü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) mit minimalen Berechtigungen im LDAP für Bindung und Suche über den LDAP-Server zu erstellen, anstatt echte Benutzerkonten zu verwenden (die für die Anmeldung im Zabbix Frontend verwendet werden).
Ein solcher Ansatz bietet mehr Sicherheit und erfordert keine Änderung des Parameters 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.