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. Fügen Sie den Namen Ihrer App hinzu und wählen Sie die Option Integrate any other application... aus. Klicken Sie anschließend auf Create.

Einrichten des Single Sign-On

1. Gehen Sie auf der Anwendungsseite zu Single Sign-On einrichten und klicken Sie auf Erste Schritte. Wählen Sie anschließend SAML aus.

2. Bearbeiten Sie die grundlegende SAML-Konfiguration:

  • Legen Sie unter Bezeichner (Entitäts-ID) einen eindeutigen Namen fest, anhand dessen Ihre App in Microsoft Entra ID identifiziert wird, zum Beispiel zabbix;
  • Legen Sie unter Antwort-URL (Assertion Consumer Service-URL) den Single-Sign-On-Endpunkt von Zabbix fest: https://<path-to-zabbix-ui>/index_sso.php?acs:

Beachten Sie, dass https erforderlich ist. Um dies mit Zabbix zu verwenden, fügen Sie der Frontend-Konfigurationsdatei die folgende Zeile hinzu:

$SSO['SETTINGS'] = ['use_proxy_headers' => true];

3. Bearbeiten Sie Attribute und Ansprüche. 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 andere Attributnamen verwendet werden. Sie müssen jedoch mit dem jeweiligen Feldwert in den Zabbix-SAML-Einstellungen übereinstimmen.

  • Klicken Sie auf Neuen Anspruch hinzufügen, um ein Attribut hinzuzufügen:

  • Klicken Sie auf Gruppenanspruch hinzufügen, um ein Attribut für die Übergabe von Gruppen an Zabbix hinzuzufügen:

Bei diesem Anspruch ist es wichtig, dass die Gruppennamen (nicht die Gruppen-IDs) über das ausgewählte Quellattribut an Zabbix übergeben werden. Andernfalls funktioniert die JIT-Benutzerbereitstellung nicht ordnungsgemäß.

4. Laden Sie unter SAML-Zertifikate das von Entra ID bereitgestellte Base64-Zertifikat herunter und legen Sie es im Verzeichnis conf/certs der Zabbix-Frontend-Installation ab (der Speicherort kann je nach Betriebssystem und Quelle Ihrer Zabbix-Installation abweichen).

Legen Sie die Berechtigungen auf 644 fest, indem Sie folgenden Befehl ausführen:

chmod 644 entra.cer

5. Verwenden Sie die Werte unter <your app name> einrichten in Entra ID, um die SAML-Authentifizierung von Zabbix zu konfigurieren (siehe nächsten Abschnitt):

Zabbix-Konfiguration

1. Rufen Sie in Zabbix die SAML-Einstellungen auf und füllen Sie die Konfigurationsoptionen anhand der Entra-ID-Konfiguration aus:

Zabbix-Feld Setup-Feld 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 $SSO['CERT_STORAGE'] = 'database' in der Frontend-Konfigurationsdatei (zabbix.conf.php) festgelegt ist, können Sie den Zertifikatstext einfügen oder die Zertifikatsdatei während der SAML-Konfiguration im Frontend hochladen. Auf dem Dateisystem sind keine Dateien erforderlich.

Wenn $SSO['CERT_STORAGE'] = 'file' in der Konfigurationsdatei festgelegt ist, muss das Zertifikat im Dateisystem verfügbar gemacht werden (standardmäßig in ui/conf/certs oder unter dem in der Konfigurationsdatei festgelegten Pfad), und das Frontend speichert Zertifikate nicht in der Datenbank.
Beachten Sie, dass bei nicht gesetztem oder auskommentiertem $SSO['CERT_STORAGE'] die Dateispeicherung verwendet wird und Zertifikate aus ui/conf/certs gelesen werden.

Außerdem muss die Zuordnung von Benutzergruppen konfiguriert werden.
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.

Signieren von Authentifizierungsanforderungen

Es ist möglich, Entra ID so zu konfigurieren, dass die Signatur signierter Authentifizierungsanforderungen überprüft 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 Frontend-Konfiguration von Zabbix, indem Sie Folgendes hinzufügen:

$SSO['SP_KEY'] = 'conf/certs/request-sign.key';
$SSO['SP_CERT'] = 'conf/certs/request-sign.crt';

Fehlerbehebung

Bei Browsern von MicroSoft Edge können Authentifizierungsprobleme auftreten, wenn ein Benutzer versucht, sich über SAML bei Zabbix anzumelden, und bereits mit dem MicroSoft Edge-Profil angemeldet ist. Ein Anzeichen für ein solches Problem kann sein, dass sich der Benutzer mit MicroSoft Edge im privaten Modus bei Zabbix anmelden kann.

Um Authentifizierungsprobleme in diesem Fall zu vermeiden, kann es erforderlich sein, requestedAuthnContext in der Frontend-Konfigurationsdatei von Zabbix auf false zu setzen.

$SSO['SETTINGS'] = [
    'security' => [
        'requestedAuthnContext' => false
    ]
];