12 SAML-Einrichtung mit Microsoft Entra ID
Übersicht
Dieser Abschnitt enthält Richtlinien für die Konfiguration von Single Sign-on und der Benutzerbereitstellung in Zabbix aus Microsoft Entra ID (früher Microsoft Azure Active Directory) mithilfe der SAML-2.0-Authentifizierung.
Microsoft Entra ID-Konfiguration
Anwendung erstellen
1. Melden Sie sich im Microsoft Entra Admin Center unter Microsoft Entra ID an. Zu Testzwecken können Sie in Microsoft Entra ID ein kostenloses Testkonto erstellen.
2. Wählen Sie im Microsoft Entra Admin Center Applications -> Enterprise applications -> New application -> Create your own application aus.
3. Geben Sie den Namen Ihrer App ein und wählen Sie die Option Integrate any other application... aus. Klicken Sie danach auf Create.

Einrichten von Single Sign-on
1. Gehen Sie auf der Anwendungsseite zu Set up single sign on und klicken Sie auf Get started. Wählen Sie dann SAML aus.
2. Bearbeiten Sie Basic SAML Configuration:
- Legen Sie in Identifier (Entity ID) einen eindeutigen Namen fest, um Ihre App gegenüber Microsoft Entra ID zu identifizieren, zum Beispiel
zabbix; - Legen Sie in Reply URL (Assertion Consumer Service URL) den Zabbix-Endpunkt für Single Sign-on fest:
https://<path-to-zabbix-ui>/index_sso.php?acs:

Beachten Sie, dass "https" erforderlich ist.
Damit dies mit Zabbix funktioniert, muss in conf/zabbix.conf.php die folgende Zeile hinzugefügt werden:
$SSO['SETTINGS'] = ['use_proxy_headers' => true];
3. Bearbeiten Sie Attributes & Claims. Sie müssen alle Attribute hinzufügen, die Sie an Zabbix übergeben möchten (user_name, user_lastname, user_email, user_mobile, groups).
Die Attributnamen sind frei wählbar. Es können unterschiedliche Attributnamen verwendet werden, jedoch ist erforderlich, dass sie mit dem jeweiligen Feldwert in den Zabbix-SAML-Einstellungen übereinstimmen.
- Klicken Sie auf Add new claim, um ein Attribut hinzuzufügen:

- Klicken Sie auf Add a group claim, um ein Attribut zum Übergeben von Gruppen an Zabbix hinzuzufügen:

Bei diesem Claim ist es wichtig, dass die Gruppennamen (und nicht die Gruppen-IDs) über das ausgewählte Source attribute an Zabbix übergeben werden. Andernfalls funktioniert die JIT-Benutzerbereitstellung nicht korrekt.
4. Laden Sie unter SAML Certificates das von Entra ID bereitgestellte Base64-Zertifikat herunter und legen Sie es in conf/certs der Zabbix-Frontend-Installation ab.
Setzen Sie die Berechtigung 644 darauf, indem Sie Folgendes ausführen:
chmod 644 entra.cer
5. Verwenden Sie die Werte aus Set up <your app name> in Entra ID, um die Zabbix-SAML-Authentifizierung zu konfigurieren (siehe nächsten Abschnitt):

Zabbix-Konfiguration
1. Gehen Sie in Zabbix zu den SAML-Einstellungen und füllen Sie die Konfigurationsoptionen basierend auf der Entra ID-Konfiguration aus:

| Zabbix-Feld | Einrichtungsfeld in Entra ID | Beispielwert |
|---|---|---|
| IdP entity ID | Microsoft Entra-Bezeichner | |
| SSO service URL | Anmelde-URL | |
| SLO service URL | Abmelde-URL | |
| SP entity ID | Bezeichner (Entity ID) | |
| Username attribute | Benutzerdefiniertes Attribut (Claim) | user_email |
| Group name attribute | Benutzerdefiniertes Attribut (Claim) | groups |
| User name attribute | Benutzerdefiniertes Attribut (Claim) | user_name |
| User last name attribute | Benutzerdefiniertes Attribut (Claim) | user_lastname |
2. Fügen Sie das von Entra ID bereitgestellte Base64-Zertifikat hinzu.
Wenn $SSO['CERT_STORAGE'] = 'database' in zabbix.conf.php gesetzt ist, können Sie den Zertifikatstext einfügen oder die Zertifikatsdatei während der SAML-Konfiguration im Frontend hochladen — es sind keine Dateien im Dateisystem erforderlich.
Wenn $SSO['CERT_STORAGE'] = 'file' in zabbix.conf.php gesetzt ist, muss das Zertifikat im Dateisystem verfügbar gemacht werden (standardmäßig in ui/conf/certs oder in dem in zabbix.conf.php konfigurierten Pfad), und das Frontend speichert keine Zertifikate in der Datenbank.
Beachten Sie, dass, wenn $SSO['CERT_STORAGE'] nicht gesetzt oder auskommentiert ist, Dateispeicherung angenommen wird und Zertifikate aus ui/conf/certs gelesen werden.
Es ist außerdem erforderlich, die Benutzergruppen-Zuordnung zu konfigurieren. Die Medien-Zuordnung ist optional.
3. Klicken Sie auf die Schaltfläche Update, um diese Einstellungen zu speichern.
SCIM-Benutzerbereitstellung
1. Öffnen Sie auf der Anwendungsseite in Entra ID im Hauptmenü die Seite Provisioning. Klicken Sie auf Get started und wählen Sie dann den Modus für die automatische Bereitstellung aus:
- Setzen Sie in Tenant URL den folgenden Wert:
https://<path-to-zabbix-ui>/api_scim.php - Geben Sie in Secret token ein Zabbix-API-Token mit Super-Admin-Berechtigungen ein.
- Klicken Sie auf Test connection, um zu prüfen, ob die Verbindung hergestellt wurde.

2. Nun können Sie alle Attribute hinzufügen, die per SCIM an Zabbix übergeben werden. Klicken Sie dazu auf Mappings und dann auf Provision Microsoft Entra ID Users.

Aktivieren Sie unten in der Liste Attribute Mapping die Option Show advanced options und klicken Sie dann auf Edit attribute list for customappsso.
Fügen Sie unten in der Attributliste eigene Attribute vom Typ 'String' hinzu:

Speichern Sie die Liste.
3. Nun können Sie Zuordnungen für die hinzugefügten Attribute erstellen. Klicken Sie unten in der Liste Attribute Mapping auf Add New Mapping und erstellen Sie die Zuordnungen wie unten gezeigt:

Wenn alle Zuordnungen hinzugefügt wurden, speichern Sie die Liste der Zuordnungen.

4. Als Voraussetzung für die Benutzerbereitstellung in Zabbix müssen Benutzer und Gruppen in Entra ID konfiguriert sein.
Gehen Sie dazu zum Microsoft Entra admin center und fügen Sie dann Benutzer/Gruppen auf den entsprechenden Seiten Users und Groups hinzu.
5. Wenn Benutzer und Gruppen in Entra ID erstellt wurden, können Sie zum Menü Users and groups Ihrer Anwendung wechseln und sie zur App hinzufügen.
6. Gehen Sie zum Menü Provisioning Ihrer Anwendung und klicken Sie auf Start provisioning, damit Benutzer in Zabbix bereitgestellt werden.
Beachten Sie, dass die Users-PATCH-Anfrage in Entra ID keine Änderungen an Medien unterstützt.
Signierung von Authentifizierungsanfragen
Es ist möglich, Entra ID so zu konfigurieren, dass die Signatur signierter Authentifizierungsanfragen validiert wird.
Damit dies funktioniert, erstellen Sie öffentliche/private Schlüssel:
openssl req -x509 -newkey rsa:4096 -keyout /usr/share/zabbix/conf/certs/request-sign.key -out /usr/share/zabbix/conf/certs/request-sign.pem -sha256 -days 1825 -nodes
Weisen Sie Berechtigungen zu:
chown apache /usr/share/zabbix/conf/certs/request-sign.key
chmod 400 /usr/share/zabbix/conf/certs/request-sign.key
Aktualisieren Sie die Konfiguration des Zabbix Frontend, indem Sie Folgendes hinzufügen:
$SSO['SP_KEY'] = 'conf/certs/request-sign.key';
$SSO['SP_CERT'] = 'conf/certs/request-sign.crt';
Fehlerbehebung
Bei MicroSoft Edge-Browsern können Authentifizierungsprobleme auftreten, wenn ein Benutzer, der versucht, sich über SAML bei Zabbix anzumelden, bereits mit dem MicroSoft Edge-Profil angemeldet ist. Ein Hinweis auf ein solches Problem ist, dass sich der Benutzer bei Verwendung von MicroSoft Edge im privaten Modus möglicherweise bei Zabbix anmelden kann.
Um Authentifizierungsprobleme in diesem Fall zu vermeiden, kann es erforderlich sein, requestedAuthnContext in der Zabbix Frontend-Konfigurationsdatei (zabbix.conf.php) auf "false" zu setzen.
$SSO['SETTINGS'] = [
'security' => [
'requestedAuthnContext' => false
]
];