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 attributo 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 dall'Source attribute selezionato. Altrimenti 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

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

2. Aggiungi il certificato Base64 fornito da Entra ID.

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 necessari file nel filesystem.

Se in zabbix.conf.php è impostato $SSO['CERT_STORAGE'] = 'file', il certificato deve essere 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 assunto l'archiviazione su file e i certificati vengono letti da ui/conf/certs.

È inoltre necessario configurare la mappatura dei gruppi utente. La mappatura dei media è facoltativa.

3. Fai clic sul pulsante 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à Automatic provisioning:

  • 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 Super admin.
  • Fai clic su Test connection per verificare se la connessione è stabilita.

2. Ora puoi aggiungere tutti gli attributi che verranno passati con 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 al 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, che tenta 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
    ]
];