13 Konfiguracja SAML z Okta

Ta sekcja zawiera wskazówki dotyczące konfiguracji Okta w celu włączenia uwierzytelniania SAML 2.0 oraz provisioningu użytkowników dla Zabbix.

Konfiguracja Okta

1. Przejdź do https://developer.okta.com/signup/ i zarejestruj się/zaloguj na swoje konto.

2. W interfejsie webowym Okta przejdź do Applications → Applications.

3. Kliknij Create App Integration.

Wybierz „SAML 2.0” jako metodę logowania i kliknij Next.

4. W ustawieniach ogólnych wpisz nazwę aplikacji i kliknij Next.

5. W konfiguracji SAML wprowadź poniższe wartości, a następnie kliknij Next.

  • W sekcji General dodaj:

    • Single sign-on URL: http://<your-zabbix-url>/zabbix/index_sso.php?acs
      Zwróć uwagę na użycie „http”, a nie „https”, aby parametr acs nie został obcięty w żądaniu. Pole wyboru Use this for Recipient URL and Destination URL również powinno być zaznaczone.
    • Audience URI (SP Entity ID): zabbix
      Zwróć uwagę, że ta wartość będzie używana w asercji SAML jako unikalny identyfikator dostawcy usług (jeśli nie będzie zgodna, operacja zostanie odrzucona). W tym polu można podać adres URL lub dowolny ciąg danych.
    • Default RelayState:
      Pozostaw to pole puste; jeśli wymagane jest niestandardowe przekierowanie, można je dodać w Zabbix w ustawieniach Users > Users.
    • Pozostałe pola wypełnij zgodnie ze swoimi preferencjami.
  • W sekcji Attribute Statements/Group Attribute Statements dodaj:

Te instrukcje atrybutów są wstawiane do asercji SAML udostępnianych Zabbix.

Nazwy atrybutów użyte tutaj są dowolnymi przykładami. Możesz użyć innych nazw atrybutów, jednak muszą one odpowiadać wartościom odpowiednich pól w ustawieniach SAML Zabbix.

Jeśli chcesz skonfigurować logowanie SAML do Zabbix bez provisioning użytkowników JIT, wymagany jest tylko atrybut adresu e-mail.

Jeśli planujesz używać połączenia szyfrowanego, wygeneruj prywatne i publiczne certyfikaty szyfrowania, a następnie prześlij certyfikat publiczny do Okta. Formularz przesyłania certyfikatu pojawi się, gdy parametr Assertion Encryption zostanie ustawiony na „Encrypted” (kliknij Show Advanced Settings, aby znaleźć ten parametr).

6. W następnej karcie wybierz „I'm a software vendor. I'd like to integrate my app with Okta” i kliknij Finish.

7. Przejdź do karty „Assignments” nowo utworzonej aplikacji i kliknij przycisk Assign, a następnie z listy rozwijanej wybierz „Assign to People”.

8. W wyświetlonym oknie przypisz aplikację osobom, które będą używać SAML 2.0 do uwierzytelniania w Zabbix, a następnie kliknij Save and go back.

9. Pobierz certyfikat IdP. Ustaw dla niego uprawnienia 644, uruchamiając:

chmod 644 idp.crt

10. Przejdź do karty „Sign On” i kliknij przycisk View Setup Instructions.

Instructions konfiguracji zostaną otwarte w nowej karcie; pozostaw tę kartę otwartą podczas konfigurowania Zabbix.

Konfiguracja Zabbix

1. W Zabbix przejdź do ustawień SAML i wypełnij opcje konfiguracji na podstawie instrukcji konfiguracji z Okta:

Pole Zabbix Pole konfiguracji w Okta Przykładowa wartość
IdP entity ID Identity Provider Issuer
SSO service URL Identity Provider Single Sign-On URL
Username attribute Attribute name usrEmail
SP entity ID Audience URI zabbix
Group name attribute Attribute name groups
User name attribute Attribute name user_name
User last name attribute Attribute name user_lastname

Należy również skonfigurować mapowanie grup użytkowników i mediów.

2. Dodaj certyfikat Base64 podany w instrukcjach konfiguracji Okta SAML.

Jeśli w zabbix.conf.php ustawiono $SSO['CERT_STORAGE'] = 'database', możesz wkleić treść certyfikatu lub przesłać plik certyfikatu w frontendzie podczas konfiguracji SAML — żadne pliki w systemie plików nie są wymagane.

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.

3. Jeśli w Okta parametr Assertion Encryption został ustawiony na "Encrypted", w Zabbix również należy zaznaczyć pole wyboru "Assertions" parametru Encrypt.

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

Provisioning SCIM

1. Aby włączyć provisioning SCIM, przejdź do "General" -> "App Settings" aplikacji w Okta.

Zaznacz pole wyboru Enable SCIM provisioning. W rezultacie pojawi się nowa karta Provisioning.

2. Przejdź do karty "Provisioning", aby skonfigurować połączenie SCIM:

  • W polu SCIM connector base URL podaj ścieżkę do frontend Zabbix i dopisz do niej api_scim.php, tj.:
    https://<your-zabbix-url>/zabbix/api_scim.php
  • Unique identifier field for users: email
  • Authentication mode: HTTP header
  • W polu Authorization wprowadź prawidłowy token API z uprawnieniami Super admin

Jeśli występują problemy z uwierzytelnianiem, zobacz Przekazywanie nagłówka Authorization.

3. Kliknij Test Connector Configuration, aby przetestować połączenie. Jeśli wszystko jest poprawnie skonfigurowane, zostanie wyświetlony komunikat o powodzeniu.

4. W "Provisioning" -> "To App" upewnij się, że zaznaczone są następujące pola wyboru:

  • Create Users
  • Update User Attributes
  • Deactivate Users

Zapewni to wysyłanie tych typów żądań do Zabbix.

5. Upewnij się, że wszystkie atrybuty zdefiniowane w SAML są również zdefiniowane w SCIM. Możesz uzyskać dostęp do edytora profilu swojej aplikacji w "Provisioning" -> "To App", klikając Go to Profile Editor.

Kliknij Add Attribute. Wypełnij pola Display name, Variable name, External name nazwą atrybutu SAML, na przykład user_name.

Pole External namespace powinno być takie samo jak schemat użytkownika: urn:ietf:params:scim:schemas:core:2.0:User

6. Przejdź do "Provisioning" -> "To App" -> "Attribute Mappings" swojej aplikacji. Kliknij Show Unmapped Attributes na dole. Pojawią się nowo dodane atrybuty.

7. Zmapuj każdy dodany atrybut.

8. Dodaj użytkowników na karcie "Assignments". Użytkownicy muszą wcześniej zostać dodani w Directory -> People. Wszystkie te przypisania zostaną wysłane jako żądania do Zabbix.

9. Dodaj grupy na karcie "Push Groups". Wzorzec mapowania grup użytkowników w ustawieniach Zabbix SAML musi odpowiadać grupie określonej tutaj. Jeśli nie ma zgodności, użytkownik nie może zostać utworzony w Zabbix.

Informacje o członkach grupy są wysyłane za każdym razem, gdy zostanie wprowadzona jakaś zmiana.