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 centrum administracyjnego Microsoft Entra w Microsoft Entra ID. Do celów testowych możesz utworzyć bezpłatne konto próbne w Microsoft Entra ID.
2. W centrum administracyjnym Microsoft Entra 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.

Konfigurowanie logowania jednokrotnego
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 polu Identifier (Entity ID) ustaw unikatową nazwę identyfikującą aplikację w Microsoft Entra ID, na przykład
zabbix; - W polu Reply URL (Assertion Consumer Service URL) ustaw punkt końcowy logowania jednokrotnego Zabbix:
https://<path-to-zabbix-ui>/index_sso.php?acs:

Pamiętaj, że wymagany jest protokół https.
Aby używać tej funkcji z Zabbix, dodaj następujący wiersz do pliku konfiguracyjnego frontendu:
$SSO['SETTINGS'] = ['use_proxy_headers' => true];
3. Edytuj Attributes & Claims. Musisz dodać wszystkie atrybuty, które chcesz przekazywać do Zabbix (user_name, user_lastname, user_email, user_mobile, groups).
Nazwy atrybutów są dowolne. Można używać innych nazw atrybutów, jednak muszą one odpowiadać odpowiednim wartościom pól 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 przypadku tego oświadczenia ważne jest, aby za pomocą wybranego pola Source attribute do Zabbix były przekazywane nazwy grup, a nie ich identyfikatory. W przeciwnym razie automatyczne tworzenie użytkowników JIT nie będzie działać prawidłowo.
4. W sekcji SAML Certificates pobierz certyfikat Base64 udostępniony przez Entra ID i umieść go w katalogu conf/certs instalacji frontendu Zabbix (lokalizacja może się różnić w zależności od systemu operacyjnego i źródła instalacji Zabbix).
Ustaw uprawnienia 644, uruchamiając:
chmod 644 entra.cer
5. Użyj wartości z sekcji Set up <your app name> w Entra ID, aby skonfigurować uwierzytelnianie SAML w Zabbix (zobacz następną sekcję):

Konfiguracja Zabbix
1. W Zabbix przejdź do sekcji Ustawienia SAML i uzupeł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 pliku konfiguracji frontend (zabbix.conf.php) ustawiono $SSO['CERT_STORAGE'] = 'database', podczas konfiguracji SAML możesz wkleić treść certyfikatu lub przesłać plik certyfikatu w frontend — pliki w systemie plików nie są wymagane.
Jeśli w pliku konfiguracji 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 pliku konfiguracji), a frontend nie będzie przechowywać certyfikatów w bazie danych.
Pamiętaj, że jeśli $SSO['CERT_STORAGE'] nie jest ustawione lub jest zakomentowane, zakładane jest przechowywanie w pliku, a certyfikaty są odczytywane z ui/conf/certs.
Wymagane jest również skonfigurowanie 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 zadziałało, utwórz klucze publiczny i 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ądarce Microsoft Edge, gdy użytkownik próbujący zalogować się do Zabbix za pośrednictwem SAML jest już zalogowany przy użyciu profilu Microsoft Edge. Oznaką takiego problemu może być możliwość zalogowania się do Zabbix za pomocą przeglądarki Microsoft Edge w trybie prywatnym.
Aby uniknąć problemów z uwierzytelnianiem w tym przypadku, może być konieczne ustawienie parametru requestedAuthnContext na false w pliku konfiguracji frontendu Zabbix.
$SSO['SETTINGS'] = [
'security' => [
'requestedAuthnContext' => false
]
];