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 pod adresem 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 swojej 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 unikalną 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:

Zwróć uwagę, że wymagany jest protokół „https”. Aby to działało z Zabbix, należy dodać do conf/zabbix.conf.php następujący wiersz:

$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ć różnych nazw atrybutów, jednak muszą one odpowiadać wartościom odpowiednich pól w ustawieniach Zabbix SAML.

  • Kliknij Add new claim, aby dodać atrybut:

  • Kliknij Add a group claim, aby dodać atrybut do przekazywania grup do Zabbix:

W tym claim ważne jest, aby do Zabbix były przekazywane nazwy grup (a nie identyfikatory grup) za pomocą wybranego Source attribute. W przeciwnym razie automatyczne provisionowanie 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 conf/certs instalacji frontend Zabbix.

Ustaw dla niego 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 Zabbix SAML (zobacz następną sekcję):

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 Identyfikator Microsoft Entra
SSO service URL Adres URL logowania
SLO service URL Adres URL wylogowania
SP entity ID Identyfikator (Entity ID)
Username attribute Atrybut niestandardowy (claim) user_email
Group name attribute Atrybut niestandardowy (claim) groups
User name attribute Atrybut niestandardowy (claim) user_name
User last name attribute Atrybut niestandardowy (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ć treść certyfikatu lub przesłać plik certyfikatu we frontend podczas konfiguracji SAML — żadne 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. Pamiętaj, że jeśli $SSO['CERT_STORAGE'] nie jest ustawione lub jest zakomentowane, zakładane jest przechowywanie w plikach, a certyfikaty są odczytywane z ui/conf/certs.

Wymagane jest również skonfigurowanie mapowania grup użytkowników. Mapowanie mediów jest opcjonalne.

3. Naciśnij przycisk Update, aby zapisać te ustawienia.

Provisioning użytkowników SCIM

1. Na stronie aplikacji Entra ID, z menu głównego otwórz stronę Provisioning. Kliknij Get started, a następnie wybierz tryb automatycznego provisioningu:

  • W polu Tenant URL ustaw następującą wartość: https://<path-to-zabbix-ui>/api_scim.php
  • W polu 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 do Zabbix za pomocą SCIM. Aby to zrobić, kliknij Mappings, a następnie Provision Microsoft Entra ID Users.

Na dole listy Attribute Mapping włącz opcję 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, jak pokazano poniżej:

Po dodaniu wszystkich mapowań zapisz listę mapowań.

4. Warunkiem wstępnym provisioningu użytkowników do Zabbix jest skonfigurowanie użytkowników i grup 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. Po utworzeniu użytkowników i grup w Entra ID możesz przejść do menu Users and groups swojej aplikacji i dodać je do aplikacji.

6. Przejdź do menu Provisioning swojej aplikacji i kliknij Start provisioning, aby użytkownicy zostali provisionowani do Zabbix.

Pamiętaj, że żądanie PATCH dla Users w Entra ID nie obsługuje zmian w mediach.

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