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 |
|---|---|
| Name | 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. |
| Port | Porta del server LDAP. Il valore predefinito è 389. Per una connessione LDAP sicura, il numero di porta normalmente è 636. Non utilizzato quando si usano URI LDAP completi. |
| Base DN | 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 sotto) |
| Search attribute | Attributo dell'account LDAP utilizzato per la ricerca: uid (per OpenLDAP), sAMAccountName (per Microsoft Active Directory) |
| Bind DN | 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 e così via). Per motivi di sicurezza, disabilitare i binding anonimi sugli host LDAP e utilizzare invece l'accesso autenticato. |
| Bind password | Password LDAP dell'account utilizzato per il binding e la ricerca nel server LDAP. |
| Description | Descrizione del server LDAP. |
| Configure JIT provisioning | Selezionare questa casella di controllo per visualizzare le opzioni relative al provisioning JIT. |
| Group configuration | Selezionare il metodo di configurazione dei gruppi: memberOf - tramite la ricerca degli utenti e del relativo attributo di appartenenza ai gruppi groupOfNames - tramite la ricerca dei gruppi attraverso l'attributo member Si noti che memberOf è preferibile perché è più veloce; utilizzare groupOfNames se il server LDAP non supporta memberOf o se è necessario il filtraggio dei gruppi. |
| Group name attribute | Specificare l'attributo da cui ottenere il nome del gruppo per tutti gli oggetti nell'attributo memberOf (vedere il campo User group membership attribute)Il nome del gruppo è necessario per la mappatura dei gruppi utente. |
| User group membership attribute | 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. |
| User name attribute | Specificare l'attributo che contiene il nome dell'utente. |
| User last name attribute | Specificare l'attributo che contiene il cognome dell'utente. |
| User group mapping | Mappare un modello di gruppo utente LDAP a un gruppo utente e a un ruolo utente di Zabbix. Questo è necessario per determinare quale gruppo/ruolo utente riceverà l'utente sottoposto a provisioning in Zabbix. Fare clic su Add per aggiungere una mappatura. Il campo LDAP group pattern supporta i caratteri jolly (vedere la nota sotto). Il nome del gruppo deve corrispondere a un gruppo esistente. Se un utente LDAP corrisponde a diversi gruppi utente Zabbix, diventa membro di tutti questi gruppi. Se un utente corrisponde a diversi ruoli utente Zabbix, riceverà quello con il livello di autorizzazione più alto tra essi. |
| Media type mapping | 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 Send to del media). |
| Advanced configuration | Fare clic sull'intestazione Advanced configuration per visualizzare le opzioni di configurazione avanzate (vedere sotto). |
| StartTLS | Selezionare la casella di controllo per utilizzare l'operazione StartTLS durante la connessione al server LDAP. La connessione fallirà se il server non supporta StartTLS. StartTLS non può essere utilizzato con server che usano il protocollo ldaps. |
| Search filter | 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, è possibile definire la stringa 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 Base DN (ad esempio,uid=%{user},dc=example,dc=com) e lasciare vuoti i parametri BindDN e Bind password.
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 Provision now o il metodo API user.provision) ignoreranno gli utenti che eseguono l'autenticazione tramite il binding diretto dell'utente, perché Zabbix non può eseguire il binding per loro conto.
Utilizzare il binding anonimo o un utente dedicato per il binding (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 LDAP group pattern, 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 seguenti campi sono specifici di "groupOfNames" come metodo Group configuration:

| Parametro | Descrizione |
|---|---|
| Group base DN | Percorso di base ai gruppi nel server LDAP. |
| Group name attribute | 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. |
| Group member attribute | Specificare l'attributo che contiene informazioni sui membri del gruppo in LDAP (ad esempio, member). |
| Reference attribute | Specificare l'attributo di riferimento per il filtro del gruppo (vedere il campo Group filter). Utilizzare quindi %{ref} nel filtro del gruppo per ottenere i valori dell'attributo specificato qui. |
| Group filter | 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ò può ridurre la sicurezza della connessione al catalogo LDAP.
È consigliabile creare un account LDAP separato (Bind DN) 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 di Bind password quando l'utente cambia la propria password nel server LDAP.
Nella tabella precedente si tratta del 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. |