This is a machine translation based on the English version of the article. It might or might not have already been subject to text preparation. If you find errors, please file a GitHub issue that states the paragraph that has to be improved. |
1. Introduzione
Poiché la definizione manuale degli utenti è scalabile solo fino a un certo livello, Checkmk offre una funzionalità che consente di utilizzare servizi basati su LDAP per la gestione degli utenti, per sincronizzare automaticamente gli utenti dalle directory home e, allo stesso modo, per assegnare automaticamente a questi utenti gruppi di contatto, ruoli e altri attributi in Checkmk. Checkmk non è limitato a una singola fonte LDAP e, se necessario, può anche distribuire gli utenti ad altri siti collegati.
2. Configurazione di una connessione LDAP
2.1. Connessione al server
Per creare una connessione a un server compatibile con LDAP è necessario un utente con permessi di lettura per il server.
Come minimo, deve avere permessi di lettura per le persone e i gruppi che deve sincronizzare.
Nell'esempio seguente questo utente si chiama check_mk.
Sotto Setup > Users > LDAP & Active Directory > Add connection puoi creare una nuova connessione. Nel modulo, inserisci prima l'IDe che preferisci per la connessione nella box General Properties. Se vuoi, puoi inserire un titolo semplice e significativo nel campo Description. Come sempre, l'IDe deve essere unico e non può essere modificato in seguito. Può contenere solo lettere, cifre, trattini e caratteri di sottolineatura, e deve iniziare con una lettera o un carattere di sottolineatura.

Successivamente, in "LDAP Connection" puoi definire il server LDAP, nonché uno o più server di failover, se disponibili. Poi devi solo selezionare "Directory type" e definire i dati utente per l'accesso in lettura in "Bind credentials". Tieni presente che devi inserire il nome utente con il suo percorso LDAP completo. Non è necessario tenere conto delle maiuscole e delle minuscole. La configurazione dovrebbe quindi apparire più o meno così:

Checkmk supporta non solo Active Directory. Per cambiare la directory, ad esempio in OpenLDAP, selezionala nel campo Directory type — ulteriori modifiche alla configurazione derivanti da questa azione si verificano solo in pochi punti.
I server di failover vengono utilizzati quando il server effettivo non è accessibile o quando è stato superato un limite di tempo. Questo ha senso se non si utilizza un proprio server locale, ma si desidera creare una connessione ridondante.
La connessione di Checkmk con il server LDAP viene sempre mantenuta finché il server LDAP non è più accessibile a causa di un timeout o di altri problemi. Solo allora si passa al server di failover. Lo stesso vale dopo il switch: la connessione tornerà al server effettivamente configurato solo se il server di failover non è più disponibile.
2.2. Definizione degli utenti
Successivamente verranno definiti i percorsi verso gli utenti e i gruppi e impostati i filtri. In "User base DN", inserisci prima il percorso tramite il quale devono essere trovati gli utenti. Assicurati qui che l'Operational Unit (OU) sia impostata in modo da includere tutti gli utenti desiderati e il minor numero possibile di altri. Più utenti vengono interrogati, più lenta sarà l'elaborazione della sincronizzazione.
Imposta quindi l’opzione “Search scope”. Qui puoi filtrare in modo ricorsivo tutti gli utenti presenti nell’OU e nelle unità sottostanti, oppure limitare la ricerca a quelli che si trovano direttamente in questa OU. Se hai inserito un utente direttamente nel percorso, dovresti selezionare “Search only the entry at the base DN” — in questo modo verrà incluso solo quell’utente.
Con l'aiuto dell'opzione "Search filter" puoi restringere ulteriormente la selezione degli utenti da importare.
Se, ad esempio, desideri sincronizzare solo gli utenti appartenenti a un gruppo specifico, imposta una query LDAP come mostrato nella schermata seguente.
Il prerequisito per questo è che gli utenti abbiano l'attributo "memberof".
Di seguito puoi scoprire come filtrare in base all'appartenenza a un gruppo, senza questo attributo.

Il filtro standard può anche essere combinato con l'attributo memberof o con altri filtri:
(&(objectclass=user)(objectcategory=person)(memberof=cn=cmk-admins,ou=groups,dc=mycompany,dc=org))
Come si può vedere nella box Users, ci sono ulteriori opzioni per la ricerca degli utenti.
Con l'opzione User-ID attribute è possibile specificare quale attributo l'utente deve utilizzare come ID di accesso in Checkmk.
L'utente utilizzerà successivamente questo login al momento dell'accesso.
Di norma, in Active Directory sarà l'attributo sAMAccountName, che viene utilizzato come standard in Checkmk.
In OpenLDAP è spesso l'attributo uid.
Con le opzioni Lower case User-IDs puoi convertire gli ID sincronizzati in lettere minuscole. Questo può essere utile, poiché, come già detto, Active Directory/LDAP non fa distinzione tra maiuscole e minuscole, mentre Checkmk sì. Ciò può creare confusione, che questa opzione può risolvere.
L'opzione Umlauts in User-IDs (deprecated) è stata fornita solo per motivi di compatibilità e non dovrebbe più essere utilizzata/modificata.
Infine, l'opzione Create users only on login ti permette di creare nuovi utenti solo dopo che hanno effettuato il login su Checkmk, invece che durante la sincronizzazione con LDAP.

L'opzione "Filter group" dovrebbe essere utilizzata solo se il server LDAP non è un Active Directory e l'attributo dinamico "memberof" non è disponibile nei dati utente.
In questi casi, il filtraggio degli utenti avviene direttamente in Checkmk.
Durante questo processo è possibile che vengano interrogati molti utenti che verranno successivamente scartati.
Un scenario del genere può essere in gran parte evitato dal modulo LDAP in Checkmk.
Se tuttavia dovessi dipendere da questa opzione, devi inserire qui il percorso completo del gruppo da filtrare:

2.3. Definizione dei gruppi
Se desideri filtrare gli utenti per gruppo, definisci il percorso del gruppo in modo che sia possibile eseguire una corrispondenza. Questo può essere fatto allo stesso modo degli utenti: quando un gruppo è specificato direttamente, in "Search scope" è possibile utilizzare l'opzione "Search only the entry at the base DN"; altrimenti la ricerca verrà eseguita direttamente nell'OU oppure verranno incluse anche le sue unità subordinate.
Anche in questo caso, con l’aiuto dell’opzione Search filter è possibile specificare come deve essere definito il nome del gruppo in Checkmk.
Puoi inoltre specificare il nome dell’attributo (Member attribute) in cui sono memorizzati i membri del gruppo.
Checkmk utilizza di default member.
In OpenLDAP questo può essere anche uniqueMember.
Modifica l’opzione come preferisci.

2.4. Verifica della configurazione
Il primo Setup è ora completo e, a scopo di verifica, è possibile salvare e testare il Setup tramite il pulsante "Save & test".

Non è necessario specificare gruppi per ottenere una configurazione funzionante. Tuttavia, se nell'OU sono presenti solo utenti per Checkmk, è opportuno limitare la selezione tramite uno o più gruppi.
2.5. L'intervallo di sincronizzazione
Infine, puoi anche definire la frequenza con cui gli utenti devono essere sincronizzati automaticamente. In un ambiente in cui le modifiche avvengono raramente, l'impostazione predefinita potrebbe essere troppo rigida. L'intervallo di tempo non dovrebbe però essere troppo lungo, in modo che eventuali modifiche possano essere riportate tempestivamente in Checkmk.

Una sincronizzazione può essere avviata manualmente in qualsiasi momento in Setup > Users > Users > Synchronize users. Inoltre, un utente verrà sincronizzato, se necessario, quando tenta di effettuare l'accesso e non è ancora stato sincronizzato.
3. Assegnazione automatica degli attributi
3.1. Gruppi di contatto
Non serve a molto poter creare automaticamente tutti gli utenti, se poi è necessario assegnarli manualmente ai gruppi di contatto. Checkmk offre la possibilità di utilizzare i gruppi del server LDAP per consentire l’assegnazione ai gruppi di contatto. Per farlo, attiva l’opzione Attribute sync plugins > Contactgroup Membership:

Affinché l'assegnazione vada a buon fine, il nome del gruppo (cn) sul server LDAP deve essere identico a quello in Checkmk, ovvero il gruppo oracle_admins verrà assegnato a un utente solo se è presente anche nel gruppo oracle_admins in LDAP.
Se invece si trova nei gruppi oracle-admins o ORACLE_admins, l'assegnazione non funzionerà.
Fai quindi attenzione a usare la sintassi corretta e a rispettare le maiuscole e le minuscole nel caso in cui dovessero sorgere problemi in questa situazione.
Gruppi nidificati
Checkmk offre anche — attualmente solo per Active Directory — la possibilità di utilizzare gruppi ereditati.
Attiva questa opzione se, ad esempio, il tuo utente si trova nel gruppo oracle_admins e questo gruppo è a sua volta membro di cmk-user.
Gruppi da altre connessioni
Se in Checkmk sono state create più connessioni LDAP, è possibile utilizzare anche gruppi provenienti da altre fonti per abilitare un'assegnazione. Ciò può essere utile se è stata configurata una connessione generale e le altre sono filtrate solo per gruppi specifici.
3.2. Ruoli
Anche i ruoli possono essere assegnati automaticamente in modo simile e anche qui si utilizza la funzione Gruppi nidificati. Per ogni ruolo è possibile definire uno o più gruppi. Seleziona il ruolo per il quale deve essere creata una connessione e inserisci il percorso completo del gruppo. Di default verrà eseguita una ricerca nei gruppi trovati nel filtro gruppi. È tuttavia possibile effettuare una ricerca in altre connessioni per utilizzare i gruppi che vi si trovano. Seleziona dall'elenco le connessioni da cercare.

Con le impostazioni nell'immagine sopra, tutti gli utenti nel gruppo indicato saranno assegnati al ruolo Administrator, purché siano sincronizzati anche dal filtro utenti. Come si vede nello screenshot, puoi selezionare anche i ruoli che hai configurato tu e effettuare la connessione con i gruppi LDAP.
3.3. Altri attributi
Per la sincronizzazione di altre informazioni sull'utente, di norma è sufficiente attivare il plug-in corrispondente in Attribute Sync Plugins, e eventualmente inserire l'attributo che fornisce l'informazione. Di seguito trovi una tabella dei plug-in e degli attributi utilizzati (se non impostati manualmente) con una breve descrizione. Alcuni attributi si trovano anche nel menu Utente di un utente.
| Plug-in | Attributo | Sintassi | Valori possibili | Descrizione |
|---|---|---|---|---|
Alias |
|
Stringa |
Di solito il nome e il cognome dell'utente. |
|
Authentication Expiration |
|
Intervallo |
Quando un utente verrà disconnesso o bloccato. |
|
Disable notifications |
|
Booleano |
|
|
Email address |
|
Stringa |
L'indirizzo e-mail dell'utente. |
|
Mega menu icons |
|
String |
|
Visualizza simboli verdi per tema ( |
Navigation bar icons |
|
String |
|
Mostra solo i simboli ( |
Pager |
|
String |
Un numero di telefono/cercapersone come contatto. |
|
Show more / Show less |
|
String |
|
Visualizza meno ( |
Sidebar position |
|
String |
|
Visualizza la barra laterale a destra ( |
Start URL to display in main frame |
|
String |
Esempi: |
URL della pagina iniziale. |
Temperature unit |
|
Stringa |
|
Unità di misura della temperatura in gradi Celsius o Fahrenheit da visualizzare nei grafici e nei Perf-O-Meter. |
User interface theme |
|
Stringa |
|
Il tema dell'interfaccia per gli utenti: Scuro ( |
Visibility of hosts/services |
|
Booleano |
|
Visualizza tutti gli host e i servizi ( |
4. LDAP in ambienti distribuiti
Quando configuri un monitoraggio distribuito con impostazione centrale, puoi specificare se e quali connessioni LDAP devono essere sincronizzate dall’istanza remota. Se non diversamente specificato, l’istanza remota sincronizzerà automaticamente tutti gli utenti della connessione configurata. In questo modo le modifiche verranno automaticamente riportate su ogni istanza entro il lasso di tempo definito e non dovranno prima essere copiate dall’istanza centrale a quelle remote. La sincronizzazione può anche essere limitata a connessioni specifiche o disabilitata completamente. Nel secondo caso gli utenti sull’istanza centrale vengono recuperati dalle connessioni LDAP e copiati sulle istanze remote con un’operazione che attiva le modifiche.
Puoi configurare le impostazioni in Setup > General > Distributed monitoring nella sezione "Properties" della connessione. Ecco un esempio in cui è selezionata la connessione configurata sopra:

5. Proteggere LDAP con SSL
Per proteggere la connessione LDAP con SSL, basta selezionare la checkbox "Use SSL" nei dati di connessione e corrispondere l'TCP port (di solito 636 per SSL in LDAP).

Se i server LDAP utilizzano un certificato firmato da un'autorità di certificazione affidabile, tutto ciò che serve per stabilire una connessione crittografata è già pronto.
Se si deve utilizzare un certificato self-signed, la connessione può essere stabilita solo dopo che il certificato è stato importato nell'archivio certificati. Solo allora verrà classificato come affidabile e la connessione verrà stabilita.
Per farlo, basta andare su Setup > General > Global settings > Site management > Trusted certificate authorities for SSL. Clicca su "Add new CA certificate or chain" e incolla il contenuto del tuo file CRT o PEM oppure scegli "Upload CRT/PEM File" e fai lo stesso.

6. Diagnosi degli errori
La diagnosi degli errori è integrata direttamente nelle impostazioni di configurazione.
Anche dopo Setup, puoi check qui per individuare la possibile causa di un errore.
I messaggi di errore verranno inoltre registrati nel file web.log.
Anche questi messaggi possono indicare la causa di un errore:
2020-09-19 16:03:17,155 [40] [cmk.web 31797] /ldaptest/check_mk/wato.py Internal error: Traceback (most recent call last):
File "/omd/sites/ldaptest/share/check_mk/web/htdocs/wato.py", line 6563, in mode_edit_ldap_connection
state, msg = test_func(connection, address)
File "/omd/sites/ldaptest/share/check_mk/web/htdocs/wato.py", line 6506, in test_group_count
connection.connect(enforce_new = True, enforce_server = address)
File "/omd/sites/ldaptest/share/check_mk/web/plugins/userdb/ldap.py", line 274, in connect
('\n'.join(errors)))
MKLDAPException: LDAP connection failed:
ldap://myldap.mycompany.org: Can't contact LDAP server7. File e directory
| Percorso del file | Funzione |
|---|---|
|
Tutte le connessioni LDAP configurate nella Setup saranno conservate in questo file. |
|
Qui verranno definiti tutti gli utenti. |
|
Il file di log in cui vengono registrati gli errori di connessione — è quindi una delle prime fonti di informazioni quando si verificano dei problemi. |
