3 SAML
Übersicht
Die SAML 2.0-Authentifizierung kann verwendet werden, um sich bei Zabbix anzumelden.
Wenn nur die SAML-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 SAML zurückgegebenen Benutzernamenattribut 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 vorhanden ist. Das Benutzerkonto kann erstellt werden, wenn sich der Benutzer zum ersten Mal bei Zabbix anmeldet.
Wenn JIT-Bereitstellung aktiviert ist, muss im Reiter Authentication eine Benutzergruppe für deprovisionierte Benutzer angegeben werden.
Zusätzlich zur JIT-Bereitstellung ist es auch möglich, SCIM-Bereitstellung (System for Cross-domain Identity Management) zu aktivieren und zu konfigurieren - eine kontinuierliche Verwaltung von Benutzerkonten für diejenigen Benutzer, die durch die Benutzerbereitstellung erstellt wurden. Für die SCIM-Bereitstellung ist ein Zabbix-API-Token (mit Super-Admin-Berechtigungen) zur Authentifizierung bei Zabbix erforderlich.
Wenn beispielsweise ein Benutzer 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 fortlaufend 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 einer lokalen Anmeldung und Single Sign-on über SAML wählen. Wenn JIT-Bereitstellung verwendet wird, ist nur Single Sign-on möglich.
Einrichten des Identity Providers
Damit Zabbix verwendet werden kann, muss ein SAML-Identity-Provider (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
Einrichtung von Zabbix
Es ist erforderlich, php-openssl zu installieren, wenn Sie SAML-Authentifizierung im Frontend verwenden möchten.
Um die SAML-Authentifizierung zu verwenden, sollte Zabbix wie folgt konfiguriert werden:
1. Der private Schlüssel und das Zertifikat sollten in ui/conf/certs/ gespeichert werden, sofern keine benutzerdefinierten Pfade in zabbix.conf.php angegeben sind.
Standardmäßig sucht Zabbix an den folgenden Speicherorten:
- ui/conf/certs/sp.key - SP-Datei für den privaten Schlüssel
- ui/conf/certs/sp.crt - SP-Zertifikatsdatei
- ui/conf/certs/idp.crt - IDP-Zertifikatsdatei
2. Alle wichtigsten Einstellungen können im Zabbix-Frontend konfiguriert werden. Es ist jedoch möglich, zusätzliche Einstellungen in der Konfigurationsdatei anzugeben.

Konfigurationsparameter, die im Zabbix-Frontend verfügbar sind:
| 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-Bereitstellung von Benutzern zu aktivieren. |
| IDP entity ID | Der eindeutige Entitätsbezeichner innerhalb des SAML-Identitätsanbieters. |
| SSO service URL | Die URL, zu der Benutzer beim Anmelden weitergeleitet werden. |
| SLO service URL | Die URL, zu der Benutzer beim Abmelden weitergeleitet werden. Wenn sie leer gelassen wird, wird der SLO-Dienst nicht verwendet. |
| Username attribute | SAML-Attribut, das beim Anmelden bei Zabbix als Benutzername verwendet wird. Die Liste der unterstützten Werte wird vom Identitätsanbieter 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 | Der eindeutige Bezeichner des Dienstanbieters (wenn er nicht übereinstimmt, wird der Vorgang abgelehnt). Es ist möglich, eine URL oder beliebige Zeichenfolge anzugeben. |
| SP name ID format | Fordert im Antwortschreiben ein bestimmtes Name-ID-Format 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 |
| 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 Benutzernamen zu ignorieren (standardmäßig aktiviert). Wenn die Groß-/Kleinschreibung ignoriert wird, ist es beispielsweise möglich, sich als "admin" anzumelden, auch wenn der Zabbix-Benutzer "Admin" oder "ADMIN" heißt. Bitte beachten Sie: Wenn die Groß-/Kleinschreibung deaktiviert ist und mehrere Zabbix-Benutzer mit ähnlichen Benutzernamen vorhanden sind (z. B. Admin und admin), wird die Anmeldung für diese Benutzer immer mit der folgenden Fehlermeldung verweigert: "Authentication failed: supplied credentials are not unique." |
| Configure JIT provisioning | Aktivieren Sie dieses Kontrollkästchen, um Optionen für die JIT-Bereitstellung von Benutzern anzuzeigen. |
| Group name attribute | Geben Sie das Attribut für den Gruppennamen für die JIT-Bereitstellung von Benutzern an. |
| User name attribute | Geben Sie das Attribut für den Benutzernamen für die JIT-Bereitstellung von Benutzern an. |
| User last name attribute | Geben Sie das Attribut für den Nachnamen des Benutzers für die JIT-Bereitstellung von Benutzern an. |
| User group mapping | Ordnen Sie ein SAML-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 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 der Benutzer die höchste Berechtigungsstufe unter ihnen. |
| Media type mapping | Ordnen Sie die SAML-Medienattribute des Benutzers (z. B. E-Mail) den Zabbix-Benutzermedien für den Versand 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ätsanbietern für die Anmeldung und die Benutzerbereitstellung in Zabbix finden Sie hier:
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, d. h.:
https://<path-to-zabbix-ui>/api_scim.php
Benutzerattribute, die in Zabbix verwendet werden (Benutzername, Vorname des Benutzers, Nachname des Benutzers 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 Zabbix-Frontend-Konfigurationsdatei (zabbix.conf.php) konfiguriert werden:
- $SSO['SP_KEY'] = '<Pfad zur privaten SP-Schlüsseldatei>';
- $SSO['SP_CERT'] = '<Pfad zur SP-Zertifikatsdatei>';
- $SSO['IDP_CERT'] = '<Pfad zur IDP-Zertifikatsdatei>';
- $SSO['SETTINGS']
Das Array $SSO['SETTINGS'] muss derselben Struktur folgen, die von der Bibliothek SAML PHP Toolkit erwartet wird (mitgeliefert mit Zabbix).
Eine vollständige Beschreibung der verfügbaren Konfigurationsoptionen finden Sie in der offiziellen Bibliotheksdokumentation.
Nur die folgenden Optionen können als Teil von $SSO['SETTINGS'] gesetzt werden:
- strict
- baseurl
- compress
- contactPerson
- organization
- sp (nur die in dieser Liste angegebenen Optionen)
- attributeConsumingService
- x509certNew
- idp (nur die in dieser Liste angegebenen Optionen)
- singleLogoutService (nur eine Option)
- responseUrl
- certFingerprint
- certFingerprintAlgorithm
- x509certMulti
- singleLogoutService (nur eine Option)
- security (nur die in dieser Liste angegebenen Optionen)
- signMetadata
- wantNameId
- requestedAuthnContext
- requestedAuthnContextComparison
- wantXMLValidation
- relaxDestinationValidation
- destinationStrictlyMatches
- rejectUnsolicitedResponsesWithInResponseTo
- signatureAlgorithm
- digestAlgorithm
- lowercaseUrlencoding
Alle anderen Optionen werden aus der Datenbank übernommen und können nicht überschrieben werden. Die Option debug wird ignoriert.
Wenn sich die Zabbix UI außerdem hinter einem Proxy oder Load Balancer befindet, kann die benutzerdefinierte Option use_proxy_headers verwendet werden:
- false (Standard) - Option ignorieren;
- true - X-Forwarded-*-HTTP-Header zum Erstellen der Basis-URL verwenden.
Wenn ein Load Balancer für die Verbindung zur Zabbix-Instanz verwendet wird, wobei der Load Balancer TLS/SSL verwendet und Zabbix nicht, müssen die Parameter 'baseurl', 'strict' und 'use_proxy_headers' wie folgt angegeben werden:
$SSO['SETTINGS'] = [
'strict' => false,
'baseurl' => 'https://zabbix.example.com/zabbix/',
'use_proxy_headers' => true
];
Konfigurationsbeispiel:
$SSO['SETTINGS'] = [
'security' => [
'signatureAlgorithm' => 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha384'
'digestAlgorithm' => 'http://www.w3.org/2001/04/xmldsig-more#sha384',
// ...
],
// ...
];
Frontend-Konfiguration mit Kerberos/ADFS
Die Zabbix-Frontend-Konfigurationsdatei (zabbix.conf.php) kann verwendet werden, um SSO mit Kerberos-Authentifizierung und ADFS zu konfigurieren:
$SSO['SETTINGS'] = [
'security' => [
'requestedAuthnContext' => [
'urn:oasis:names:tc:SAML:2.0:ac:classes:Kerberos',
],
'requestedAuthnContextComparison' => 'exact'
]
];
In diesem Fall setzen Sie im SAML-Konfigurationsfeld SP name ID:
urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified