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 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
Einrichten von Zabbix
Es ist erforderlich, php-openssl zu installieren, wenn Sie SAML-Authentifizierung im Frontend verwenden möchten.
Um SAML-Authentifizierung zu verwenden, sollte Zabbix wie folgt konfiguriert werden:
1. Stellen Sie den privaten SP-Schlüssel und die Zertifikate bereit. Ein IdP-Zertifikat muss bereitgestellt werden (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 zabbix.conf.php gesetzt ist, können Sie den Zertifikatstext einfügen oder die Zertifikatsdatei im Frontend während der SAML-Konfiguration hochladen — auf dem Dateisystem sind keine Dateien erforderlich.
Wenn $SSO['CERT_STORAGE'] = 'file' in zabbix.conf.php gesetzt ist, muss das Zertifikat auf dem Dateisystem verfügbar gemacht werden (standardmäßig in ui/conf/certs oder dem in zabbix.conf.php konfigurierten Pfad), und das Frontend speichert Zertifikate nicht in der Datenbank.
Beachten Sie, dass, wenn $SSO['CERT_STORAGE'] nicht gesetzt ist oder auskommentiert wurde, die Dateispeicherung angenommen wird.
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 aus Gründen der Benutzerfreundlichkeit in einigen Umgebungen zulässig sind, wird die Verwendung von verschlüsseltem Transport dringend empfohlen (z. B. HTTPS/TLS für das Zabbix-Frontend aktivieren).
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 und auf die Datenbanktabellen, in denen SAML-Material gespeichert ist.
Beschränken Sie die Berechtigungen des Datenbankbenutzers auf das notwendige Minimum.
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-Benutzerbereitstellung 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 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 entity ID | Der eindeutige Bezeichner des Dienstanbieters (wenn er nicht übereinstimmt, wird die Operation abgelehnt). Es ist möglich, eine URL oder beliebige Zeichenfolge anzugeben. |
| SP name ID format | Fordern Sie 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 |
| IdP certificate | Inhalt des Zertifikats des Dienstanbieters (SP) für die Einrichtung des SAML-Single-Sign-On-(SSO)-Dienstes. |
| SP private key | Inhalt des privaten Schlüssels des Dienstanbieters (SP) für die Einrichtung des SAML-Single-Sign-On-(SSO)-Dienstes. Ermöglicht sichere Authentifizierung und sicheren Datenaustausch mit dem Identitätsanbieter (IdP). |
| SP certificate | Inhalt des Zertifikats des Dienstanbieters (SP) für die Einrichtung des SAML-Single-Sign-On-(SSO)-Dienstes. |
| 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 für die Anmeldung zu deaktivieren (standardmäßig aktiviert). Wenn die Groß-/Kleinschreibung deaktiviert ist, können Sie sich beispielsweise als "admin" anmelden, auch wenn der Zabbix-Benutzer "Admin" oder "ADMIN" heißt. Bitte beachten Sie: Wenn die Groß-/Kleinschreibung deaktiviert ist und es mehrere Zabbix-Benutzer mit ähnlichen Benutzernamen gibt (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-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 Nachnamen-Attribut 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 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 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'
]
];
Setzen Sie in diesem Fall im SAML-Konfigurationsfeld SP name ID:
urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified