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 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 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ę identyfikującą Twoją 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:

Pamiętaj, że wymagany jest protokół "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 wymagane jest, aby odpowiadały one 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 roszczeniu ważne jest, aby do Zabbix były przekazywane nazwy grup (a nie identyfikatory grup) przez wybrany Source attribute. W przeciwnym razie aprowizacja 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
Upewnij się, że conf/zabbix.conf.php zawiera linię:
$SSO['IDP_CERT'] = 'conf/certs/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 |
Wymagane jest również skonfigurowanie mapowania grup użytkowników. Mapowanie mediów jest opcjonalne.
Kliknij Update, aby zapisać te ustawienia.
Provisioning użytkowników SCIM
1. Na stronie aplikacji w Entra ID, z głównego menu 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 typu '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 za pomocą SAML jest już zalogowany w 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 tym przypadku, może być konieczne ustawienie requestedAuthnContext na "false" w pliku konfiguracyjnym frontend Zabbix (zabbix.conf.php).
$SSO['SETTINGS'] = [
'security' => [
'requestedAuthnContext' => false
]
];