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
    ]
];