14 Configurazione SAML con OneLogin

Panoramica

Questa sezione fornisce linee guida per configurare il single sign-on e il provisioning degli utenti in Zabbix da OneLogin utilizzando l'autenticazione SAML 2.0.

Configurazione di OneLogin

Creazione dell'applicazione

1. Accedi al tuo account su OneLogin. Per scopi di test, puoi creare un account sviluppatore gratuito in OneLogin.

2. Nell'interfaccia web di OneLogin, vai su Applications → Applications.

3. Fai clic su "Add App" e cerca l'app appropriata. Le linee guida in questa pagina si basano sull'esempio dell'app SCIM Provisioner with SAML (SCIM v2 Enterprise, full SAML).

4. Per iniziare, potresti voler personalizzare il nome visualizzato della tua app. Potresti anche voler aggiungere l'icona e i dettagli dell'app. Dopodiché, fai clic su Save.

Configurazione di SSO/SCIM provisioning

1. In Configuration -> Application details, imposta l'endpoint di single sign-on di Zabbix http://<zabbix-instance-url>/zabbix/index_sso.php?acs come valore di questi campi:

  • ACS (Consumer) URL Validator
  • ACS (Consumer) URL

Nota l'uso di "http" e non di "https", in modo che il parametro acs non venga troncato nella richiesta.

È anche possibile usare "https". Per farlo funzionare con Zabbix, è necessario aggiungere a conf/zabbix.conf.php la seguente riga:

$SSO['SETTINGS'] = ['use_proxy_headers' => true];

Lascia le altre opzioni con i valori predefiniti.

2. In Configuration -> API connection, imposta i seguenti valori:

  • SCIM Base URL: https://<zabbix-instance-url>/zabbix/api_scim.php
  • SCIM JSON Template: deve contenere tutti gli attributi personalizzati che desideri passare a Zabbix tramite SCIM, come user_name, user_lastname, user_email e user_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}"
}

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

Nota che, affinché il provisioning degli utenti funzioni, OneLogin deve ricevere in risposta un attributo 'name' con 'givenName' e 'familyName', anche se non era richiesto dal service provider. Pertanto è necessario specificarlo nello schema nella sezione di configurazione dell'applicazione.

  • SCIM Bearer Token: inserisci un token API di Zabbix con permessi di Super admin.

Fai clic su Enable per attivare la connessione.

3. Nella pagina Provisioning, abilita l'opzione Provisioning:

4. La pagina Parameters contiene un elenco di parametri predefiniti:

  • Assicurati che 'scimusername' corrisponda al valore di login dell'utente in OneLogin (ad esempio, email);
  • Seleziona l'opzione Include in User Provisioning per il parametro 'Groups';
  • Fai clic su "+" per creare i parametri personalizzati richiesti per le asserzioni SAML e il provisioning degli utenti, come user_name, user_lastname, user_email e user_mobile:

Quando aggiungi un parametro, assicurati di selezionare sia l'opzione Include in SAML assertion sia l'opzione Include in User Provisioning.

  • Aggiungi un parametro 'group' che corrisponda ai ruoli utente in OneLogin. I ruoli utente verranno passati come stringa, separati da un punto e virgola ;. I ruoli utente di OneLogin saranno usati per creare i gruppi utente in Zabbix:

Verifica l'elenco dei parametri:

5. Nella pagina Rules, crea le mappature dei ruoli utente al parametro Groups predefinito.

Puoi usare un'espressione regolare per passare ruoli specifici come gruppi. I nomi dei ruoli non devono contenere ;, poiché OneLogin lo usa come separatore quando invia un attributo con più ruoli.

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

chmod 644 idp.crt

Configurazione di Zabbix

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

Campo Zabbix Campo di configurazione in OneLogin Valore di esempio
IdP entity ID Issuer URL
(vedi la scheda SSO della tua applicazione in OneLogin)
SSO service URL SAML 2.0 Endpoint (HTTP)
(vedi la scheda SSO della tua applicazione in OneLogin)
SLO service URL SLO Endpoint (HTTP)
(vedi la scheda SSO della tua applicazione in OneLogin)
Username attribute Parametro personalizzato user_email
Group name attribute Parametro personalizzato group
User name attribute Parametro personalizzato user_name
User last name attribute Parametro personalizzato user_lastname

È inoltre necessario configurare il mapping dei gruppi utente. Il mapping dei media è opzionale. Fai clic su Update per salvare queste impostazioni.

2. Aggiungi il certificato Base64 fornito da OneLogin.

Se in zabbix.conf.php è impostato $SSO['CERT_STORAGE'] = 'database', puoi incollare il testo del certificato oppure 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. Nota che se $SSO['CERT_STORAGE'] non è impostato o è commentato, viene presunto l'archivio su file e i certificati vengono letti da ui/conf/certs.

Puoi accedere al download del certificato in OneLogin in Applications -> SSO -> fai clic su View details sotto il certificato corrente.

3. Fai clic sul pulsante Update per salvare queste impostazioni.

Provisioning utenti SCIM

Con il provisioning utenti abilitato, ora è possibile aggiungere/aggiornare gli utenti e i relativi ruoli in OneLogin e farne eseguire immediatamente il provisioning in Zabbix.

Ad esempio, è possibile creare un nuovo utente:

Aggiungerlo a un ruolo utente e all'applicazione che eseguirà il provisioning dell'utente:

Quando si salva l'utente, verrà eseguito il provisioning in Zabbix. In Application -> Users è possibile controllare lo stato del provisioning degli utenti correnti dell'applicazione:

Se il provisioning è stato eseguito correttamente, l'utente sarà visibile nell'elenco utenti di Zabbix.