3 SAML

Übersicht

SAML 2.0 Authentifizierung kann verwendet werden, um sich bei Zabbix anzumelden.

Wenn die SAML-Anmeldung ohne JIT-Bereitstellung von Benutzern 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 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?acs gesetzt werden
  • Single Logout URL sollte auf <path_to_zabbix_ui>/index_sso.php?sls gesetzt 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

Die Installation von php-openssl ist erforderlich, wenn Sie die SAML-Authentifizierung im Frontend verwenden möchten.

Für die Verwendung der SAML-Authentifizierung sollte Zabbix wie folgt konfiguriert werden:

1. Der private Schlüssel und das Zertifikat sollten im Verzeichnis 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-Bereitstellung von Benutzern zu aktivieren.
IDP-Entitäts-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-Service 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ä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-Entitäts-ID Die eindeutige Kennung des Serviceproviders (bei einer Abweichung 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-Anfragen
Abmeldeanfragen
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
Anmeldung unter Beachtung der Groß-/Kleinschreibung Deaktivieren Sie das Kontrollkästchen, um die Beachtung der Groß-/Kleinschreibung bei Benutzernamen zu deaktivieren (standardmäßig aktiviert).
Wenn die Beachtung 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 Beachtung der Groß-/Kleinschreibung und mehreren Zabbix-Benutzern mit ähnlichen Benutzernamen (z. B. Admin und admin) die Anmeldung dieser 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-Bereitstellung von Benutzern anzuzeigen.
Gruppennamenattribut Geben Sie das Gruppenattribut für die JIT-Bereitstellung von Benutzern an.
Benutzernamenattribut Geben Sie das Benutzernamenattribut für die JIT-Bereitstellung von Benutzern an.
Attribut für den Nachnamen des Benutzers Geben Sie das Attribut für den Nachnamen des Benutzers für die JIT-Bereitstellung an.
Benutzergruppenzuordnung Ordnen Sie ein SAML-Benutzergruppenmuster einer Zabbix-Benutzergruppe und einer 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 er Mitglied aller dieser Gruppen.
Wenn ein Benutzer mehreren Zabbix-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ä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, 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
  • 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