3 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- (just-in-time) Benutzerbereitstellung 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 auf der Registerkarte Authentication eine Benutzergruppe für deprovisionierte Benutzer angegeben werden.
Zusätzlich zur JIT-Bereitstellung ist es auch möglich, SCIM- (System for Cross-domain Identity Management) Bereitstellung zu aktivieren und zu konfigurieren - kontinuierliche Benutzerkontoverwaltung 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 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 der lokalen Anmeldung und dem SAML-Single-Sign-On 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
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. 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 - Datei mit dem privaten SP-Schlüssel
- ui/conf/certs/sp.crt - SP-Zertifikatsdatei
- ui/conf/certs/idp.crt - IDP-Zertifikatsdatei
2. Alle wichtigen Einstellungen können im Zabbix-Frontend konfiguriert werden. Es ist jedoch möglich, zusätzliche Einstellungen in der Konfigurationsdatei anzugeben.

Im Zabbix-Frontend verfügbare Konfigurationsparameter:
| Parameter | Beschreibung |
|---|---|
| SAML-Authentifizierung aktivieren | Aktivieren Sie das Kontrollkästchen, um die SAML-Authentifizierung zu aktivieren. |
| JIT-Bereitstellung aktivieren | Aktivieren Sie das Kontrollkästchen, um die JIT-Benutzerbereitstellung zu aktivieren. |
| IDP-Entitäts-ID | Die eindeutige Entitätskennung innerhalb des SAML-Identitätsanbieters. |
| SSO-Dienst-URL | Die URL, zu der Benutzer bei der Anmeldung weitergeleitet werden. |
| SLO-Dienst-URL | Die URL, zu der Benutzer bei der Abmeldung weitergeleitet werden. Wenn das Feld leer bleibt, wird der SLO-Dienst nicht verwendet. |
| Benutzernamenattribut | SAML-Attribut, das bei der Anmeldung bei Zabbix als Benutzername verwendet werden soll. 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-Entitäts-ID | Die eindeutige Kennung des Dienstanbieters (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 |
| Signieren | Deaktivieren Sie die Kontrollkästchen, um SAML-Signaturen für die entsprechenden Entitäten zu deaktivieren: Nachrichten Assertions AuthN-Anforderungen Abmeldeanforderungen Abmeldeantworten |
| Verschlüsseln | Aktivieren Sie die Kontrollkästchen, um die Entitäten auszuwählen, für die die SAML-Verschlüsselung aktiviert werden soll: Name-ID Assertions |
| Groß-/Kleinschreibung bei der Anmeldung berücksichtigen | Deaktivieren Sie das Kontrollkästchen, um die Berücksichtigung der Groß-/Kleinschreibung bei Benutzernamen zu deaktivieren (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" lautet. Beachten Sie, dass bei deaktivierter Berücksichtigung der 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 abgelehnt wird: "Authentication failed: supplied credentials are not unique." |
| JIT-Bereitstellung konfigurieren | Aktivieren Sie dieses Kontrollkästchen, um Optionen für die JIT-Benutzerbereitstellung anzuzeigen. |
| Gruppennamenattribut | Geben Sie das Gruppennamenattribut für die JIT-Benutzerbereitstellung an. |
| Benutzernamenattribut | Geben Sie das Benutzernamenattribut für die JIT-Benutzerbereitstellung an. |
| Attribut für den Nachnamen des Benutzers | Geben Sie das Attribut für den Nachnamen des Benutzers für die JIT-Benutzerbereitstellung an. |
| Benutzergruppenzuordnung | Ordnen Sie ein SAML-Benutzergruppenmuster einer Zabbix-Benutzergruppe und Benutzerrolle zu. Dies ist erforderlich, um zu bestimmen, welche Benutzergruppe bzw. Rolle der bereitgestellte Benutzer in Zabbix erhält. Klicken Sie auf Hinzufügen, um eine Zuordnung hinzuzufügen. Das Feld SAML-Gruppenmuster 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-B Benutzerrollen entspricht, erhält er die höchste Berechtigungsstufe unter diesen Rollen. |
| Medientypzuordnung | Ordnen Sie die SAML-Medienattribute des Benutzers (z. B. E-Mail) den Zabbix-Benutzermedien zum Senden von Benachrichtigungen zu. |
| SCIM-Bereitstellung aktivieren | 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 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, 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