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

Erstellen einer Anwendung

1. Melden Sie sich im Microsoft Entra admin center bei Microsoft Entra ID an. Zu Testzwecken können Sie ein kostenloses Testkonto in Microsoft Entra ID 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.... Klicken Sie anschließend auf Create.

Einrichten von Single Sign-on

1. Gehen Sie auf der Seite Ihrer Anwendung 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 in Microsoft Entra ID zu identifizieren, zum Beispiel zabbix;
  • Legen Sie in Reply URL (Assertion Consumer Service URL) den Zabbix Single-Sign-on-Endpunkt 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 beliebig. Es können unterschiedliche Attributnamen verwendet werden, jedoch ist es 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 (statt der Gruppen-IDs) über das ausgewählte Source attribute an Zabbix übergeben werden. Andernfalls funktioniert die JIT-Bereitstellung von Benutzern nicht ordnungsgemäß.

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 dafür die Berechtigungen 644, 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 identifier
SSO service URL Login URL
SLO service URL Logout URL
SP entity ID Identifier (Entity ID)
Username attribute Custom attribute (claim) user_email
Group name attribute Custom attribute (claim) groups
User name attribute Custom attribute (claim) user_name
User last name attribute Custom attribute (claim) user_lastname

2. Fügen Sie das von Entra ID bereitgestellte Base64-Zertifikat hinzu.

Wenn in zabbix.conf.php $SSO['CERT_STORAGE'] = 'database' 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 in zabbix.conf.php $SSO['CERT_STORAGE'] = 'file' gesetzt ist, muss das Zertifikat auf dem Dateisystem verfügbar gemacht werden (standardmäßig in ui/conf/certs oder unter 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 ist oder auskommentiert wurde, die Dateispeicherung angenommen wird und Zertifikate aus ui/conf/certs gelesen werden.

Außerdem ist die Konfiguration der Zuordnung von Benutzergruppen erforderlich.
Die Zuordnung von Medien ist optional.

3. Klicken Sie auf die Schaltfläche Update, um diese Einstellungen zu speichern.

SCIM-Benutzerbereitstellung

1. Öffnen Sie auf der Anwendungsseite Ihrer Entra ID im Hauptmenü die Seite Provisioning. Klicken Sie auf Get started und wählen Sie dann den Modus Automatic provisioning:

  • In Tenant URL setzen Sie den folgenden Wert: https://<path-to-zabbix-ui>/api_scim.php
  • In Secret token geben Sie 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 anschließend auf Provision Microsoft Entra ID Users.

Aktivieren Sie am unteren Ende der Attributzuordnungsliste Show advanced options und klicken Sie dann auf Edit attribute list for customappsso.

Fügen Sie am unteren Ende der Attributliste eigene Attribute mit dem Typ 'String' hinzu:

Speichern Sie die Liste.

3. Nun können Sie Zuordnungen für die hinzugefügten Attribute erstellen. Klicken Sie am unteren Ende der Attributzuordnungsliste 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.

Dazu gehen Sie zum Microsoft Entra admin center und fügen auf den jeweiligen Seiten Users und Groups Benutzer/Gruppen hinzu.

5. Wenn Benutzer und Gruppen in Entra ID erstellt wurden, können Sie im Menü Users and groups Ihrer Anwendung diese der App hinzufügen.

6. Gehen Sie zum Menü Provisioning Ihrer App und klicken Sie auf Start provisioning, um Benutzer an Zabbix bereitzustellen.

Beachten Sie, dass die Users-PATCH-Anforderung 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
    ]
];