2 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 utenti
È possibile configurare il provisioning 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 LDAP e la password, Zabbix verifica nel server LDAP predefinito se questo utente esiste. Se l'utente esiste e non ha ancora un account in Zabbix, in Zabbix viene creato un nuovo utente e l'utente può accedere.
Un utente creato tramite provisioning JIT viene associato al server LDAP (directory) impostato come predefinito al momento della creazione. La modifica successiva del server LDAP predefinito non cambia né aggiorna il server LDAP collegato agli utenti che erano già stati sottoposti a provisioning.
Se il provisioning JIT è abilitato, nella scheda Authentication deve essere specificato un gruppo utenti per gli utenti deprovisionati.
Il provisioning JIT consente anche di aggiornare gli account utente sottoposti a provisioning in base alle modifiche in LDAP. Ad esempio, se un utente viene spostato da un gruppo LDAP a un altro, anche in Zabbix l'utente verrà spostato da un gruppo a un altro; se un utente viene rimosso da un gruppo LDAP, anche in Zabbix l'utente verrà rimosso dal gruppo e, se non appartiene ad alcun altro gruppo, verrà aggiunto al gruppo utenti per gli utenti deprovisionati. Gli account utente sottoposti a provisioning vengono aggiornati in base al periodo di provisioning configurato oppure 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 viene fornito alcun Bind DN / Bind password e il server LDAP consente query anonime.
- Utente di binding dedicato (account di servizio) — un account LDAP specifico viene impostato in Bind DN / Bind password e viene utilizzato da Zabbix per la ricerca 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 bind utilizzando le credenziali inserite dall'utente al momento dell'accesso (senza Bind DN / Bind password configurati); 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 il login interattivo. Di conseguenza, le azioni di provisioning che richiedono l'autenticazione a LDAP al di fuori della sessione di login dell'utente (ad esempio, l'uso del pulsante Provision now o l'esecuzione del provisioning in background quando l'utente non ha effettuato attivamente l'accesso) non possono autenticarsi e quindi non funzioneranno. Il provisioning e gli aggiornamenti per il binding diretto dell'utente avvengono 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:
| Parameter | Description |
|---|---|
| Enable LDAP authentication | Selezionare la casella di controllo per abilitare l'autenticazione LDAP. |
| Enable JIT provisioning | Selezionare la casella di controllo per abilitare il provisioning JIT. |
| Servers | Fare clic su Add per configurare un server LDAP (vedere Configurazione del server LDAP di seguito). |
| Case-sensitive login | Deselezionare la casella di controllo per disabilitare l'accesso con distinzione tra maiuscole e minuscole per i nomi utente (abilitato per impostazione predefinita). Disabilitare l'accesso con distinzione tra maiuscole e minuscole consente, ad esempio, di accedere come "admin" anche se l'utente Zabbix è "Admin" o "ADMIN". Si noti che, se l'accesso con distinzione tra maiuscole e minuscole è disabilitato 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: "Authentication failed: supplied credentials are not unique." |
| Provisioning period | Impostare il periodo di provisioning, ovvero la frequenza con cui l'utente autenticato verrà sottoposto a provisioning durante l'utilizzo del frontend. |
Configurazione del server LDAP

Parametri di configurazione del server LDAP:
| Parameter | Description |
|---|---|
| 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, usare il protocollo ldaps e il nome host. Esempio: ldaps://ldap.example.com Con OpenLDAP 2.x.x e versioni successive, è possibile usare un URI LDAP completo nel formato ldap://hostname:port oppure 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 base degli 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 una nota sotto) |
| Search attribute | Attributo dell'account LDAP usato per la ricerca: uid (per OpenLDAP), sAMAccountName (per Microsoft Active Directory) |
| Bind DN | Account LDAP 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. Si noti che il binding anonimo apre potenzialmente la configurazione del dominio a utenti non autorizzati (informazioni su utenti, computer, server, gruppi, servizi, ecc.). Per motivi di sicurezza, disabilitare i bind anonimi sugli host LDAP e usare invece l'accesso autenticato. |
| Bind password | Password LDAP dell'account per il binding e la ricerca nel server LDAP. |
| Description | Descrizione del server LDAP. |
| Configure JIT provisioning | Selezionare questa casella di controllo per mostrare le opzioni relative al provisioning JIT. |
| Group configuration | Selezionare il metodo di configurazione dei gruppi: memberOf - cercando gli utenti e il relativo attributo di appartenenza ai gruppi groupOfNames - cercando i gruppi tramite l'attributo member Si noti che memberOf è preferibile perché è più veloce; usare groupOfNames se il server LDAP non supporta memberOf o se è richiesto il filtraggio dei gruppi. |
| Group name attribute | Specificare l'attributo da cui ottenere il nome del gruppo da tutti gli oggetti nell'attributo memberOf (vedere il campo User group membership attribute)Il nome del gruppo è necessario per il mapping dei gruppi utente. |
| User group membership attribute | Specificare l'attributo che contiene informazioni sui gruppi di appartenenza dell'utente (ad esempio memberOf).Per esempio, l'attributo memberOf può contenere informazioni come questa: 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 pattern 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 provisionato in Zabbix. Fare clic su Add per aggiungere una mappatura. Il campo LDAP group pattern supporta i caratteri jolly. Il nome del gruppo deve corrispondere a un gruppo esistente. Se un utente LDAP corrisponde a più gruppi utente di Zabbix, l'utente diventa membro di tutti. Se un utente corrisponde a più ruoli utente di Zabbix, riceverà quello con il livello di autorizzazione più alto tra essi. |
| Media type mapping | Mappare gli attributi media LDAP dell'utente (ad esempio email) ai media utente di Zabbix per l'invio delle notifiche (il valore dell'attributo viene usato come campo media Send to). |
| Advanced configuration | Fare clic sull'intestazione Advanced configuration per visualizzare le opzioni di configurazione avanzate (vedere sotto). |
| StartTLS | Selezionare la casella di controllo per usare l'operazione StartTLS durante la connessione al server LDAP. La connessione fallirà se il server non supporta StartTLS. StartTLS non può essere usato con server che utilizzano 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 autenticarePer esempio, per eseguire una ricerca con distinzione tra maiuscole e minuscole in un ambiente LDAP o Microsoft Active Directory senza distinzione tra maiuscole e minuscole, la stringa può essere definita come segue: (%{attr}:caseExactMatch:=%{user}).Se il filtro non viene personalizzato, LDAP userà quello 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 al momento dell'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 si autenticano tramite binding diretto dell'utente, perché Zabbix non può eseguire il binding per loro conto.
Usare 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 l'accesso dell'utente finale.
I seguenti campi sono specifici di "groupOfNames" come metodo Group configuration:

| Parameter | Description |
|---|---|
| Group base DN | Percorso base dei gruppi nel server LDAP. |
| Group name attribute | Specificare l'attributo da cui ottenere il nome del gruppo nel percorso base specificato per i gruppi. Il nome del gruppo è necessario per il mapping 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). Quindi usare %{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. Per 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.
Si consiglia di creare un account LDAP separato (Bind DN) per eseguire il binding e la ricerca nel server LDAP con privilegi minimi in LDAP, invece di usare account utente reali (usati per accedere al frontend di Zabbix).
Questo approccio offre maggiore sicurezza e non richiede di modificare il Bind password quando l'utente cambia la propria password nel server LDAP.
Nella tabella sopra si tratta dell'account ldap_search.
Verifica dell'accesso
Il pulsante Test consente di verificare l'accesso dell'utente:
| Parametro | Descrizione |
|---|---|
| Login | Nome utente LDAP da verificare (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 prova. |
| User password | Password dell'utente LDAP da verificare. |