12 Konfiguracja SAML z Microsoft Entra ID
Przegląd
Ta sekcja zawiera wytyczne dotyczące konfigurowania logowania jednokrotnego i konfiguracja kont użytkowników w Zabbix z Microsoft Entra ID (dawniej Microsoft Azure Active Directory) przy użyciu uwierzytelniania SAML 2.0.
Konfiguracja ID Microsoft Entra
Tworzenie aplikacji
1. Zaloguj się do Microsoft Entra admin center w Microsoft Entra ID. Do celów testowych możesz utworzyć bezpłatne konto próbne w Microsoft Entra ID.
2. W Microsoft Entra admin center wybierz Applications -> Enterprise applications -> New application -> Create your own application.
3. Dodaj nazwę swojej aplikacji i wybierz opcję Integrate any other application.... Następnie kliknij Create.

Konfiguracja pojedynczego logowania
1. Na stronie aplikacji przejdź do Set up single sign on i kliknij Get started. Następnie wybierz SAML.
2. Edytuj Basic SAML Configuration:
- W Identifier (Entity ID) ustaw unikalną nazwę, aby zidentyfikować aplikację w Microsoft Entra ID, na przykład
zabbix; - W Reply URL (Assertion Consumer Service URL) ustaw punkt końcowy pojedynczego logowania Zabbix:
https://<path-to-zabbix-ui>/index_sso.php?acs:

Zwróć uwagę, że wymagane jest "https".
Aby to działało z Zabbix, należy dodać do conf/zabbix.conf.php następującą linię:
$SSO['SETTINGS'] = ['use_proxy_headers' => true];
3. Edytuj Attributes & Claims. Musisz dodać wszystkie atrybuty, które chcesz przekazać do Zabbix (user_name, user_lastname, user_email, user_mobile, groups).
Nazwy atrybutów są dowolne. Można użyć różnych nazw atrybutów, jednak muszą one odpowiadać odpowiedniej wartości pola w ustawieniach SAML Zabbix.
- Kliknij Add new claim, aby dodać atrybut:

- Kliknij Add a group claim, aby dodać atrybut służący do przekazywania grup do Zabbix:

W tym claim ważne jest, aby do Zabbix były przekazywane nazwy grup (a nie identyfikatory grup) przez wybrany Source attribute. W przeciwnym razie automatyczne tworzenie użytkowników JIT nie będzie działać poprawnie.
4. W SAML Certificates pobierz certyfikat Base64 udostępniony przez Entra ID i umieść go w conf/certs instalacji frontend Zabbix.
Nadaj mu uprawnienia 644, uruchamiając:
chmod 644 entra.cer
5. Użyj wartości z Set up <your app name> w Entra ID, aby skonfigurować uwierzytelnianie SAML Zabbix (zobacz następna sekcja):

Konfiguracja Zabbix
1. W Zabbix przejdź do ustawień SAML i wypełnij opcje konfiguracji na podstawie konfiguracji Entra ID:

| Pole Zabbix | Pole konfiguracji w Entra ID | Przykładowa wartość |
|---|---|---|
| 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. Dodaj certyfikat Base64 dostarczony przez Entra ID.
Jeśli w zabbix.conf.php ustawiono $SSO['CERT_STORAGE'] = 'database', możesz wkleić tekst certyfikatu lub przesłać plik certyfikatu w frontend podczas konfiguracji SAML — pliki nie są wymagane w systemie plików.
Jeśli w zabbix.conf.php ustawiono $SSO['CERT_STORAGE'] = 'file', certyfikat musi być dostępny w systemie plików (domyślnie w ui/conf/certs lub w ścieżce skonfigurowanej w zabbix.conf.php), a frontend nie będzie przechowywać certyfikatów w bazie danych.
Zwróć uwagę, że jeśli $SSO['CERT_STORAGE'] nie jest ustawione lub jest zakomentowane, przyjmowane jest przechowywanie w plikach, a certyfikaty są odczytywane z ui/conf/certs.
Wymagana jest również konfiguracja mapowania grup użytkowników. Mapowanie mediów jest opcjonalne.
3. Kliknij przycisk Update, aby zapisać te ustawienia.
Provisioning użytkowników SCIM
1. Na stronie aplikacji Entra ID, w menu głównym otwórz stronę Provisioning. Kliknij Get started, a następnie wybierz tryb Automatic provisioning:
- W Tenant URL ustaw następującą wartość:
https://<path-to-zabbix-ui>/api_scim.php - W Secret token wprowadź token API Zabbix z uprawnieniami Super admin.
- Kliknij Test connection, aby sprawdzić, czy połączenie zostało nawiązane.

2. Teraz możesz dodać wszystkie atrybuty, które będą przekazywane przez SCIM do Zabbix. Aby to zrobić, kliknij Mappings, a następnie Provision Microsoft Entra ID Users.

Na dole listy Attribute Mapping włącz Show advanced options, a następnie kliknij Edit attribute list for customappsso.
Na dole listy atrybutów dodaj własne atrybuty z typem 'String':

Zapisz listę.
3. Teraz możesz dodać mapowania dla dodanych atrybutów. Na dole listy Attribute Mapping kliknij Add New Mapping i utwórz mapowania pokazane poniżej:

Gdy wszystkie mapowania zostaną dodane, zapisz listę mapowań.

4. Jako warunek wstępny provisioning użytkowników do Zabbix, musisz mieć skonfigurowanych użytkowników i grupy w Entra ID.
Aby to zrobić, przejdź do Microsoft Entra admin center, a następnie dodaj użytkowników/grupy na odpowiednich stronach Users i Groups.
5. Gdy użytkownicy i grupy zostaną utworzeni w Entra ID, możesz przejść do menu Users and groups swojej aplikacji i dodać ich do aplikacji.
6. Przejdź do menu Provisioning swojej aplikacji i kliknij Start provisioning, aby rozpocząć provisioning użytkowników do Zabbix.
Należy pamiętać, że żądanie PATCH Users w Entra ID nie obsługuje zmian w media.
Podpisywanie żądań uwierzytelniania
Można skonfigurować Entra ID tak, aby weryfikował podpis podpisanych żądań uwierzytelniania.
Aby to działało, utwórz klucze publiczny/prywatny:
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
Przypisz uprawnienia:
chown apache /usr/share/zabbix/conf/certs/request-sign.key
chmod 400 /usr/share/zabbix/conf/certs/request-sign.key
Zaktualizuj konfigurację frontendu Zabbix, dodając:
$SSO['SP_KEY'] = 'conf/certs/request-sign.key';
$SSO['SP_CERT'] = 'conf/certs/request-sign.crt';
Rozwiązywanie problemów
Problemy z uwierzytelnianiem mogą wystąpić w przeglądarkach MicroSoft Edge, gdy użytkownik próbujący zalogować się do Zabbix przez SAML jest już zalogowany przy użyciu profilu MicroSoft Edge. Oznaką takiego problemu może być możliwość zalogowania się do Zabbix przy użyciu MicroSoft Edge w trybie prywatnym.
Aby uniknąć problemów z uwierzytelnianiem w takim przypadku, może być konieczne ustawienie parametru requestedAuthnContext na "false" w pliku konfiguracyjnym frontendu Zabbix (zabbix.conf.php).
$SSO['SETTINGS'] = [
'security' => [
'requestedAuthnContext' => false
]
];