Konfiguracja SAML z OneLogin
Przegląd
Ta sekcja zawiera wytyczne dotyczące konfigurowania logowania jednokrotnego oraz aprowizacji użytkowników w Zabbix z OneLogin przy użyciu uwierzytelniania SAML 2.0.
Konfiguracja OneLogin
Tworzenie aplikacji
1. Zaloguj się na swoje konto w OneLogin. Do celów testowych możesz utworzyć bezpłatne konto deweloperskie w OneLogin.
2. W interfejsie webowym OneLogin przejdź do Applications > Applications.
3. Kliknij "Add App" i wyszukaj odpowiednią aplikację. Wytyczne na tej stronie opierają się na przykładzie aplikacji SCIM Provisioner with SAML (SCIM v2 Enterprise, full SAML).
4. Na początek możesz chcieć dostosować nazwę wyświetlaną swojej aplikacji. Możesz także dodać ikonę i szczegóły aplikacji. Następnie kliknij Save.
Konfigurowanie aprowizacji SSO/SCIM
1. W sekcji Configuration > Application details ustaw punkt końcowy logowania jednokrotnego Zabbix http://<zabbix-instance-url>/zabbix/index_sso.php?acs jako wartość następujących pól:
- ACS (Consumer) URL Validator
- ACS (Consumer) URL
Zwróć uwagę na użycie protokołu „http”, a nie „https”, aby parametr acs nie został usunięty z żądania.

Możliwe jest również użycie protokołu „https”.
Aby użyć go z Zabbix, dodaj następujący wiersz do pliku konfiguracyjnego frontendu (zabbix.conf.php):
$SSO['SETTINGS'] = ['use_proxy_headers' => true];
Pozostaw pozostałe opcje z ich wartościami domyślnymi.
2. W sekcji Configuration > API connection ustaw następujące wartości:
- SCIM Base URL:
https://<zabbix-instance-url>/zabbix/api_scim.php - SCIM JSON Template: powinien zawierać wszystkie atrybuty niestandardowe, które chcesz przekazywać do Zabbix za pośrednictwem SCIM, takie jak
user_name,user_lastname,user_emailiuser_mobile:
{
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:User"
],
"userName": "{$parameters.scimusername}",
"name": {
"familyName": "{$user.lastname}",
"givenName": "{$user.firstname}"
},
"user_name": "{$user.firstname}",
"user_lastname": "{$user.lastname}",
"user_mobile": "{$user.phone}",
"user_email": "{$user.email}"
}
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.
Pamiętaj, że aby aprowizacja użytkowników działała, OneLogin musi otrzymać w odpowiedzi atrybut „name” zawierający „givenName” i „familyName”, nawet jeśli dostawca usług nie wymagał tych atrybutów. Dlatego należy określić je w schemacie w części konfiguracji aplikacji.
- SCIM Bearer Token: wprowadź token API Zabbix z uprawnieniami administratora Super admin.
Kliknij Enable, aby aktywować połączenie.

3. Na stronie Provisioning włącz opcję Provisioning:

4. Strona Parameters zawiera listę parametrów domyślnych:
- Upewnij się, że parametr „scimusername” odpowiada wartości loginu użytkownika w OneLogin (np. adresowi e-mail);
- Zaznacz opcję Include in User Provisioning dla parametru „Groups”;
- Kliknij „+”, aby utworzyć parametry niestandardowe wymagane dla asercji SAML i aprowizacji użytkowników, takie jak
user_name,user_lastname,user_emailiuser_mobile:

Podczas dodawania parametru zaznacz zarówno opcję Include in SAML assertion, jak i Include in User Provisioning.
- Dodaj parametr „group” odpowiadający rolom użytkowników w OneLogin.
Role użytkowników będą przekazywane jako ciąg znaków rozdzielonych średnikiem
;. Role użytkowników OneLogin zostaną użyte do utworzenia grup użytkowników w Zabbix:

Zweryfikuj listę parametrów:

5. Na stronie Rules utwórz mapowania ról użytkowników do domyślnego parametru Groups.

Możesz użyć wyrażenia regularnego, aby przekazywać określone role jako grupy.
Nazwy ról nie powinny zawierać ;, ponieważ OneLogin używa tego znaku jako separatora podczas wysyłania atrybutu zawierającego kilka ról.
6. Pobierz certyfikat IdP. Ustaw dla niego uprawnienia 644, uruchamiając:
chmod 644 idp.crt
Konfiguracja Zabbix
1. W Zabbix przejdź do sekcji Ustawienia SAML i wypełnij opcje konfiguracji na podstawie konfiguracji OneLogin:

| Pole Zabbix | Pole konfiguracji w OneLogin | Przykładowa wartość |
|---|---|---|
| IdP entity ID | Issuer URL (zobacz kartę SSO swojej aplikacji w OneLogin) |
|
| SSO service URL | SAML 2.0 Endpoint (HTTP) (zobacz kartę SSO swojej aplikacji w OneLogin) |
|
| SLO service URL | SLO Endpoint (HTTP) (zobacz kartę SSO swojej aplikacji w OneLogin) |
|
| Username attribute | Custom parameter | user_email |
| Group name attribute | Custom parameter | group |
| User name attribute | Custom parameter | user_name |
| User last name attribute | Custom parameter | user_lastname |
Wymagane jest również skonfigurowanie mapowania grup użytkowników. Mapowanie mediów jest opcjonalne. Kliknij Update, aby zapisać te ustawienia.
2. Dodaj certyfikat Base64 dostarczony przez OneLogin.
Jeśli w pliku konfiguracji frontendu (zabbix.conf.php) ustawiono $SSO['CERT_STORAGE'] = 'database', możesz wkleić treść certyfikatu lub przesłać plik certyfikatu w frontendzie podczas konfiguracji SAML — 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.
Dostęp do pobierania certyfikatu w OneLogin uzyskasz, wybierając Applications > SSO i klikając View details pod bieżącym certyfikatem.
3. Kliknij przycisk Update, aby zapisać te ustawienia.
Provisioning użytkowników SCIM
Po włączeniu provisioning użytkowników można teraz dodawać/aktualizować użytkowników oraz ich role w OneLogin, a następnie natychmiast provisionować ich do Zabbix.
Na przykład można utworzyć nowego użytkownika:

Dodaj go do roli użytkownika oraz aplikacji, która będzie provisionować użytkownika:

Po zapisaniu użytkownika zostanie on provisionowany do Zabbix. W Application > Users można sprawdzić status provisioning bieżących użytkowników aplikacji:

Jeśli provisioning zakończy się powodzeniem, użytkownik będzie widoczny na liście użytkowników Zabbix.
