LDAP
Panoramica
L'autenticazione LDAP esterna può essere utilizzata per verificare nomi utente e password.
L'autenticazione LDAP di Zabbix funziona almeno con Microsoft Active Directory e OpenLDAP.
Se è configurato solo l'accesso LDAP, l'utente deve comunque esistere anche in Zabbix, tuttavia la sua password di Zabbix non verrà utilizzata. Se l'autenticazione ha esito positivo, Zabbix assocerà un nome utente locale con l'attributo del nome utente restituito da LDAP.
Provisioning degli utenti
È possibile configurare il provisioning degli utenti JIT (just-in-time) per gli utenti LDAP. 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.
Quando un utente LDAP inserisce il proprio login e la propria password LDAP, Zabbix verifica nel server LDAP predefinito se l'utente esiste. Se l'utente esiste e non dispone ancora di un account in Zabbix, viene creato un nuovo utente in Zabbix e l'utente può accedere.
Un utente creato tramite il provisioning JIT viene associato al server LDAP (directory) impostato come predefinito al momento della creazione. La modifica successiva del server LDAP predefinito non modifica né aggiorna il server LDAP collegato agli utenti di cui è già stato eseguito il provisioning.
Se il provisioning JIT è abilitato, nella scheda Authentication deve essere specificato un gruppo di utenti per gli utenti deprovisioned.
Il provisioning JIT consente inoltre di aggiornare gli account degli utenti di cui è stato eseguito il provisioning in base alle modifiche apportate in LDAP. Ad esempio, se un utente viene spostato da un gruppo LDAP a un altro, verrà spostato anche da un gruppo all'altro in Zabbix; se un utente viene rimosso da un gruppo LDAP, verrà rimosso anche dal gruppo in Zabbix e, se non appartiene ad alcun altro gruppo, verrà aggiunto al gruppo di utenti per gli utenti deprovisioned. Gli account degli utenti di cui è stato eseguito il provisioning vengono aggiornati in base al periodo di provisioning configurato o quando l'utente accede a Zabbix.
Si noti che il provisioning in background viene eseguito dal frontend di Zabbix quando l'utente interagisce con esso o ha almeno una pagina del frontend aperta nel browser. Non esistono processi in background dedicati al provisioning degli utenti.
LDAP supporta tre modalità di binding alla directory per l'autenticazione e le ricerche:
- Binding anonimo: non vengono forniti Bind DN / Bind password e il server LDAP consente query anonime.
- Utente dedicato per il binding (account di servizio): in Bind DN / Bind password viene impostato uno specifico account LDAP, utilizzato da Zabbix per le ricerche e il provisioning. Questa è l'opzione consigliata e più flessibile, perché Zabbix può eseguire ricerche e provisioning in background senza le credenziali dell'utente finale.
- Binding diretto dell'utente: Zabbix esegue il binding utilizzando le credenziali inserite dall'utente al momento dell'accesso (nessun Bind DN / Bind password configurato); questa modalità viene configurata includendo un segnaposto come
uid=%{user}nel Base DN. In questa modalità Zabbix ha accesso alla password dell'utente solo durante l'accesso interattivo. Di conseguenza, le azioni di provisioning che richiedono l'autenticazione a LDAP al di fuori della sessione di accesso dell'utente (ad esempio, utilizzando il pulsante Provision now o eseguendo il provisioning in background quando l'utente non ha effettuato attivamente l'accesso) non possono eseguire l'autenticazione e pertanto non funzioneranno. Il provisioning e gli aggiornamenti per il binding diretto dell'utente vengono eseguiti solo nel momento in cui l'utente accede.
Server multipli
Se necessario, è possibile definire diversi server LDAP. Ad esempio, è possibile utilizzare un server diverso per autenticare un gruppo di utenti differente. Una volta configurati i server LDAP, nella configurazione dei gruppi di utenti diventa possibile selezionare il server LDAP richiesto per il rispettivo gruppo di utenti.
Se un utente appartiene a più gruppi di utenti e a più server LDAP, per l'autenticazione verrà utilizzato il primo server nell'elenco dei server LDAP ordinato per nome in ordine crescente.
Configurazione

Parametri di configurazione:
| Parametro | Descrizione |
|---|---|
| Abilita autenticazione LDAP | Selezionare la casella di controllo per abilitare l'autenticazione LDAP. |
| Abilita provisioning JIT | Selezionare la casella di controllo per abilitare il provisioning JIT. |
| Server | Fare clic su Aggiungi per configurare un server LDAP (vedere Configurazione del server LDAP di seguito). |
| 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." |
| Periodo di provisioning | Impostare il periodo di provisioning, ovvero la frequenza con cui l'utente connesso verrà sottoposto a provisioning mentre lavora con il frontend. |
Configurazione del server LDAP

Parametri di configurazione del server LDAP:
| Parametro | Descrizione |
|---|---|
| Nome | Nome del server LDAP nella configurazione di Zabbix. |
| Host | Nome host, IP o URI del server LDAP. Esempi: ldap.example.com, 127.0.0.1, ldap://ldap.example.com Per un server LDAP sicuro, utilizzare il protocollo ldaps e il nome host. Esempio: ldaps://ldap.example.com Con OpenLDAP 2.x.x e versioni successive, è possibile utilizzare un URI LDAP completo nella forma ldap://hostname:port o ldaps://hostname:port. |
| Porta | Porta del server LDAP. Il valore predefinito è 389. Per una connessione LDAP sicura, il numero di porta è normalmente 636. Non utilizzata quando si usano URI LDAP completi. |
| DN di base | Percorso di base agli account utente nel server LDAP: ou=Users,ou=system (per OpenLDAP), DC=company,DC=com (per Microsoft Active Directory) uid=%{user},dc=example,dc=com (per il binding diretto dell'utente, vedere la nota seguente) |
| Attributo di ricerca | Attributo dell'account LDAP utilizzato per la ricerca: uid (per OpenLDAP), sAMAccountName (per Microsoft Active Directory) |
| DN di binding | Account LDAP utilizzato per il binding e la ricerca nel server LDAP, esempi: uid=ldap_search,ou=system (per OpenLDAP), CN=ldap_search,OU=user_group,DC=company,DC=com (per Microsoft Active Directory) È supportato anche il binding anonimo. Il binding anonimo può potenzialmente esporre la configurazione del dominio a utenti non autorizzati (informazioni su utenti, computer, server, gruppi, servizi, ecc.). Per motivi di sicurezza, disabilitare i binding anonimi sugli host LDAP e utilizzare invece l'accesso autenticato. |
| Password di binding | Password LDAP dell'account utilizzato per il binding e la ricerca nel server LDAP. |
| Descrizione | Descrizione del server LDAP. |
| Configura il provisioning JIT | Selezionare questa casella per visualizzare le opzioni relative al provisioning JIT. |
| Configurazione dei gruppi | Selezionare il metodo di configurazione dei gruppi: memberOf - cercando gli utenti e il loro attributo di appartenenza ai gruppi groupOfNames - cercando i gruppi tramite l'attributo member Si noti che memberOf è preferibile perché è più veloce; utilizzare groupOfNames se il server LDAP non supporta memberOf o se è necessario filtrare i gruppi. |
| Attributo del nome del gruppo | Specificare l'attributo da cui ottenere il nome del gruppo per tutti gli oggetti nell'attributo memberOf (vedere il campo Attributo di appartenenza dell'utente al gruppo)Il nome del gruppo è necessario per la mappatura dei gruppi utente. |
| Attributo di appartenenza dell'utente al gruppo | Specificare l'attributo che contiene informazioni sui gruppi a cui appartiene l'utente (ad esempio, memberOf).Ad esempio, l'attributo memberOf può contenere informazioni come: memberOf=cn=zabbix-admin,ou=Groups,dc=example,dc=comQuesto campo è disponibile solo per il metodo memberOf. |
| Attributo del nome utente | Specificare l'attributo che contiene il nome dell'utente. |
| Attributo del cognome dell'utente | Specificare l'attributo che contiene il cognome dell'utente. |
| Mappatura dei gruppi utente | Mappare un modello di gruppo utente LDAP a un gruppo utente e a un ruolo utente Zabbix. Questo è necessario per determinare quale gruppo utente/ruolo verrà assegnato all'utente sottoposto a provisioning in Zabbix. Fare clic su Aggiungi per aggiungere una mappatura. Il campo Modello del gruppo LDAP supporta i caratteri jolly (vedere la nota seguente). Il nome del gruppo deve corrispondere a un gruppo esistente. Se un utente LDAP corrisponde a più gruppi utente Zabbix, diventa membro di tutti questi gruppi. Se un utente corrisponde a più ruoli utente Zabbix, gli verrà assegnato quello con il livello di autorizzazione più alto tra questi. |
| Mappatura dei tipi di supporto | Mappare gli attributi LDAP media dell'utente (ad esempio, l'e-mail) ai media dell'utente Zabbix per l'invio delle notifiche (il valore dell'attributo viene utilizzato come campo Invia a del media). |
| Configurazione avanzata | Fare clic sull'intestazione Configurazione avanzata per visualizzare le opzioni di configurazione avanzate (vedere di seguito). |
| StartTLS | Selezionare la casella per utilizzare l'operazione StartTLS durante la connessione al server LDAP. La connessione avrà esito negativo se il server non supporta StartTLS. StartTLS non può essere utilizzato con server che usano il protocollo ldaps. |
| Filtro di ricerca | Definire una stringa personalizzata durante l'autenticazione di un utente in LDAP. Sono supportati i seguenti segnaposto:%{attr} - nome dell'attributo di ricerca (uid, sAMAccountName)%{user} - valore del nome utente da autenticareAd esempio, per eseguire una ricerca con distinzione tra maiuscole e minuscole in un ambiente LDAP o Microsoft Active Directory che non distingue tra maiuscole e minuscole, la stringa può essere definita come segue: (%{attr}:caseExactMatch:=%{user}).Se il filtro non viene personalizzato, LDAP utilizzerà il valore predefinito: (%{attr}=%{user}). |
Per configurare un server LDAP per il binding diretto dell'utente, aggiungere un attributo uid=%{user} al parametro DN di base (ad esempio,uid=%{user},dc=example,dc=com) e lasciare vuoti i parametri BindDN e Password di binding.
Durante l'autenticazione, il segnaposto %{user} verrà sostituito dal nome utente inserito durante l'accesso.
Con il binding diretto dell'utente, Zabbix ha accesso alle credenziali dell'utente solo durante l'accesso interattivo.
Pertanto, le attività di provisioning che operano senza un accesso interattivo (ad esempio, il pulsante Esegui provisioning ora o il metodo API user.provision) ignoreranno gli utenti che eseguono l'autenticazione tramite binding diretto dell'utente, perché Zabbix non può eseguire il binding per loro conto.
Utilizzare il binding anonimo o un utente di binding dedicato (account di servizio) se è necessario che il provisioning e le ricerche LDAP funzionino dal frontend senza richiedere che l'utente finale abbia effettuato l'accesso.
Nel campo Modello del gruppo LDAP, il carattere jolly * si comporta come .* nelle espressioni regolari e corrisponde a zero o più caratteri.
Ad esempio, il modello *Demo*Admin corrisponde sia ai gruppi LDAP WebDemoSuperAdmin sia a WebDemoAdmin.
Il modello deve corrispondere all'intero nome del gruppo, quindi Demo*Admin (senza il carattere * iniziale) non corrisponde a nessuno dei due gruppi.
I campi seguenti sono specifici di "groupOfNames" come metodo di Configurazione dei gruppi:

| Parametro | Descrizione |
|---|---|
| DN di base del gruppo | Percorso di base ai gruppi nel server LDAP. |
| Attributo del nome del gruppo | Specificare l'attributo da cui ottenere il nome del gruppo nel percorso di base specificato per i gruppi. Il nome del gruppo è necessario per la mappatura dei gruppi utente. |
| Attributo dei membri del gruppo | Specificare l'attributo che contiene informazioni sui membri del gruppo in LDAP (ad esempio, member). |
| Attributo di riferimento | Specificare l'attributo di riferimento per il filtro del gruppo (vedere il campo Filtro del gruppo). Utilizzare quindi %{ref} nel filtro del gruppo per ottenere i valori dell'attributo specificato qui. |
| Filtro del gruppo | Specificare il filtro per recuperare il gruppo di cui l'utente è membro. Ad esempio, (member=uid=%{ref},ou=Users,dc=example,dc=com) corrisponderà a "User1" se l'attributo member del gruppo è uid=User1,ou=Users,dc=example,dc=com e restituirà il gruppo di cui "User1" è membro. |
In caso di problemi con i certificati, per far funzionare una connessione LDAP sicura (ldaps) potrebbe essere necessario aggiungere una riga TLS_REQCERT allow al file di configurazione /etc/openldap/ldap.conf.
Ciò potrebbe ridurre la sicurezza della connessione al catalogo LDAP.
È consigliabile creare un account LDAP separato (DN di binding) per eseguire il binding e la ricerca nel server LDAP con privilegi minimi in LDAP, invece di utilizzare account utente reali (utilizzati per accedere al frontend di Zabbix).
Questo approccio offre maggiore sicurezza e non richiede la modifica della Password di binding quando l'utente cambia la propria password nel server LDAP.
Nella tabella precedente, il nome dell'account è ldap_search.
Test dell'accesso
Il pulsante Test consente di testare l'accesso dell'utente:
| Parametro | Descrizione |
|---|---|
| Login | Nome utente LDAP da testare (precompilato con il nome utente corrente dal frontend di Zabbix). Questo nome utente deve esistere nel server LDAP. Zabbix non attiverà l'autenticazione LDAP se non è in grado di autenticare l'utente di test. |
| Password utente | Password dell'utente LDAP da testare. |