3 SAML
Panoramica
SAML 2.0 authentication può essere utilizzato per accedere a Zabbix.
Se l'accesso SAML è configurato senza provisioning utente JIT, l'utente deve già esistere in Zabbix; la password Zabbix dell'utente non viene utilizzata per l'autenticazione. Dopo un'autenticazione SAML riuscita, Zabbix confronta l'attributo username ricevuto da SAML con un nome utente Zabbix locale esistente.
Provisioning degli utenti
È possibile configurare il provisioning JIT (just-in-time) degli utenti per gli utenti SAML. In questo caso, non è necessario che un utente esista già in Zabbix. L'account utente può essere creato quando l'utente accede a Zabbix per la prima volta.
Se il provisioning JIT è abilitato, nella scheda Authentication deve essere specificato un gruppo di utenti per gli utenti deprovisioned.
Oltre al provisioning JIT, è anche possibile abilitare e configurare il provisioning SCIM (System for Cross-domain Identity Management) - gestione continua degli account utente per gli utenti che sono stati creati tramite user provisioning. Il provisioning SCIM richiede un API token di Zabbix (con privilegi di Super admin) per l'autenticazione in Zabbix.
Ad esempio, se un utente viene spostato da un gruppo SAML a un altro, l'utente verrà anche spostato da un gruppo a un altro in Zabbix; se un utente viene rimosso da un gruppo SAML, l'utente verrà anche rimosso dal gruppo in Zabbix e, se non appartiene ad alcun altro gruppo, verrà aggiunto al gruppo di utenti per gli utenti deprovisioned.
Se SCIM è abilitato e configurato, un utente SAML verrà provisioned nel momento in cui l'utente accede a Zabbix e verrà aggiornato continuamente in base alle modifiche in SAML. Gli utenti SAML già esistenti non verranno provisioned e verranno aggiornati solo gli utenti provisioned. Si noti che solo i media validi verranno aggiunti a un utente quando l'utente viene provisioned o aggiornato.
Se SCIM non è abilitato, un utente SAML verrà provisioned (e successivamente aggiornato) nel momento in cui l'utente accede a Zabbix.
Se l'autenticazione SAML è abilitata, gli utenti potranno scegliere se accedere localmente oppure tramite single sign-on SAML. Se viene utilizzato il provisioning JIT, è possibile solo il single sign-on.
Configurazione del provider di identità
Per poter lavorare con Zabbix, un provider di identità SAML (onelogin.com, auth0.com, okta.com, ecc.) deve essere configurato nel seguente modo:
- Assertion Consumer URL deve essere impostato su
<path_to_zabbix_ui>/index_sso.php?acs - Single Logout URL deve essere impostato su
<path_to_zabbix_ui>/index_sso.php?sls
Esempi di <path_to_zabbix_ui>: https://example.com/zabbix/ui,
http://another.example.com/zabbix, http://<any_public_ip_address>/zabbix
Configurazione di Zabbix
È necessario installare php-openssl per utilizzare l'autenticazione SAML nel frontend.
Per utilizzare l'autenticazione SAML, Zabbix deve essere configurato nel modo seguente:
1. La chiave privata e il certificato devono essere archiviati in ui/conf/certs/, a meno che non vengano specificati percorsi personalizzati in zabbix.conf.php.
Per impostazione predefinita, Zabbix cercherà nei seguenti percorsi:
- ui/conf/certs/sp.key - file della chiave privata SP
- ui/conf/certs/sp.crt - file del certificato SP
- ui/conf/certs/idp.crt - file del certificato IDP
2. Tutte le impostazioni più importanti possono essere configurate nel frontend di Zabbix. Tuttavia, è possibile specificare impostazioni aggiuntive nel file di configurazione.

Parametri di configurazione disponibili nel frontend di Zabbix:
| Parametro | Descrizione |
|---|---|
| Abilita autenticazione SAML | Selezionare la casella di controllo per abilitare l'autenticazione SAML. |
| Abilita provisioning JIT | Selezionare la casella di controllo per abilitare il provisioning degli utenti JIT. |
| ID entità IDP | L'identificatore univoco dell'entità all'interno dell'identity provider SAML. |
| URL del servizio SSO | L'URL a cui gli utenti verranno reindirizzati durante l'accesso. |
| URL del servizio SLO | L'URL a cui gli utenti verranno reindirizzati durante la disconnessione. Se lasciato vuoto, il servizio SLO non verrà utilizzato. |
| Attributo del nome utente | Attributo SAML da utilizzare come nome utente durante l'accesso a Zabbix. L'elenco dei valori supportati è determinato dall'identity provider. Esempi: 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 |
| ID entità SP | L'identificatore univoco del service provider (se non corrisponde, l'operazione verrà rifiutata). È possibile specificare un URL o qualsiasi stringa di dati. |
| Formato dell'ID nome SP | Richiede un formato specifico dell'ID nome nella risposta. Esempi: 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 |
| Firma | Deselezionare le caselle di controllo per disabilitare le firme SAML per le entità corrispondenti: Messaggi Assertion Richieste AuthN Richieste di disconnessione Risposte di disconnessione |
| Crittografa | Selezionare le caselle di controllo per scegliere le entità per le quali abilitare la crittografia SAML: ID nome Assertion |
| Accesso con distinzione tra maiuscole e minuscole | Deselezionare la casella di controllo per disabilitare la distinzione tra maiuscole e minuscole nei nomi utente (abilitata per impostazione predefinita). La disabilitazione della distinzione tra maiuscole e minuscole consente, ad esempio, di accedere come "admin" anche se l'utente Zabbix è "Admin" o "ADMIN". Tenere presente che, se la distinzione tra maiuscole e minuscole è disabilitata e sono presenti più utenti Zabbix con nomi utente simili (ad esempio, Admin e admin), l'accesso per tali utenti verrà sempre negato con il seguente messaggio di errore: "Autenticazione non riuscita: le credenziali fornite non sono univoche." |
| Configura il provisioning JIT | Selezionare questa casella di controllo per visualizzare le opzioni relative al provisioning degli utenti JIT. |
| Attributo del nome del gruppo | Specificare l'attributo del nome del gruppo per il provisioning degli utenti JIT. |
| Attributo del nome utente | Specificare l'attributo del nome utente per il provisioning degli utenti JIT. |
| Attributo del cognome dell'utente | Specificare l'attributo del cognome dell'utente per il provisioning degli utenti JIT. |
| Mappatura dei gruppi di utenti | Mappare un modello di gruppo di utenti SAML a un gruppo di utenti e a un ruolo utente Zabbix. Questo è necessario per determinare quale gruppo e ruolo utente riceverà l'utente sottoposto a provisioning in Zabbix. Fare clic su Aggiungi per aggiungere una mappatura. Il campo Modello del gruppo SAML supporta i caratteri jolly. Il nome del gruppo deve corrispondere a un gruppo esistente. Se un utente SAML corrisponde a più gruppi di utenti Zabbix, diventa membro di tutti questi gruppi. Se un utente corrisponde a più ruoli utente Zabbix, riceverà il livello di autorizzazione più elevato tra quelli disponibili. |
| Mappatura dei tipi di supporto | Mappare gli attributi dei tipi di supporto SAML dell'utente (ad esempio, l'e-mail) ai tipi di supporto dell'utente Zabbix per l'invio delle notifiche. |
| Abilita provisioning SCIM | Selezionare questa casella di controllo per abilitare il provisioning SCIM 2.0. |
Vedere gli esempi di configurazione degli identity provider SAML per l'accesso e il provisioning degli utenti in Zabbix con:
Note sul provisioning SCIM
Per il provisioning SCIM, specificare il percorso del frontend di Zabbix e aggiungervi api_scim.php dal lato del provider di identità, ad esempio:
https://<path-to-zabbix-ui>/api_scim.php
Gli attributi utente utilizzati in Zabbix (username, nome utente, cognome utente e attributi dei media) devono essere aggiunti come attributi personalizzati e, se necessario, lo spazio dei nomi esterno deve essere uguale allo schema utente: urn:ietf:params:scim:schemas:core:2.0:User.
Impostazioni avanzate
Parametri SAML aggiuntivi possono essere configurati nel file di configurazione del frontend di Zabbix (zabbix.conf.php):
- $SSO['SP_KEY'] = '<percorso del file della chiave privata SP>';
- $SSO['SP_CERT'] = '<percorso del file del certificato SP>';
- $SSO['IDP_CERT'] = '<percorso del file del certificato IDP>';
- $SSO['SETTINGS']
L'array $SSO['SETTINGS'] deve seguire la stessa struttura prevista dalla libreria SAML PHP Toolkit (fornita con Zabbix).
Per una descrizione completa delle opzioni di configurazione disponibili, fare riferimento alla documentazione ufficiale della libreria.
Solo le seguenti opzioni possono essere impostate come parte di $SSO['SETTINGS']:
- strict
- baseurl
- compress
- contactPerson
- organization
- sp (solo le opzioni specificate in questo elenco)
- attributeConsumingService
- x509certNew
- idp (solo le opzioni specificate in questo elenco)
- singleLogoutService (solo un'opzione)
- responseUrl
- certFingerprint
- certFingerprintAlgorithm
- x509certMulti
- singleLogoutService (solo un'opzione)
- security (solo le opzioni specificate in questo elenco)
- signMetadata
- wantNameId
- requestedAuthnContext
- requestedAuthnContextComparison
- wantXMLValidation
- relaxDestinationValidation
- destinationStrictlyMatches
- rejectUnsolicitedResponsesWithInResponseTo
- signatureAlgorithm
- digestAlgorithm
- lowercaseUrlencoding
Tutte le altre opzioni verranno prese dal database e non potranno essere sovrascritte. L'opzione debug verrà ignorata.
Inoltre, se la UI di Zabbix si trova dietro un proxy o un load balancer, può essere utilizzata l'opzione personalizzata use_proxy_headers:
- false (predefinito) - ignora l'opzione;
- true - utilizza gli header HTTP X-Forwarded-* per costruire l'URL di base.
Se si utilizza un load balancer per connettersi all'istanza Zabbix, dove il load balancer usa TLS/SSL e Zabbix no, è necessario indicare i parametri 'baseurl', 'strict' e 'use_proxy_headers' come segue:
$SSO['SETTINGS'] = [
'strict' => false,
'baseurl' => 'https://zabbix.example.com/zabbix/',
'use_proxy_headers' => true
];
Esempio di configurazione:
$SSO['SETTINGS'] = [
'security' => [
'signatureAlgorithm' => 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha384'
'digestAlgorithm' => 'http://www.w3.org/2001/04/xmldsig-more#sha384',
// ...
],
// ...
];
Configurazione del frontend con Kerberos/ADFS
Il file di configurazione del frontend di Zabbix (zabbix.conf.php) può essere utilizzato per configurare l'SSO con autenticazione Kerberos e ADFS:
$SSO['SETTINGS'] = [
'security' => [
'requestedAuthnContext' => [
'urn:oasis:names:tc:SAML:2.0:ac:classes:Kerberos',
],
'requestedAuthnContextComparison' => 'exact'
]
];
In questo caso, nel campo SP name ID della configurazione SAML impostare:
urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified