SAML
Przegląd
SAML 2.0 uwierzytelnianie może być używane do logowania się do Zabbix.
Jeśli logowanie SAML jest skonfigurowane bez aprowizacji użytkowników JIT, użytkownik musi już istnieć w Zabbix; hasło Zabbix użytkownika nie jest używane do uwierzytelniania. Po pomyślnym uwierzytelnieniu SAML Zabbix dopasowuje atrybut nazwy użytkownika otrzymany z SAML do istniejącej lokalnej nazwy użytkownika Zabbix.
Provisioning użytkowników
Można skonfigurować provisioning użytkowników JIT (just-in-time) dla użytkowników SAML. W takim przypadku nie jest wymagane, aby użytkownik istniał już w Zabbix. Konto użytkownika może zostać utworzone, gdy użytkownik zaloguje się do Zabbix po raz pierwszy.
Jeśli provisioning JIT jest włączony, na karcie Authentication należy określić grupę użytkowników dla użytkowników, którym odebrano provisioning.
Oprócz provisioningu JIT można również włączyć i skonfigurować provisioning SCIM (System for Cross-domain Identity Management) — ciągłe zarządzanie kontami użytkowników dla tych użytkowników, którzy zostali utworzeni przez provisioning użytkowników. Provisioning SCIM wymaga tokena API Zabbix (z uprawnieniami Super admin) do uwierzytelniania w Zabbix.
Na przykład, jeśli użytkownik zostanie przeniesiony z jednej grupy SAML do innej, użytkownik zostanie również przeniesiony z jednej grupy do innej w Zabbix; jeśli użytkownik zostanie usunięty z grupy SAML, użytkownik zostanie również usunięty z grupy w Zabbix i, jeśli nie należy do żadnej innej grupy, zostanie dodany do grupy użytkowników dla użytkowników, którym odebrano provisioning.
Jeśli SCIM jest włączony i skonfigurowany, użytkownik SAML zostanie provisionowany w momencie zalogowania się do Zabbix i będzie stale aktualizowany na podstawie zmian w SAML. Istniejący już użytkownicy SAML nie będą provisionowani, a aktualizowani będą tylko użytkownicy provisionowani. Należy pamiętać, że do użytkownika zostaną dodane tylko prawidłowe media, gdy użytkownik zostanie provisionowany lub zaktualizowany.
Jeśli SCIM nie jest włączony, użytkownik SAML zostanie provisionowany (a później zaktualizowany) w momencie zalogowania się do Zabbix.
Jeśli uwierzytelnianie SAML jest włączone, użytkownicy będą mogli wybrać logowanie lokalne lub przez logowanie jednokrotne SAML. Jeśli używany jest provisioning JIT, możliwe jest tylko logowanie jednokrotne.
Konfigurowanie dostawcy tożsamości
Aby pracować z Zabbix, dostawca tożsamości SAML (onelogin.com, auth0.com, okta.com itp.) musi zostać skonfigurowany w następujący sposób:
- Assertion Consumer URL należy ustawić na
<path_to_zabbix_ui>/index_sso.php?acs - Single Logout URL należy ustawić na
<path_to_zabbix_ui>/index_sso.php?sls
Przykłady <path_to_zabbix_ui>: https://example.com/zabbix/ui,
http://another.example.com/zabbix, http://<any_public_ip_address>/zabbix
Konfigurowanie Zabbix
Jeśli chcesz używać uwierzytelniania SAML w frontend, musisz zainstalować php-openssl.
Aby używać uwierzytelniania SAML, należy skonfigurować Zabbix w następujący sposób:
1. Udostępnij klucz prywatny SP i certyfikaty. Aby aktywować SAML za pośrednictwem frontend, należy udostępnić certyfikat IdP (wkleić go lub wybrać plik). Jeśli wybrano opcję Podpisz lub Szyfruj, należy udostępnić certyfikat SP i klucz prywatny SP.
Jeśli w pliku konfiguracyjnym frontend (zabbix.conf.php) ustawiono $SSO['CERT_STORAGE'] = 'database', podczas konfigurowania SAML można wkleić tekst certyfikatu lub przesłać plik certyfikatu w frontend — pliki w systemie plików nie są wymagane.
Jeśli w pliku konfiguracyjnym 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 konfiguracyjnym), a frontend nie będzie przechowywać certyfikatów w bazie danych.
Należy pamiętać, że jeśli $SSO['CERT_STORAGE'] nie jest ustawione lub jest zakomentowane, przyjmowane jest przechowywanie w plikach.
Domyślnie Zabbix będzie szukać plików w następujących lokalizacjach:
- ui/conf/certs/sp.key - plik klucza prywatnego SP
- ui/conf/certs/sp.crt - plik certyfikatu SP
- ui/conf/certs/idp.crt - plik certyfikatu IdP
Materiały certyfikatów można importować za pośrednictwem frontend, wklejając tekst lub przesyłając pliki.
Chociaż w niektórych środowiskach dla wygody dozwolone są importy niezaszyfrowane, zdecydowanie zaleca się korzystanie z szyfrowanego transportu (na przykład włączenie HTTPS/TLS dla frontend Zabbix).
Jeśli certyfikaty/klucze SAML są przechowywane w bazie danych, należy włączyć TLS/SSL dla połączeń z bazą danych, aby chronić ruch między aplikacją a bazą danych.
Należy szyfrować kopie zapasowe baz danych, które mogą zawierać certyfikaty SAML lub klucze prywatne, oraz ograniczyć dostęp do plików kopii zapasowych i tabel bazy danych przechowujących materiały SAML.
Uprawnienia użytkownika bazy danych należy ograniczyć do niezbędnego minimum.
2. Wszystkie najważniejsze ustawienia można skonfigurować w frontend Zabbix. Możliwe jest jednak określenie dodatkowych ustawień w pliku konfiguracyjnym.

Parametry konfiguracji dostępne w frontend Zabbix:
| Parametr | Opis |
|---|---|
| Włącz uwierzytelnianie SAML | Zaznacz pole wyboru, aby włączyć uwierzytelnianie SAML. |
| Włącz aprowizację JIT | Zaznacz pole wyboru, aby włączyć aprowizację użytkowników JIT. |
| Identyfikator encji IDP | Unikatowy identyfikator encji w ramach dostawcy tożsamości SAML. |
| URL usługi SSO | URL, do którego użytkownicy zostaną przekierowani podczas logowania. |
| URL usługi SLO | URL, do którego użytkownicy zostaną przekierowani podczas wylogowywania. Jeśli pozostanie pusty, usługa SLO nie będzie używana. |
| Atrybut nazwy użytkownika | Atrybut SAML używany jako nazwa użytkownika podczas logowania do Zabbix. Lista obsługiwanych wartości jest określana przez dostawcę tożsamości. Przykłady: uid userprincipalname samaccountname username userusername urn:oid:0.9.2342.19200300.100.1.1 urn:oid:1.3.6.1.4.1.5923.1.1.1.13 urn:oid:0.9.2342.19200300.100.1.44 |
| Identyfikator encji SP | Unikatowy identyfikator dostawcy usług (jeśli nie pasuje, operacja zostanie odrzucona). Można określić URL lub dowolny ciąg danych. |
| Format identyfikatora nazwy SP | Żądanie określonego formatu identyfikatora nazwy w odpowiedzi. Przykłady: urn:oasis:names:tc:SAML:2.0:nameid-format:persistent urn:oasis:names:tc:SAML:2.0:nameid-format:unspecified urn:oasis:names:tc:SAML:2.0:nameid-format:transient |
| Certyfikat IdP | Zawartość certyfikatu dostawcy usług (SP) na potrzeby konfiguracji usługi jednokrotnego logowania (SSO) SAML. |
| Klucz prywatny SP | Zawartość klucza prywatnego dostawcy usług (SP) na potrzeby konfiguracji usługi jednokrotnego logowania (SSO) SAML. Zapewnia bezpieczne uwierzytelnianie i wymianę danych z dostawcą tożsamości (IdP). |
| Certyfikat SP | Zawartość certyfikatu dostawcy usług (SP) na potrzeby konfiguracji usługi jednokrotnego logowania (SSO) SAML. |
| Podpisz | Zaznacz pola wyboru, aby wybrać encje, dla których ma być włączony podpis SAML: Wiadomości Asercje Żądania AuthN Żądania wylogowania Odpowiedzi wylogowania |
| Szyfruj | Zaznacz pola wyboru, aby wybrać encje, dla których ma być włączone szyfrowanie SAML: Identyfikator nazwy Asercje |
| Logowanie z uwzględnieniem wielkości liter | Usuń zaznaczenie pola wyboru, aby wyłączyć uwzględnianie wielkości liter podczas logowania za pomocą nazw użytkowników (domyślnie włączone). Wyłączenie uwzględniania wielkości liter podczas logowania umożliwia na przykład zalogowanie się jako „admin”, nawet jeśli użytkownik Zabbix ma nazwę „Admin” lub „ADMIN”. Należy pamiętać, że jeśli uwzględnianie wielkości liter podczas logowania jest wyłączone i istnieje wielu użytkowników Zabbix o podobnych nazwach użytkowników (np. Admin i admin), logowanie tych użytkowników będzie zawsze odrzucane z następującym komunikatem o błędzie: „Uwierzytelnianie nie powiodło się: podane dane uwierzytelniające nie są unikatowe.” |
| Skonfiguruj aprowizację JIT | Zaznacz to pole wyboru, aby wyświetlić opcje związane z aprowizacją użytkowników JIT. |
| Atrybut nazwy grupy | Określ atrybut nazwy grupy na potrzeby aprowizacji użytkowników JIT. |
| Atrybut nazwy użytkownika | Określ atrybut nazwy użytkownika na potrzeby aprowizacji użytkowników JIT. |
| Atrybut nazwiska użytkownika | Określ atrybut nazwiska użytkownika na potrzeby aprowizacji użytkowników JIT. |
| Mapowanie grup użytkowników | Zmapuj wzorzec grupy użytkowników SAML na grupę użytkowników Zabbix i rolę użytkownika. Jest to wymagane do określenia, jaką grupę użytkowników/rolę otrzyma aprowizowany użytkownik w Zabbix. Kliknij Dodaj, aby dodać mapowanie. Pole Wzorzec grupy SAML obsługuje symbole wieloznaczne. Nazwa grupy musi odpowiadać istniejącej grupie. Jeśli użytkownik SAML pasuje do kilku grup użytkowników Zabbix, staje się członkiem wszystkich tych grup. Jeśli użytkownik pasuje do kilku ról użytkownika Zabbix, otrzyma najwyższy poziom uprawnień spośród nich. |
| Mapowanie typów mediów | Zmapuj atrybuty mediów użytkownika SAML (np. adres e-mail) na media użytkownika Zabbix w celu wysyłania powiadomień. |
| Włącz aprowizację SCIM | Zaznacz to pole wyboru, aby włączyć aprowizację SCIM 2.0. |
Przykłady konfigurowania dostawców tożsamości SAML na potrzeby logowania i aprowizacji użytkowników w Zabbix znajdziesz tutaj:
Uwagi dotyczące aprowizacji SCIM
W przypadku aprowizacji SCIM określ ścieżkę do frontend Zabbix i dodaj do niej api_scim.php po stronie dostawcy tożsamości, tj.:
https://<path-to-zabbix-ui>/api_scim.php
Atrybuty użytkownika używane w Zabbix (nazwa użytkownika, imię użytkownika, nazwisko użytkownika i atrybuty mediów) należy dodać jako atrybuty niestandardowe. W razie potrzeby zewnętrzna przestrzeń nazw powinna być taka sama jak schemat użytkownika: urn:ietf:params:scim:schemas:core:2.0:User.
Ustawienia zaawansowane
Dodatkowe parametry SAML można skonfigurować w pliku konfiguracyjnym frontend Zabbix (zabbix.conf.php):
Przykłady konfiguracji
Przykład 1: Łączenie się z instancją Zabbix za pośrednictwem load balancera z użyciem TLS/SSL
Jeśli do łączenia się z instancją Zabbix używany jest load balancer, który korzysta z TLS/SSL, podczas gdy Zabbix nie korzysta z tego protokołu, określ parametry baseurl, strict i use_proxy_headers w następujący sposób:
$SSO['SETTINGS'] = [
'strict' => false,
'baseurl' => 'https://zabbix.example.com/zabbix/',
'use_proxy_headers' => true
];
Przykład 2: Konfigurowanie niestandardowych algorytmów podpisu i skrótu SAML
$SSO['SETTINGS'] = [
'security' => [
'signatureAlgorithm' => 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha384'
'digestAlgorithm' => 'http://www.w3.org/2001/04/xmldsig-more#sha384',
// ...
],
// ...
];
Przykład 3: Konfigurowanie SSO z uwierzytelnianiem Kerberos za pomocą ADFS
$SSO['SETTINGS'] = [
'security' => [
'requestedAuthnContext' => [
'urn:oasis:names:tc:SAML:2.0:ac:classes:Kerberos',
],
'requestedAuthnContextComparison' => 'exact'
]
];
W tym przypadku w polu SP name ID konfiguracji SAML ustaw:
urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified