SAML

Panoramica

L'autenticazione SAML 2.0 authentication può essere utilizzata 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 l'autenticazione SAML riuscita, Zabbix confronta l'attributo username ricevuto da SAML con un nome utente Zabbix locale esistente.

Provisioning utenti

È possibile configurare il provisioning utenti JIT (just-in-time) 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 utenti per gli utenti deprovisionati.

Oltre al provisioning JIT, è anche possibile abilitare e configurare il provisioning SCIM (System for Cross-domain Identity Management), ovvero la gestione continua degli account utente per quegli utenti che sono stati creati tramite il provisioning utenti. Il provisioning SCIM richiede un API token di Zabbix (con permessi di Super admin) per l'autenticazione in Zabbix.

Ad esempio, se un utente viene spostato da un gruppo SAML a un altro, anche l'utente verrà spostato da un gruppo a un altro in Zabbix; se un utente viene rimosso da un gruppo SAML, anche l'utente verrà rimosso dal gruppo in Zabbix e, se non appartiene ad alcun altro gruppo, verrà aggiunto al gruppo utenti per gli utenti deprovisionati.

Se SCIM è abilitato e configurato, un utente SAML verrà provisionato nel momento in cui accede a Zabbix e aggiornato continuamente in base alle modifiche in SAML. Gli utenti SAML già esistenti non verranno provisionati e solo gli utenti provisionati verranno aggiornati. Si noti che solo i supporti validi verranno aggiunti a un utente quando l'utente viene provisionato o aggiornato.

Se SCIM non è abilitato, un utente SAML verrà provisionato (e successivamente aggiornato) nel momento in cui accede a Zabbix.

Se l'autenticazione SAML è abilitata, gli utenti potranno scegliere se accedere localmente o tramite single sign-on SAML. Se viene utilizzato il provisioning JIT, sarà possibile solo il single sign-on.

Configurazione del provider di identità

Per funzionare 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. Fornire la chiave privata e i certificati SP. È necessario fornire un certificato IdP (incollando il testo o scegliendo un file) per attivare SAML tramite il frontend. È necessario fornire un certificato SP e una chiave privata SP se sono selezionate le opzioni Firma o Crittografa.

Se nel file di configurazione del frontend (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 necessari file nel filesystem.

Se nel file di configurazione è impostato $SSO['CERT_STORAGE'] = 'file', il certificato deve essere disponibile nel filesystem (per impostazione predefinita in ui/conf/certs o nel percorso configurato nel file di configurazione) e il frontend non memorizzerà i certificati nel database. Se $SSO['CERT_STORAGE'] non è impostato o è commentato, viene utilizzata la memorizzazione su file.

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

Il materiale dei certificati può essere importato tramite il frontend incollando il testo o caricando i file. Sebbene in alcuni ambienti siano consentite importazioni non crittografate per comodità, si consiglia vivamente di utilizzare un trasporto crittografato (ad esempio, abilitare HTTPS/TLS per il frontend Zabbix). Quando i certificati/le chiavi SAML sono memorizzati nel database, abilitare TLS/SSL per le connessioni al database, così da proteggere il traffico tra l'applicazione e il database.
Crittografare i backup del database che possono contenere certificati SAML o chiavi private e limitare l'accesso ai file di backup e alle tabelle del database che memorizzano il materiale SAML. Limitare i privilegi dell'utente del database al minimo necessario.

2. Tutte le impostazioni più importanti possono essere configurate nel frontend Zabbix. Tuttavia, è possibile specificare impostazioni aggiuntive nel file di configurazione.

Parametri di configurazione disponibili nel frontend 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
Certificato IdP Contenuto del certificato del service provider (SP) per la configurazione del servizio SAML single sign-on (SSO).
Chiave privata SP Contenuto della chiave privata del service provider (SP) per la configurazione del servizio SAML single sign-on (SSO). Fornisce autenticazione sicura e scambio di dati con l'identity provider (IdP).
Certificato SP Contenuto del certificato del service provider (SP) per la configurazione del servizio SAML single sign-on (SSO).
Firma Selezionare le caselle di controllo per scegliere le entità per le quali deve essere abilitata la firma SAML:
Messaggi
Asserzioni
Richieste AuthN
Richieste di disconnessione
Risposte di disconnessione
Crittografa Selezionare le caselle di controllo per scegliere le entità per le quali deve essere abilitata la crittografia SAML:
ID nome
Asserzioni
Accesso con distinzione tra maiuscole e minuscole Deselezionare la casella di controllo per disabilitare la distinzione tra maiuscole e minuscole per i 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 provisioning JIT Selezionare questa casella di controllo per mostrare 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 utente Associare un modello di gruppo utente SAML a un gruppo utente Zabbix e a un ruolo utente.
Questo è necessario per determinare quale gruppo/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 utente Zabbix, diventerà 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 Associare 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 al frontend Zabbix e aggiungervi api_scim.php, sul lato del provider di identità, ovvero:

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 corrispondere allo schema utente: urn:ietf:params:scim:schemas:core:2.0:User.

Impostazioni avanzate

È possibile configurare parametri SAML aggiuntivi nel file di configurazione del frontend di Zabbix (zabbix.conf.php):

Esempi di configurazione

Esempio 1: Connessione a un'istanza Zabbix con un bilanciatore del carico che utilizza TLS/SSL

Se viene utilizzato un bilanciatore del carico per connettersi a un'istanza Zabbix e il bilanciatore del carico utilizza TLS/SSL mentre Zabbix non lo utilizza, specificare 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 2: Configurazione di algoritmi personalizzati per la firma e il digest SAML

$SSO['SETTINGS'] = [
    'security' => [
        'signatureAlgorithm' => 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha384'
        'digestAlgorithm' => 'http://www.w3.org/2001/04/xmldsig-more#sha384',
        // ...
    ],
    // ...
];

Esempio 3: Configurazione dell'SSO con autenticazione Kerberos tramite 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