13 Configurazione SAML con Okta

Questa sezione fornisce linee guida per configurare Okta per abilitare l'autenticazione SAML 2.0 e il provisioning degli utenti per Zabbix.

Configurazione di Okta

1. Vai su https://developer.okta.com/signup/ e registrati/accedi al tuo account.

2. Nell'interfaccia web di Okta vai su Applications → Applications.

3. Fai clic su Create App Integration.

Seleziona "SAML 2.0" come metodo di accesso e fai clic su Next.

4. Nelle impostazioni generali, inserisci il nome dell'app e fai clic su Next.

5. Nella configurazione SAML, inserisci i valori indicati di seguito, quindi fai clic su Next.

  • In General aggiungi:

    • Single sign-on URL: http://<your-zabbix-url>/zabbix/index_sso.php?acs
      Nota l'uso di "http" e non di "https", in modo che il parametro acs non venga troncato nella richiesta. Anche la casella Use this for Recipient URL and Destination URL deve essere selezionata.
    • Audience URI (SP Entity ID): zabbix
      Nota che questo valore verrà utilizzato all'interno dell'asserzione SAML come identificatore univoco del service provider (se non corrisponde, l'operazione verrà rifiutata). In questo campo è possibile specificare un URL o qualsiasi stringa di dati.
    • Default RelayState:
      Lascia questo campo vuoto; se è necessario un reindirizzamento personalizzato, può essere aggiunto in Zabbix nelle impostazioni Users → Users.
    • Compila gli altri campi in base alle tue preferenze.
  • In Attribute Statements/Group Attribute Statements aggiungi:

Queste dichiarazioni di attributo vengono inserite nelle asserzioni SAML condivise con Zabbix.

I nomi degli attributi usati qui sono esempi arbitrari. Puoi usare nomi di attributo diversi, tuttavia è necessario che corrispondano al rispettivo valore del campo nelle impostazioni SAML di Zabbix.

Se vuoi configurare l'accesso SAML a Zabbix senza il provisioning JIT degli utenti, allora è richiesto solo l'attributo email.

Se prevedi di usare una connessione crittografata, genera i certificati di crittografia privato e pubblico, quindi carica il certificato pubblico su Okta. Il modulo di caricamento del certificato appare quando Assertion Encryption è impostato su "Encrypted" (fai clic su Show Advanced Settings per trovare questo parametro).

6. Nella scheda successiva, seleziona "I'm a software vendor. I'd like to integrate my app with Okta" e premi "Finish".

7. Vai alla scheda "Assignments" della nuova applicazione creata e fai clic sul pulsante Assign, quindi seleziona "Assign to People" dal menu a discesa.

8. Nel popup che appare, assegna l'app alle persone che utilizzeranno SAML 2.0 per autenticarsi con Zabbix, quindi fai clic su Save and go back.

9. Vai alla scheda "Sign On" e fai clic sul pulsante View Setup Instructions.

Le istruzioni di configurazione si apriranno in una nuova scheda; mantieni aperta questa scheda mentre configuri Zabbix.

Configurazione di Zabbix

1. In Zabbix, vai alle impostazioni SAML e compila le opzioni di configurazione in base alle istruzioni di configurazione di Okta:

Campo Zabbix Campo di configurazione in Okta Valore di esempio
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

È inoltre necessario configurare la mappatura del gruppo utente e dei media.

2. Scarica il certificato fornito nelle istruzioni di configurazione SAML di Okta nella cartella ui/conf/certs come idp.crt.

Imposta i permessi 644 eseguendo:

chmod 644 idp.crt

3. Se Assertion Encryption è stato impostato su "Encrypted" in Okta, anche la casella di controllo "Assertions" del parametro Encrypt deve essere selezionata in Zabbix.

4. Premi il pulsante "Update" per salvare queste impostazioni.

Provisioning SCIM

1. Per attivare il provisioning SCIM, vai su "General" -> "App Settings" dell'applicazione in Okta.

Seleziona la casella Enable SCIM provisioning. Di conseguenza, viene visualizzata una nuova scheda Provisioning.

2. Vai alla scheda "Provisioning" per configurare una connessione SCIM:

  • In SCIM connector base URL specifica il percorso del frontend di Zabbix e aggiungi api_scim.php, cioè:
    https://<your-zabbix-url>/zabbix/api_scim.php
  • Unique identifier field for users: email
  • Authentication mode: HTTP header
  • In Authorization inserisci un token API valido con diritti di Super admin

Se riscontri problemi di autenticazione, consulta Authorization header forwarding.

3. Fai clic su Test Connector Configuration per testare la connessione. Se tutto è corretto, verrà visualizzato un messaggio di successo.

4. In "Provisioning" -> "To App", assicurati di selezionare le seguenti caselle di controllo:

  • Create Users
  • Update User Attributes
  • Deactivate Users

In questo modo, questi tipi di richiesta verranno inviati a Zabbix.

5. Assicurati che tutti gli attributi definiti in SAML siano definiti anche in SCIM. Puoi accedere all'editor del profilo della tua app in "Provisioning" -> "To App", facendo clic su Go to Profile Editor.

Fai clic su Add Attribute. Compila i valori di Display name, Variable name, External name con il nome dell'attributo SAML, ad esempio user_name.

External namespace deve essere uguale allo schema utente: urn:ietf:params:scim:schemas:core:2.0:User

6. Vai su "Provisioning" -> "To App" -> "Attribute Mappings" della tua applicazione. Fai clic su Show Unmapped Attributes in basso. Gli attributi appena aggiunti appariranno.

7. Mappa ogni attributo aggiunto.

8. Aggiungi gli utenti nella scheda "Assignments". Gli utenti devono essere stati aggiunti in precedenza in Directory -> People. Tutte queste assegnazioni verranno inviate come richieste a Zabbix.

9. Aggiungi i gruppi nella scheda "Push Groups". Il pattern di mappatura dei gruppi utente nelle impostazioni SAML di Zabbix deve corrispondere a un gruppo specificato qui. Se non c'è corrispondenza, l'utente non può essere creato in Zabbix.

Le informazioni sui membri del gruppo vengono inviate ogni volta che viene apportata una modifica.