12 Configurazione SAML con Microsoft Entra ID
Panoramica
Questa sezione fornisce linee guida per configurare il single sign-on e il provisioning degli utenti in Zabbix da Microsoft Entra ID (in precedenza Microsoft Azure Active Directory) utilizzando l'autenticazione SAML 2.0.
Configurazione di Microsoft Entra ID
Creazione dell'applicazione
1. Accedi a Microsoft Entra admin center su Microsoft Entra ID. Per scopi di test, puoi creare un account di prova gratuito in Microsoft Entra ID.
2. In Microsoft Entra admin center seleziona Applications -> Enterprise applications -> New application -> Create your own application.
3. Aggiungi il nome della tua app e seleziona l'opzione Integrate any other application.... Dopodiché, fai clic su Create.

Configurazione del single sign-on
1. Nella pagina della tua applicazione, vai su Set up single sign on e fai clic su Get started. Quindi seleziona SAML.
2. Modifica Basic SAML Configuration:
- In Identifier (Entity ID) imposta un nome univoco per identificare la tua app in Microsoft Entra ID, ad esempio
zabbix; - In Reply URL (Assertion Consumer Service URL) imposta l'endpoint di single sign-on di Zabbix:
https://<path-to-zabbix-ui>/index_sso.php?acs:

Nota che "https" è obbligatorio. Per farlo funzionare con Zabbix, è necessario aggiungere a conf/zabbix.conf.php la seguente riga:
$SSO['SETTINGS'] = ['use_proxy_headers' => true];
3. Modifica Attributes & Claims. Devi aggiungere tutti gli attributi che desideri passare a Zabbix (user_name, user_lastname, user_email, user_mobile, groups).
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.
- Fai clic su Add new claim per aggiungere un attributo:

- Fai clic su Add a group claim per aggiungere un attributo per passare i gruppi a Zabbix:

In questa claim è importante che i nomi dei gruppi (anziché gli ID dei gruppi) vengano passati a Zabbix tramite il Source attribute selezionato. In caso contrario, il provisioning JIT degli utenti non funzionerà correttamente.
4. In SAML Certificates scarica il certificato Base64 fornito da Entra ID e inseriscilo in conf/certs dell'installazione del frontend di Zabbix.
Imposta i permessi 644 eseguendo:
chmod 644 entra.cer
Assicurati che conf/zabbix.conf.php contenga la riga:
$SSO['IDP_CERT'] = 'conf/certs/entra.cer';
5. Usa i valori di Set up <your app name> in Entra ID per configurare l'autenticazione SAML di Zabbix (vedi la sezione successiva):

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

| Campo Zabbix | Campo di configurazione in Entra ID | Valore di esempio |
|---|---|---|
| IdP entity ID | Microsoft Entra identifier | |
| SSO service URL | Login URL | |
| SLO service URL | Logout URL | |
| SP entity ID | Identifier (Entity ID) | |
| Username attribute | Custom attribute (claim) | user_email |
| Group name attribute | Custom attribute (claim) | groups |
| User name attribute | Custom attribute (claim) | user_name |
| User last name attribute | Custom attribute (claim) | user_lastname |
È inoltre necessario configurare il mapping dei gruppi utente. Il mapping dei media è facoltativo.
Fai clic su Update per salvare queste impostazioni.
Provisioning utenti SCIM
1. Nella pagina dell'applicazione Entra ID, dal menu principale apri la pagina Provisioning. Fai clic su Get started e poi seleziona la modalità di provisioning Automatic:
- In Tenant URL, imposta il seguente valore:
https://<path-to-zabbix-ui>/api_scim.php - In Secret token, inserisci un token API di Zabbix con permessi di Super admin.
- Fai clic su Test connection per verificare se la connessione è stabilita.

2. Ora puoi aggiungere tutti gli attributi che verranno passati tramite SCIM a Zabbix. Per farlo, fai clic su Mappings e poi su Provision Microsoft Entra ID Users.

In fondo all'elenco Attribute Mapping, abilita Show advanced options, quindi fai clic su Edit attribute list for customappsso.
In fondo all'elenco degli attributi, aggiungi i tuoi attributi con tipo 'String':

Salva l'elenco.
3. Ora puoi aggiungere le mappature per gli attributi aggiunti. In fondo all'elenco Attribute Mapping, fai clic su Add New Mapping e crea le mappature come mostrato di seguito:

Quando tutte le mappature sono state aggiunte, salva l'elenco delle mappature.

4. Come prerequisito per il provisioning degli utenti in Zabbix, devi avere utenti e gruppi configurati in Entra ID.
Per farlo, vai su Microsoft Entra admin center e aggiungi utenti/gruppi nelle rispettive pagine Users e Groups.
5. Quando utenti e gruppi sono stati creati in Entra ID, puoi andare al menu Users and groups della tua applicazione e aggiungerli all'app.
6. Vai al menu Provisioning della tua app e fai clic su Start provisioning per eseguire il provisioning degli utenti in Zabbix.
Nota che la richiesta PATCH Users in Entra ID non supporta modifiche in media.
Firma delle richieste di autenticazione
È possibile configurare Entra ID per convalidare la firma delle richieste di autenticazione firmate.
Per farlo, creare chiavi pubblica/privata:
openssl req -x509 -newkey rsa:4096 -keyout /usr/share/zabbix/conf/certs/request-sign.key -out /usr/share/zabbix/conf/certs/request-sign.pem -sha256 -days 1825 -nodes
Assegnare i permessi:
chown apache /usr/share/zabbix/conf/certs/request-sign.key
chmod 400 /usr/share/zabbix/conf/certs/request-sign.key
Aggiornare la configurazione del frontend di Zabbix aggiungendo:
$SSO['SP_KEY'] = 'conf/certs/request-sign.key';
$SSO['SP_CERT'] = 'conf/certs/request-sign.crt';
Risoluzione dei problemi
Possono verificarsi problemi di autenticazione con i browser MicroSoft Edge quando un utente, tentando di accedere a Zabbix tramite SAML, ha già effettuato l'accesso con il profilo MicroSoft Edge. Un segnale di questo problema è che l'utente potrebbe riuscire ad accedere a Zabbix usando MicroSoft Edge in modalità privata.
Per evitare problemi di autenticazione in questo caso, potrebbe essere necessario impostare requestedAuthnContext su "false" nel file di configurazione del frontend di Zabbix (zabbix.conf.php).
$SSO['SETTINGS'] = [
'security' => [
'requestedAuthnContext' => false
]
];