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 JIT (just-in-time) degli 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 controlla se questo utente esiste nel server LDAP predefinito. Se l'utente esiste e non ha ancora un account in Zabbix, viene creato un nuovo utente in Zabbix 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 sono 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 l'utente verrà spostato da un gruppo a un altro in Zabbix; se un utente viene rimosso da un gruppo LDAP, anche l'utente verrà rimosso dal gruppo in Zabbix 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 oppure ha almeno una pagina del frontend aperta nel browser. Non esistono processi in background dedicati al provisioning degli utenti.

LDAP supporta tre modalità di bind alla directory per l'autenticazione e le ricerche:

  • Bind anonimo — non viene fornito alcun Bind DN / Bind password e il server LDAP consente query anonime.
  • Utente di bind 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.
  • Bind 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 bind 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:

Parametro Descrizione
Abilita autenticazione LDAP Selezionare la casella per abilitare l'autenticazione LDAP.
Abilita provisioning JIT Selezionare la casella 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 per disabilitare l'accesso con distinzione tra maiuscole e minuscole per i nomi utente (abilitato per impostazione predefinita).
La disabilitazione dell'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: "Autenticazione non riuscita: le credenziali fornite non sono univoche."
Periodo di provisioning Impostare il periodo di provisioning, cioè la frequenza con cui l'utente che ha effettuato l'accesso 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 Hostname, 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 l'hostname. Esempio: ldaps://ldap.example.com
Con OpenLDAP 2.x.x e versioni successive, può essere utilizzato un URI LDAP completo nel formato 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 utilizzata 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 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 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.
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 per mostrare le opzioni relative al provisioning JIT.
Group configuration Selezionare il metodo di configurazione del gruppo:
memberOf - tramite la ricerca degli utenti e del loro attributo di appartenenza al gruppo
groupOfNames - tramite la ricerca dei gruppi attraverso 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 la mappatura dei gruppi utente.
User group membership attribute Specificare l'attributo che contiene le informazioni sui gruppi a cui appartiene l'utente (ad esempio memberOf).
Per esempio, l'attributo memberOf può contenere informazioni come queste: memberOf=cn=zabbix-admin,ou=Groups,dc=example,dc=com
Questo 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 utenti Zabbix e a un ruolo utente.
Questo è necessario per determinare quale gruppo utenti/ruolo riceverà in Zabbix l'utente sottoposto a provisioning.
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 utenti Zabbix, l'utente diventa membro di tutti.
Se un utente corrisponde a più 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 email) ai supporti utente Zabbix per l'invio delle notifiche (il valore dell'attributo viene utilizzato come campo Send to del supporto).
Advanced configuration Fare clic sull'etichetta Advanced configuration per visualizzare le opzioni di configurazione avanzata (vedere sotto).
StartTLS Selezionare la casella 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 autenticare
Per 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 è 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 (per esempio,uid=%{user},dc=example,dc=com) e lasciare vuoti i parametri BindDN e Bind password. Durante l'autenticazione, il segnaposto %{user} verrà sostituito con il nome utente inserito durante il 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 (per esempio, il pulsante Provision now o il metodo API user.provision) ignoreranno gli utenti che si autenticano usando il binding diretto dell'utente perché Zabbix non può effettuare 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.

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 ai gruppi specificato.
Il nome del gruppo è necessario per la mappatura dei gruppi utente.
Group member attribute Specificare l'attributo che contiene le 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 utilizzare %{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ò può 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 utilizzare 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 questo è il nome 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.