13 Configurazione di SAML con Okta

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

Configurazione di Okta

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

2. Nell'interfaccia web di Okta, vai a 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 rimosso dalla richiesta. Anche la casella di controllo 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 è richiesto 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 istruzioni sugli attributi vengono inserite nelle asserzioni SAML condivise con Zabbix.

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

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

Se prevedi di utilizzare una connessione crittografata, genera i certificati di crittografia privato e pubblico, quindi carica il certificato pubblico in 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 fai clic su Finish.

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

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

9. Scarica il certificato IdP. Imposta i permessi 644 eseguendo:

chmod 644 idp.crt

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

Le istruzioni di configurazione si apriranno in una nuova scheda; tieni questa scheda aperta durante la configurazione di Zabbix.

Configurazione di Zabbix

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

Campo di Zabbix Campo di configurazione in Okta Valore di esempio
ID entità IdP Identity Provider Issuer
URL del servizio SSO Identity Provider Single Sign-On URL
Attributo nome utente Attribute name usrEmail
ID entità SP Audience URI zabbix
Attributo nome gruppo Attribute name groups
Attributo nome utente Attribute name user_name
Attributo cognome utente Attribute name user_lastname

È inoltre necessario configurare la mappatura dei gruppi utente e dei supporti.

2. Aggiungere il certificato Base64 fornito nelle istruzioni di configurazione SAML di Okta.

Se in zabbix.conf.php è impostato $SSO['CERT_STORAGE'] = 'database', è possibile incollare il testo del certificato o caricare il file del certificato nel frontend durante la configurazione SAML: non sono richiesti file nel filesystem.

Se in zabbix.conf.php è impostato $SSO['CERT_STORAGE'] = 'file', il certificato deve essere reso disponibile nel filesystem (per impostazione predefinita in ui/conf/certs o nel percorso configurato in zabbix.conf.php) e il frontend non memorizzerà i certificati nel database. Si noti che se $SSO['CERT_STORAGE'] non è impostato o è commentato, viene presunto l'archiviazione su file e i certificati vengono letti da ui/conf/certs.

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

4. Premere il pulsante Update per salvare queste impostazioni.

Provisioning SCIM

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

Selezionare la casella di controllo Enable SCIM provisioning. Di conseguenza, verrà visualizzata una nuova scheda Provisioning.

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

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

Se si riscontrano problemi di autenticazione, vedere Authorization header forwarding.

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

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

  • Create Users
  • Update User Attributes
  • Deactivate Users

Questo garantirà che questi tipi di richiesta vengano inviati a Zabbix.

5. Assicurarsi che tutti gli attributi definiti in SAML siano definiti anche in SCIM. È possibile accedere all'editor del profilo per l'app in "Provisioning" -> "To App", facendo clic su Go to Profile Editor.

Fare clic su Add Attribute. Compilare 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. Andare su "Provisioning" -> "To App" -> "Attribute Mappings" dell'applicazione. Fare clic su Show Unmapped Attributes in basso. Verranno visualizzati gli attributi aggiunti di recente.

7. Mappare ciascun attributo aggiunto.

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

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

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