SAML
Übersicht
SAML 2.0 Authentifizierung kann verwendet werden, um sich bei Zabbix anzumelden.
Wenn die SAML-Anmeldung ohne JIT-Benutzerbereitstellung konfiguriert ist, muss der Benutzer bereits in Zabbix vorhanden sein; das Zabbix-Passwort des Benutzers wird nicht für die Authentifizierung verwendet. Nach erfolgreicher SAML-Authentifizierung gleicht Zabbix das von SAML empfangene Attribut für den Benutzernamen mit einem vorhandenen lokalen Zabbix-Benutzernamen ab.
Benutzerbereitstellung
Es ist möglich, JIT-Benutzerbereitstellung (just-in-time) für SAML-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 die JIT-Bereitstellung aktiviert ist, muss im Reiter Authentifizierung eine Benutzergruppe für deprovisionierte Benutzer angegeben werden.
Zusätzlich zur JIT-Bereitstellung ist es auch möglich, die SCIM-Bereitstellung (System for Cross-domain Identity Management) zu aktivieren und zu konfigurieren – eine kontinuierliche Benutzerkontoverwaltung für Benutzer, die durch die Benutzerbereitstellung erstellt wurden. Die SCIM-Bereitstellung erfordert zur Authentifizierung bei Zabbix ein Zabbix-API-Token (mit Super-Admin-Berechtigungen).
Wenn ein Benutzer beispielsweise von einer SAML-Gruppe in eine andere verschoben wird, wird der Benutzer auch in Zabbix von einer Gruppe in eine andere verschoben; wenn ein Benutzer aus einer SAML-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.
Wenn SCIM aktiviert und konfiguriert ist, wird ein SAML-Benutzer in dem Moment bereitgestellt, in dem sich der Benutzer bei Zabbix anmeldet, und anschließend kontinuierlich auf Grundlage von Änderungen in SAML aktualisiert. Bereits vorhandene SAML-Benutzer werden nicht bereitgestellt, und nur bereitgestellte Benutzer werden aktualisiert. Beachten Sie, dass einem Benutzer bei der Bereitstellung oder Aktualisierung nur gültige Medien hinzugefügt werden.
Wenn SCIM nicht aktiviert ist, wird ein SAML-Benutzer in dem Moment bereitgestellt (und später aktualisiert), in dem sich der Benutzer bei Zabbix anmeldet.
Wenn die SAML-Authentifizierung aktiviert ist, können Benutzer zwischen lokaler Anmeldung und Anmeldung über SAML Single Sign-on wählen. Wenn JIT-Bereitstellung verwendet wird, ist nur Single Sign-on möglich.
Einrichten des Identitätsanbieters
Um mit Zabbix zu arbeiten, muss ein SAML-Identitätsanbieter (onelogin.com, auth0.com, okta.com usw.) wie folgt konfiguriert werden:
- Assertion Consumer URL sollte auf
<path_to_zabbix_ui>/index_sso.php?acsgesetzt werden - Single Logout URL sollte auf
<path_to_zabbix_ui>/index_sso.php?slsgesetzt werden
Beispiele für <path_to_zabbix_ui>: https://example.com/zabbix/ui,
http://another.example.com/zabbix, http://<any_public_ip_address>/zabbix
Zabbix einrichten
Wenn Sie die SAML-Authentifizierung im Frontend verwenden möchten, muss php-openssl installiert werden.
Für die Verwendung der SAML-Authentifizierung sollte Zabbix wie folgt konfiguriert werden:
1. Stellen Sie den privaten SP-Schlüssel und die Zertifikate bereit. Ein IdP-Zertifikat muss bereitgestellt werden (Text einfügen oder Datei auswählen), um SAML über das Frontend zu aktivieren. Ein SP-Zertifikat und ein privater SP-Schlüssel müssen bereitgestellt werden, wenn die Optionen Sign oder Encrypt ausgewählt sind.
Wenn $SSO['CERT_STORAGE'] = 'database' in der Frontend-Konfigurationsdatei (zabbix.conf.php) festgelegt ist, können Sie den Zertifikatstext einfügen oder die Zertifikatsdatei während der SAML-Konfiguration im Frontend hochladen — Dateien im Dateisystem sind nicht erforderlich.
Wenn $SSO['CERT_STORAGE'] = 'file' in der Konfigurationsdatei festgelegt ist, muss das Zertifikat im Dateisystem verfügbar gemacht werden (standardmäßig in ui/conf/certs oder unter dem in der Konfigurationsdatei festgelegten Pfad), und das Frontend speichert Zertifikate nicht in der Datenbank.
Beachten Sie, dass der Dateispeicher verwendet wird, wenn $SSO['CERT_STORAGE'] nicht festgelegt oder auskommentiert ist.
Standardmäßig sucht Zabbix an den folgenden Speicherorten:
- ui/conf/certs/sp.key - Datei mit dem privaten SP-Schlüssel
- ui/conf/certs/sp.crt - SP-Zertifikatsdatei
- ui/conf/certs/idp.crt - IDP-Zertifikatsdatei
Zertifikatsmaterial kann über das Frontend importiert werden, indem Text eingefügt oder Dateien hochgeladen werden.
Obwohl unverschlüsselte Importe in einigen Umgebungen aus Gründen der Benutzerfreundlichkeit zulässig sind, wird die Verwendung eines verschlüsselten Transports dringend empfohlen (aktivieren Sie beispielsweise HTTPS/TLS für das Zabbix-Frontend).
Wenn SAML-Zertifikate/-Schlüssel in der Datenbank gespeichert werden, aktivieren Sie TLS/SSL für Datenbankverbindungen, um den Datenverkehr zwischen der Anwendung und der Datenbank zu schützen.
Verschlüsseln Sie Datenbanksicherungen, die SAML-Zertifikate oder private Schlüssel enthalten können, und beschränken Sie den Zugriff auf Sicherungsdateien sowie auf die Datenbanktabellen, in denen SAML-Material gespeichert wird.
Beschränken Sie die Berechtigungen des Datenbankbenutzers auf das erforderliche Minimum.
2. Alle wichtigen Einstellungen können im Zabbix-Frontend konfiguriert werden. Es ist jedoch möglich, zusätzliche Einstellungen in der Konfigurationsdatei festzulegen.

Im Zabbix-Frontend verfügbare Konfigurationsparameter:
| Parameter | Beschreibung |
|---|---|
| Enable SAML authentication | Aktivieren Sie das Kontrollkästchen, um die SAML-Authentifizierung zu aktivieren. |
| Enable JIT provisioning | Aktivieren Sie das Kontrollkästchen, um die JIT-Benutzerbereitstellung zu aktivieren. |
| IDP entity ID | Die eindeutige Entitätskennung innerhalb des SAML-Identitätsproviders. |
| SSO service URL | Die URL, zu der Benutzer bei der Anmeldung weitergeleitet werden. |
| SLO service URL | Die URL, zu der Benutzer bei der Abmeldung weitergeleitet werden. Wenn das Feld leer bleibt, wird der SLO-Dienst nicht verwendet. |
| Username attribute | SAML-Attribut, das bei der Anmeldung bei Zabbix als Benutzername verwendet werden soll. Die Liste der unterstützten Werte wird vom Identitätsprovider bestimmt. Beispiele: uid userprincipalname samaccountname username userusername urn:oid:0.9.2342.19200300.100.1.1 urn:oid:1.3.6.1.4.1.5923.1.1.1.13 urn:oid:0.9.2342.19200300.100.1.44 |
| SP entity ID | Die eindeutige Kennung des Serviceproviders (bei fehlender Übereinstimmung wird der Vorgang abgelehnt). Es kann eine URL oder eine beliebige Datenzeichenfolge angegeben werden. |
| SP name ID format | Fordert ein bestimmtes Name-ID-Format in der Antwort an. Beispiele: urn:oasis:names:tc:SAML:2.0:nameid-format:persistent urn:oasis:names:tc:SAML:2.0:nameid-format:unspecified urn:oasis:names:tc:SAML:2.0:nameid-format:transient |
| IdP certificate | Inhalt des Serviceprovider-Zertifikats (SP) für die Einrichtung des SAML-Single-Sign-on-Dienstes (SSO). |
| SP private key | Inhalt des privaten Schlüssels des Serviceproviders (SP) für die Einrichtung des SAML-Single-Sign-on-Dienstes (SSO). Ermöglicht eine sichere Authentifizierung und einen sicheren Datenaustausch mit dem Identitätsprovider (IdP). |
| SP certificate | Inhalt des Serviceprovider-Zertifikats (SP) für die Einrichtung des SAML-Single-Sign-on-Dienstes (SSO). |
| Sign | Aktivieren Sie die Kontrollkästchen, um die Entitäten auszuwählen, für die die SAML-Signatur aktiviert werden soll: Messages Assertions AuthN requests Logout requests Logout responses |
| Encrypt | Aktivieren Sie die Kontrollkästchen, um die Entitäten auszuwählen, für die die SAML-Verschlüsselung aktiviert werden soll: Name ID Assertions |
| Case-sensitive login | Deaktivieren Sie das Kontrollkästchen, um die Groß-/Kleinschreibung bei der Anmeldung für Benutzernamen zu ignorieren (standardmäßig aktiviert). Wenn die Berücksichtigung der Groß-/Kleinschreibung deaktiviert wird, ist beispielsweise eine Anmeldung als "admin" möglich, auch wenn der Zabbix-Benutzer "Admin" oder "ADMIN" heißt. Beachten Sie, dass die Anmeldung für diese Benutzer immer mit der folgenden Fehlermeldung abgelehnt wird, wenn die Berücksichtigung der Groß-/Kleinschreibung deaktiviert ist und mehrere Zabbix-Benutzer mit ähnlichen Benutzernamen vorhanden sind (z. B. Admin und admin): "Authentication failed: supplied credentials are not unique." |
| Configure JIT provisioning | Aktivieren Sie dieses Kontrollkästchen, um Optionen für die JIT-Benutzerbereitstellung anzuzeigen. |
| Group name attribute | Geben Sie das Gruppenname-Attribut für die JIT-Benutzerbereitstellung an. |
| User name attribute | Geben Sie das Benutzername-Attribut für die JIT-Benutzerbereitstellung an. |
| User last name attribute | Geben Sie das Attribut für den Nachnamen des Benutzers für die JIT-Benutzerbereitstellung an. |
| User group mapping | Ordnen Sie ein SAML-Benutzergruppenmuster einer Zabbix-Benutzergruppe und einer Benutzerrolle zu. Dies ist erforderlich, um zu bestimmen, welche Benutzergruppe und Rolle der bereitgestellte Benutzer in Zabbix erhält. Klicken Sie auf Add, um eine Zuordnung hinzuzufügen. Das Feld SAML group pattern unterstützt Platzhalter. Der Gruppenname muss mit einer vorhandenen Gruppe übereinstimmen. Wenn ein SAML-Benutzer mehreren Zabbix-Benutzergruppen entspricht, wird der Benutzer Mitglied aller dieser Gruppen. Wenn ein Benutzer mehreren Zabbix-Benutzerrollen entspricht, erhält er die höchste Berechtigungsstufe unter diesen Rollen. |
| Media type mapping | Ordnen Sie die SAML-Medienattribute des Benutzers (z. B. E-Mail) den Zabbix-Benutzermedien zum Senden von Benachrichtigungen zu. |
| Enable SCIM provisioning | Aktivieren Sie dieses Kontrollkästchen, um die SCIM-2.0-Bereitstellung zu aktivieren. |
Beispiele für die Konfiguration von SAML-Identitätsprovidern für die Anmeldung und die Benutzerbereitstellung in Zabbix finden Sie unter:
Hinweise zur SCIM-Bereitstellung
Geben Sie für die SCIM-Bereitstellung auf der Seite des Identitätsanbieters den Pfad zum Zabbix-Frontend an und hängen Sie api_scim.php daran an, also:
https://<path-to-zabbix-ui>/api_scim.php
Benutzerattribute, die in Zabbix verwendet werden (Benutzername, Vorname, Nachname und Medienattribute), müssen als benutzerdefinierte Attribute hinzugefügt werden. Falls erforderlich, sollte der externe Namespace mit dem Benutzerschema übereinstimmen: urn:ietf:params:scim:schemas:core:2.0:User.
Erweiterte Einstellungen
Zusätzliche SAML-Parameter können in der Frontend-Konfigurationsdatei von Zabbix (zabbix.conf.php) konfiguriert werden:
Konfigurationsbeispiele
Beispiel 1: Verbindung zu einer Zabbix-Instanz mit einem Load Balancer über TLS/SSL
Wenn ein Load Balancer für die Verbindung zu einer Zabbix-Instanz verwendet wird und der Load Balancer TLS/SSL verwendet, Zabbix jedoch nicht, geben Sie die Parameter baseurl, strict und use_proxy_headers wie folgt an:
$SSO['SETTINGS'] = [
'strict' => false,
'baseurl' => 'https://zabbix.example.com/zabbix/',
'use_proxy_headers' => true
];
Beispiel 2: Konfigurieren benutzerdefinierter SAML-Signatur- und Digest-Algorithmen
$SSO['SETTINGS'] = [
'security' => [
'signatureAlgorithm' => 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha384'
'digestAlgorithm' => 'http://www.w3.org/2001/04/xmldsig-more#sha384',
// ...
],
// ...
];
Beispiel 3: Konfigurieren von SSO mit Kerberos-Authentifizierung über ADFS
$SSO['SETTINGS'] = [
'security' => [
'requestedAuthnContext' => [
'urn:oasis:names:tc:SAML:2.0:ac:classes:Kerberos',
],
'requestedAuthnContextComparison' => 'exact'
]
];
In diesem Fall legen Sie im Feld SP name ID der SAML-Konfiguration Folgendes fest:
urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified