Ep. 52: Configurazione dell'autenticazione SAML in Checkmk
[0:00:00] | Benvenuti nel canale Checkmk. Oggi parlerò dell'autenticazione SAML in Checkmk. |
[0:00:15] | A partire dalla versione 2.2, in tutte le edizioni commerciali l'autenticazione SAML è stata integrata nell'interfaccia utente di Checkmk. Ora nel menu di configurazione è possibile configurare connessioni SAML multiple con gli IDP preferiti, la creazione automatica dell'utente e la sincronizzazione degli attributi dell'utente al momento del login. |
[0:00:35] | Per scopi amministrativi e di debug è possibile dare un'occhiata al sito "web.log". È anche possibile aumentare il livello di blocco per risolvere eventuali problemi di autenticazione. Per informazioni più tecniche, come la firma delle richieste e delle risposte e gli algoritmi supportati, potete consultare la nostra documentazione tecnica. |
[0:01:00] | Se siete utenti di Checkmk Raw potete utilizzare l'autenticazione SAML a livello di Apache tramite il modulo "mod_auth_mellon". Anche questo è descritto nella nostra documentazione. Quindi, senza ulteriori indugi, iniziamo. |
[0:01:14] | Per questa demo, sto utilizzando Checkmk Enterprise Edition 2.20p11 e l'IDP con cui ci integreremo oggi sarà Azure AD. Come ogni integrazione, ci sono alcuni prerequisiti, quindi prima di tutto diamo un'occhiata a questi prerequisiti. |
[0:01:30] | Per questo andrò alla documentazione ufficiale, dove abbiamo già definito i prerequisiti che devono essere soddisfatti per il funzionamento di SAML. Il primo prerequisito è che l'interfaccia web di Checkmk deve essere protetta con HTTPS, cosa che abbiamo già fatto. Se si guarda all'URL, l'URL dell'istanza di Checkmk è già protetto con HTTPS. |
[0:01:54] | Il secondo prerequisito è che dobbiamo assicurarci che gli endpoint SAML di Checkmk per le richieste e le risposte siano stati registrati con l'IDP. Vedremo come questo viene configurato dal lato dell'IDP. Il terzo aspetto riguarda i messaggi diretti dall'IDP a Checkmk. Cioè, le risposte alle richieste di autenticazione e alle dichiarazioni di attributo devono essere firmate con uno degli algoritmi supportati. Checkmk stesso utilizza SHA56 per firmare le sue richieste. |
[0:02:31] | Ora possiamo procedere con la configurazione dell'IDP. A tal fine, accederò al mio Azure AD e farò clic direttamente su "Applicazioni aziendali". Se l'applicazione Enterprise è stata aperta più volte, verrà visualizzata in quell'area non appena si accede ai servizi Azure, altrimenti è possibile cercarla semplicemente. Quindi, se faccio clic su Applicazioni aziendali, potete già vedere che ho un'applicazione disponibile. |
[0:03:04] | Creare un'applicazione Enterprise è piuttosto semplice: bisogna fare clic su "Nuova applicazione", compilare il nome, andare su "Single sign-on" e quindi impostare SAML. Le modalità sono indicate anche nella nostra documentazione. Posso anche condividere alcune schermate della documentazione in cui creiamo un'applicazione. Compiliamo un nome, poi andiamo su "Single sign-on" e iniziamo a compilare le informazioni necessarie per la configurazione SAML. |
[0:03:37] | Per risparmiare tempo, ho già creato un'applicazione. Quindi facciamo semplicemente clic sull'app. Vedremo che ha già alcuni dettagli come il nome, l'ID applicazione e l'ID oggetto. E sul lato sinistro c'è la voce "Single sign-on". Facendo clic su di essa, si vedrà che la configurazione è già stata compilata. |
[0:04:00] | Questa configurazione è divisa in diverse sezioni, la prima sezione è una configurazione SAML di base, dove i primi due campi sono quelli obbligatori, ovvero l'identificatore "Entity ID" e il "Reply URL". Ha un URL che viene incollato nel suo valore. |
[0:04:21] | Se si osserva attentamente come è stato costruito l'URL. Questo è fondamentalmente l'URL di Checkmk, dopo il quale si inserisce un semplice slash e si inserisce "saml_metadata.py". |
[0:04:36] | Nel caso dell'URL di risposta, l'URL di Checkmk rimane lo stesso e si inserisce semplicemente "saml_acs.py?acs". Dopo aver fornito questi valori, la configurazione di SAML è praticamente finita. |
[0:04:55] | Il resto sono le altre cose, come gli attributi e le rivendicazioni, e si può vedere che alcune rivendicazioni sono disponibili per impostazione predefinita. Il claim di gruppo è qualcosa che ho aggiunto io. È anche possibile dare un'occhiata ai nomi delle rivendicazioni. Questi URL saranno utilizzati sul sito di Checkmk per la mappatura dei diversi attributi. Quindi torneremo a questa pagina. |
[0:05:19] | Torniamo alla pagina precedente e guardiamo l'altra sezione, quella dei certificati SAML. Qui si può già vedere che lo stato è impostato su "Attivo", c'è un "Thumbprint", c'è un "App Federation metadata URL" che verrà utilizzato nella configurazione SAML di Checkmk. |
[0:05:44] | È possibile utilizzare questo URL oppure scaricare l'XML e caricarlo se non si dispone di connettività a Internet, ovvero se l'istanza di Checkmk non è in grado di parlare con Azure AD direttamente via Internet. Quindi è anche possibile scaricare e caricare questo XML. |
[0:06:02] | Quindi questo è tutto. Se facciamo clic sul pulsante di modifica in corrispondenza dei certificati SAML, possiamo notare che l'algoritmo di firma per la risposta e l'asserzione SAML è già SHA256, il che soddisfa già i nostri requisiti. Ora possiamo procedere con la configurazione del fornitore di servizi, che in questo caso è Checkmk. |
[0:06:28] | Per questo è necessario tornare all'interfaccia web di Checkmk. Accediamo rapidamente qui. Una volta effettuato l'accesso, si può andare direttamente al menu di configurazione e cercare la parola 'SAML'. |
[0:06:42] | Questa è la nostra pagina di connessione all'autenticazione SAML, dove è possibile visualizzare tutte le connessioni o semplicemente, se non ce ne sono, fare clic su AGGIUNGI connessione. Vedrete una pagina di configurazione divisa in diverse sezioni, nelle proprietà generali dovete definire l'ID della connessione, che deve essere unico, e poi potete scegliere il nome che preferite. |
[0:07:12] | Poiché sto usando Azure come IDP, ho scelto Azure come nome. E poi possiamo passare alla sezione successiva. La seconda verrà generata automaticamente, quindi possiamo saltarla e passare alla connessione. Qui si possono fornire i metadati del provider di identità in tre modi diversi. Si può fornire l'URL, si può scaricare il file XML dal portale Azure e caricarlo, oppure si può semplicemente incollare il contenuto del file XML. |
[0:07:44] | Oggi useremo l'URL e per questo devo tornare al portale Azure dove ho usato la configurazione SAML. Scorrete un po' più in basso, dove potete vedere, sotto la voce Certificati SAML, l'URL "App Federation Metadata". Lo copierò semplicemente, tornerò all'interfaccia web di Checkmk e incollerò queste informazioni. |
[0:08:09] | Ora ho copiato i metadati del fornitore di identità. La prossima impostazione è l'URL del server Checkmk. Questo può essere preso dal browser stesso, dove è già stato creato. Basta incollarlo qui. La seconda impostazione successiva è che non ho fornito un timeout di connessione. La terrò come impostazione predefinita, ma a seconda della vostra configurazione, se avete dei timeout durante la 'lettura' o la 'connessione', potete regolare questi timeout di conseguenza. |
[0:08:40] | Alla voce "Sicurezza", si ha la possibilità di fornire il certificato per firmare le richieste. Qui si hanno due possibilità: utilizzare un certificato di Checkmk o caricare un certificato specifico della propria azienda. Per questo è necessario caricare una "Chiave" e un "Certificato". Se si utilizza un certificato pubblico, deve essere un singolo certificato e non una catena; è definito anche nel menu 'Aiuto'. |
[0:09:09] | Se fate clic sul menu 'Aiuto', vedrete il messaggio Qui abbiamo bisogno di un certificato pubblico, che dovrebbe essere un certificato singolo e non una catena di certificati. Disattiviamo la guida in linea e utilizziamo il certificato Checkmk. |
[0:09:25] | L'ultima e più importante sezione di configurazione è quella degli utenti, che riguarda la sincronizzazione degli attributi. Qui si deve definire la mappatura, il lato sinistro è l'attributo 'ID utente' richiesto da Checkmk e qui si deve fornire la mappatura dal portale Azure AD. Torniamo quindi al portale Azure AD e guardiamo direttamente gli attributi e le richieste. Se fate clic sul pulsante di modifica, vedrete i nomi delle richieste sotto forma di URL, forse con i vostri provider IDP sono con i nomi. Si possono anche creare dei nomi qui, ma io cerco di attenermi alle impostazioni predefinite, dove posso vedere le diverse possibilità dei nomi delle richieste. |
[0:10:16] | Quindi, per l'ID utente, userò l'attributo name. Incolliamolo qui, la seconda opzione che si può scegliere è l'attributo nome completo, per il quale userò il nome proprio. E per l'attributo indirizzo e-mail è disponibile anche un nome di richiesta, copiamolo e incolliamolo qui. |
[0:10:53] | Infine, ma non meno importante, i gruppi di contatto e i ruoli. Per i gruppi di contatto abbiamo quattro opzioni diverse: quella predefinita è non sincronizzare, la seconda è il valore di mappatura per i gruppi specifici, la terza è il valore dell'attributo dell'utente e poi c'è la possibilità di usare il CN dal vostro LDAP distinguendo la stringa del nome. Utilizzeremo il valore di mappatura su un gruppo specifico; ho già definito alcuni gruppi all'interno di Azure. |
[0:11:25] | Quindi utilizzerò questi gruppi e li mapperò ai gruppi di contatto che ho definito all'interno di Checkmk. Oltre al gruppo di contatti predefinito, che è tutto, ho definito anche due gruppi di contatti denominati 'Linux Admins' e 'Windows Admins'. Ora sincronizzeremo o mapperemo ciò che vediamo per un particolare utente all'interno di Azure. |
[0:11:54] | Anche in questo caso è necessario incollare il nome della richiesta di gruppo. Lo vedo già qui nella pagina dei nomi delle rivendicazioni. Copiamolo, torniamo indietro e incolliamo questo gruppo qui, e ora abbiamo la possibilità di abbinare l'attributo. Questo attributo si trova sotto la voce "Ricerca gruppi". |
[0:12:18] | Ho due tipi di gruppi che ho creato nel mio account Azure: Team Linux e Team Windows. Se guardate il gruppo Linux, ci sono alcuni membri. Linuxuser1 è uno dei membri che ha un ID e-mail ed è un membro. Allo stesso modo, l'altro gruppo Windows ha un utente, Windowuser1, che sarà l'utente che si collegherà a Checkmk e riceverà tutti gli attributi sincronizzati da Azure AD a Checkmk. |
[0:12:59] | Torniamo ora alla pagina del gruppo dove possiamo copiare questi ID oggetto univoci per ogni attributo. Quindi copiamo questo ID oggetto per il Team Linux e lo incolliamo qui e allo stesso tempo lo colleghiamo agli Amministratori Linux. Il secondo ID oggetto è per il Team Windows, copieremo anche questo e lo incolleremo qui. |
[0:13:24] | E lo colleghiamo agli amministratori di Windows. Anche per i ruoli vale lo stesso procedimento, che non farò ora, ma anche in questo caso si tratta di incollare l'attributo, si può scegliere il ruolo specifico e poi assegnare i diversi attributi mappati qui. |
[0:13:47] | Per il momento non utilizzerò alcun ruolo, quindi mi limiterò a compilare tutti i prerequisiti e a salvare questo modulo. Non appena lo salvo e mi disconnetto da Checkmk, noterete una differenza nella GUI web. |
[0:14:03] | Qui vedete un altro pulsante che dice "Accedi con Azure". Quindi avete ancora la possibilità di utilizzare SAML e l'integrazione LDAP. Cioè le vostre credenziali LDAP e allo stesso tempo i vostri utenti locali tramite "htpasswd". Aprirò una finestra privata per mostrarvi il login degli utenti tramite SAML. |
[0:14:29] | Apriamo quindi una finestra privata e possiamo subito aprire l'istanza demo. Ora facciamo clic su login con Azure. Verrà richiesto un ID utente, quindi devo cercare l'ID utente nella schermata. Andiamo a: Home > utenti > Linuxuser1. È uno degli utenti. Copio il nome principale dell'utente. |
[0:15:06] | Torniamo alla schermata e digitiamo il nome utente. Incolliamo il nome utente e ora digitiamo la password. Accediamo e siamo autenticati con l'interfaccia utente di Checkmk. L'utente è stato creato al momento dell'accesso e gli attributi sono stati sincronizzati. |
[0:15:30] | Per controllare questo aspetto è possibile uscire e accedere semplicemente tramite "cmkadmin", andare alla configurazione e guardare gli utenti. Se lo aprite ora, potete già vedere che questo utente è stato creato e che c'è stata una modifica. Nel "menu Modifica", si possono vedere gli attributi che abbiamo specificato e che sono stati sincronizzati. Ha ottenuto un ruolo predefinito come 'Utente normale di monitoraggio' e questo utente Linux è stato automaticamente collegato al gruppo di contatti 'Amministratori Linux'. Proviamo ora un esempio diverso con l'utente Windows, chiudendo questa finestra privata e aprendone un'altra. Apriamo l'URL. |
[0:16:22] | E ora proviamo con un altro utente, non Linuxuser1 ma forse l'utente Windows, per il quale possiamo anche copiare il nome principale dell'utente e incollarlo qui, premere 'Invio' e digitare la password. Non voglio usare alcun autenticatore in questo momento, quindi salterò questa parte, e ora mi permetterà di accedere a Checkmk, e allo stesso tempo registrerà anche una modifica. |
[0:16:59] | Quindi l'utente è stato creato e gli attributi sono stati sincronizzati allo stesso modo. Ora proveremo un altro modo di usare un terzo utente e vorrei mostrarvi alcuni problemi comuni che potreste incontrare quando impostate l'autenticazione SAML. Abbiamo un altro utente di nome Foobar, aggiunto al gruppo Linux, e vorrei mostrare alcuni errori comuni che si possono incontrare durante l'impostazione dell'autenticazione SAML. |
[0:17:31] | Questo è un utente come tutti gli altri che vi ho mostrato prima. Copiamo anche il nome utente e apriamo una finestra privata. Dopodiché inseriamo l'URL di Checkmk come prima e proviamo ad autenticarci tramite questo utente. Ora facciamo clic su login utente e inseriamo questo nome utente e se ora inserisco la password, verremo reindirizzati a Checkmk e vedremo "Autenticazione fallita, contattare l'amministratore". Ho digitato la password giusta, ma ho comunque ricevuto questo messaggio. |
[0:18:22] | Per questo posso andare direttamente sul mio sito Checkmk e dare un'occhiata a var/log. Apriamo semplicemente il file web.log. Se aprite questo file di blocco, vedrete la richiesta e la risposta completa. Accede al connettore SAML, esegue una richiesta di autenticazione con il fornitore di identità e lo stato del relay, esegue un codice di risposta 'Get' e infine, in fondo, fornisce anche il messaggio di errore completo. |
[0:18:59] | Questo è il messaggio di errore che riceviamo. Se si osserva attentamente l'eccezione, c'è un "Errore chiave", che dice che l'indirizzo e-mail fornito da questo utente è vuoto e per questo l'autenticazione fallisce. |
[0:19:16] | Quindi questo nome di rivendicazione, l'indirizzo e-mail che abbiamo definito nella sincronizzazione dell'attributo e-mail, non ha alcun valore da Azure. Per risolvere questo problema, torniamo ad Azure. E apriamo questo utente. Se modifichiamo le proprietà di questo utente, possiamo vedere che il nome principale, il cognome, il nome completo sono tutti corretti sotto le informazioni di contatto, mentre il valore dell'e-mail è vuoto. Incolliamo quindi lo stesso nome principale e salviamo il tutto. |
[0:19:56] | Ora eseguiamo l'autenticazione allo stesso modo, clicchiamo di nuovo su Azure, Chiedi più tardi e vedremo che l'autenticazione è avvenuta e l'utente è stato creato con successo. Questi sono alcuni problemi comuni per cui si può verificare l'autenticazione fallita sull'interfaccia web, quindi assicuratevi che tutti gli utenti che state aggiungendo abbiano tutti gli attributi corretti. Ma se non c'è e si vuole vedere quale manca, l'abilitazione, alzando il livello di log a debug, può mostrare queste informazioni. |
[0:20:41] | Ma non dimenticate di ripristinare i valori predefiniti dopo aver terminato la risoluzione dei problemi, perché questo può riempire lo spazio su disco molto rapidamente. Attivate i siti selezionati e ora abbiamo tutti e tre gli utenti necessari. Diamo rapidamente un'occhiata a questi utenti, che provengono tutti dal connettore SAML che abbiamo definito. Se si osservano gli attributi, hanno il nome utente standard, il nome completo e l'indirizzo e-mail, la password e i gruppi di contatto vengono sincronizzati. |
[0:21:17] | Per oggi è tutto. Grazie per aver guardato, non dimenticate di mettere "Mi piace" e di iscrivervi al canale. A presto. |
Vuoi saperne di più su Checkmk? Partecipa al nostro webinar "Introduzione a Checkmk".