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 |
|---|---|
| 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). Disabilitando la distinzione tra maiuscole e minuscole, ad esempio, è possibile 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." |
| Periodo di provisioning | 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 | Hostname, IP o URI del server LDAP. Esempi: ldap.example.com, 127.0.0.1, ldap://ldap.example.com Per un server LDAP sicuro, usa il protocollo ldaps e l'hostname. 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 viene usato quando si utilizzano URI LDAP completi. |
| Base DN | Percorso 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, vedi la 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. Nota 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, disabilita i bind anonimi sugli host LDAP e usa 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 | Seleziona questa casella per mostrare le opzioni relative al provisioning JIT. |
| Group configuration | Seleziona 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 Nota che memberOf è preferibile perché è più veloce; usa groupOfNames se il tuo server LDAP non supporta memberOf o se è richiesto il filtraggio dei gruppi. |
| Group name attribute | Specifica l'attributo da cui ottenere il nome del gruppo da tutti gli oggetti nell'attributo memberOf (vedi il campo User group membership attribute)Il nome del gruppo è necessario per la mappatura dei gruppi utente. |
| User group membership attribute | Specifica l'attributo che contiene le 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 | Specifica l'attributo che contiene il nome dell'utente. |
| User last name attribute | Specifica l'attributo che contiene il cognome dell'utente. |
| User group mapping | Mappa 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 provisioned in Zabbix. Fai clic su Add per aggiungere una mappatura. Il campo LDAP group pattern supporta i wildcard. 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 | Mappa gli attributi LDAP media 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 | Fai clic sull'intestazione Advanced configuration per visualizzare le opzioni di configurazione avanzate (vedi sotto). |
| StartTLS | Seleziona la casella 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 | Definisci 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 case-sensitive in un ambiente LDAP o Microsoft Active Directory case-insensitive, la stringa può essere definita come segue: (%{attr}:caseExactMatch:=%{user}).Se il filtro non è personalizzato, LDAP userà il valore predefinito: (%{attr}=%{user}). |
Per configurare un server LDAP per il binding diretto dell'utente, aggiungi un attributo uid=%{user} al parametro Base DN (ad esempio, uid=%{user},dc=example,dc=com) e lascia vuoti i parametri BindDN e Bind password.
Durante l'autenticazione, il segnaposto %{user} verrà sostituito dal nome utente inserito al momento del login.
Con il binding diretto dell'utente, Zabbix ha accesso alle credenziali dell'utente solo durante il login interattivo.
Pertanto, le attività di provisioning che operano senza un login 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 bind per loro conto.
Usa il binding anonimo o un utente di bind dedicato (account di servizio) se hai bisogno che il provisioning e le ricerche LDAP funzionino dal frontend senza richiedere che l'utente finale abbia effettuato l'accesso.
I seguenti campi sono specifici per "groupOfNames" come metodo Group configuration:

| Parameter | Description |
|---|---|
| Group base DN | Percorso base ai gruppi nel server LDAP. |
| Group name attribute | Specifica l'attributo da cui ottenere il nome del gruppo nel percorso base specificato per i gruppi. Il nome del gruppo è necessario per la mappatura dei gruppi utente. |
| Group member attribute | Specifica l'attributo che contiene le informazioni sui membri del gruppo in LDAP (ad esempio member). |
| Reference attribute | Specifica l'attributo di riferimento per il filtro del gruppo (vedi il campo Group filter). Usa quindi %{ref} nel filtro del gruppo per ottenere i valori dell'attributo specificato qui. |
| Group filter | Specifica 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).
Un approccio di questo tipo offre maggiore sicurezza e non richiede di modificare la 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. |