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
In questo articolo imparerai come configurare un login tramite Secure Assertion Markup Language (SAML) in Checkmk.
Il SAML è un metodo standardizzato per comunicare ad applicazioni e servizi esterni che un utente è effettivamente chi dice di essere. Il SAML rende possibile la single sign-on (autenticazione unica) perché può essere utilizzato per autenticare un utente una sola volta e poi comunicare tale autenticazione a più applicazioni. Grazie alla connessione e alla comunicazione tra il cosiddetto "Service Provider" (SP) e il cosiddetto "Identity Provider" (IdP), i dipendenti possono quindi accedere a varie applicazioni web con un unico login. Nell'architettura SAML, il Service Provider rende disponibile l'applicazione e l'Identity Provider si occupa della gestione delle identità digitali degli utenti.
SAML è supportato nelle edizioni commerciali di Checkmk e può essere configurato direttamente nell'interfaccia web di Checkmk. Checkmk assume il ruolo di Service Provider. Ad esempio, come descritto nel capitolo sulla configurazione, Entra ID è un esempio di Identity Provider.
Microsoft Entra ID (in breve: Entra ID) è il nuovo nome di Azure Active Directory (Azure AD) dal 2023. Tuttavia, le schermate e i contenuti dei file di configurazione presenti in questo articolo utilizzano ancora il vecchio nome Azure AD. |
Fino alla versione 2.2.0 di Checkmk, in alternativa, SAML era supportato anche dal modulo Apache
mod_auth_mellon, fornito come parte del software Checkmk.
A partire dalla versione 2.3.0, mod_auth_mellon non è più incluso nel software Checkmk.
Se desideri utilizzare SAML come utente della Comunità Checkmk
, devi quindi effettuare l'installazione di mod_auth_mellon autonomamente.
La configurazione basata su questo è descritta nel capitolo dedicato alla Comunità Checkmk.
Tuttavia, non è più supportata da noi.
Il tema completo della crittografia di trasporto (TLS/SSL) è incluso negli esempi solo in una semplice implementazione dimostrativa. Negli ambienti di produzione con una tua Autorità di Certificazione (CA) e una corretta gestione dei certificati, ci saranno alcune differenze che dipenderanno dalla tua infrastruttura. |
2. Utilizzo di SAML in Checkmk
Una volta completati tutti i passaggi del processo di configurazione, l'utente potrà utilizzare il login SAML in Checkmk. Il testo del pulsante può essere personalizzato, come descritto di seguito.

Qualsiasi utente autorizzato da SAML verrà creato automaticamente in Checkmk al primo accesso, a condizione che non esista già un utente con lo stesso ID. Se esiste già un utente con lo stesso ID, la creazione dell'utente corrente verrà rifiutata.
I dati dell'utente verranno sincronizzati ogni volta che l'utente accede a Checkmk.
Per il corretto funzionamento di SAML devono essere soddisfatti diversi prerequisiti:
L'interfaccia web deve essere protetta con HTTPS. Per motivi di sicurezza, gli indirizzi HTTP non sono accettati.
Gli endpoint SAML di Checkmk per ID/metadati e risposte (Assertion Consumer Service) devono essere stati registrati presso l’IdP. Di seguito ti mostreremo come farlo.
I messaggi inviati dall'IdP a Checkmk — risposte alle richieste di autenticazione (obbligatorie solo per l'assertion) e dichiarazioni di attributi — devono essere firmati con uno degli algoritmi supportati.
2.1. Algoritmi supportati
Checkmk accetta i seguenti algoritmi per la comunicazione con l'IdP:
RSA-SHA256
RSA-SHA384
RSA-SHA512
ECDSA-SHA256
ECDSA-SHA384
ECDSA-SHA512
Checkmk utilizza RSA-SHA256 per firmare le proprie richieste.
Se l'IdP non utilizza nessuno degli algoritmi sopra indicati per la sua risposta, questa verrà rifiutata da Checkmk.
3. Configurazione di SAML
Per poter utilizzare SAML nelle edizioni commerciali, è necessario prima configurare l'IdP. Nel nostro esempio si tratta di Entra ID (chiamato Azure Active Directory fino al 2023). Una volta fatto questo, all'SP, ovvero Checkmk, vengono fornite le informazioni necessarie.
3.1. Accesso a Entra ID
Registrazione del servizio SAML di Checkmk in Entra ID
Successivamente, registra il servizio SAML di Checkmk su Entra ID. Per farlo, vai su Enterprise applications > Create your own application.

Assegna un nome a tua scelta, preferibilmente significativo, ad esempio checkmk-saml.
Ti consigliamo di non chiamare l'applicazione semplicemente checkmk per evitare confusione con l'agente Checkmk.
Seleziona l'opzione Integrate any other application you don’t find in the gallery (Non-gallery) e poi clicca sul pulsante Create.
Nella pagina panoramica di Entra ID avrai creato la seguente funzione: Single sign-on > SAML > Basic SAML Configuration:

A questo punto, Entra ID richiederà altre due informazioni:
l'Identifier (Entity ID) nel formato
https://myserver.com/mysite/check_mk/saml_metadata.pyel'Reply URL (Assertion Consumer Service URL) nel formato
https://myserver.com/mysite/check_mk/saml_acs.py?acs.
Lascia tutte le altre opzioni invariate al loro valore predefinito o vuote. In particolare, l'Relay Statee in Basic SAML Configuration deve rimanere invariato, altrimenti SAML non funzionerà.
Ora chiama Edit > Signing Option > Sign SAML assertion per configurare un Entra ID per le risposte e le verifiche:

Recupero delle informazioni SAML da Entra ID
Successivamente, vai su Entra ID per trovare le informazioni SAML necessarie per Checkmk.
Sono disponibili nella visualizzazione Enterprise applications | All applications > Browse Microsoft Entra Gallery > checkmk-saml | SAML-based Sign-On (vedi sopra):
Nella box "SAML Certificates", trova l'App Federation Metadata URL". Ne avrai bisogno nella sezione successiva per configurare SAML in Checkmk (Identity provider metadata).
La box "Attributes & Claims" ti porta a una visualizzazione degli attributi utente per Checkmk, ad esempio indirizzo e-mail, nome e cognome:

3.2. Attivazione di SAML nell'interfaccia web di Checkmk
Con le informazioni ottenute in precedenza, configura la connessione SAML sul lato Checkmk.
Se necessario, aggiungi il certificato TLS emesso dal tuo IdP ai certificati attendibili in Checkmk inserendolo in Setup > Global settings > Trusted certificate authorities for SSL.
Ora apri Setup > Users > SAML authentication. Utilizza Add connection per iniziare a configurare una nuova connessione:

Assegna un nome a "Connection ID" e un nome a "Name" per la nuova connessione. Il nome "Name" verrà utilizzato in seguito per denominare il pulsante di login a Checkmk.
Successivamente, nella box Security, specifica se desideri proteggere le connessioni di accesso con Checkmk o con i tuoi certificati:

Se utilizzi i tuoi certificati, devi specificare l'Private key e l'Certificate.
I certificati personalizzati sono memorizzati nella directory dell'istanza sotto ~/etc/ssl/saml2/custom/.
Successivamente, nella box Connection, come Identity provider metadata inserisci l'URL (ad es. App Federation Metadata URL) che hai selezionato come descritto nella sezione precedente:

In alternativa, puoi effettuare lo scaricamento del file XML dei metadati direttamente da Entra ID e caricarlo nella finestra di dialogo sopra indicata utilizzando l'opzione Upload XML file nell'opzione Identity provider metadata.
Questo è utile, ad esempio, se il tuo server Checkmk non ha accesso all'internet.
Per l'Checkmk server URL obbligatorio, inserisci l'indirizzo che tu — non Entra ID — utilizzi normalmente per accedere a Checkmk, ad esempio https://myserver.com.
Ora dovrai inserire i dati dell'utente nella box Users:

Devi ottenere queste informazioni come descritto nella sezione precedente.
È importante notare che l'User ID attribute deve essere univoco, ad esempio l'ID utente.
Checkmk richiede qui l'claim namee completo da Entra ID, ovvero l'indirizzo URL che inizia con http, per ogni voce,
ad esempio, nell'esempio sopra, l'ID utente è http://schemas.xmlsoap.org/ws/2005/05/identity/claims/userID.
Per definire le responsabilità di tutti gli utenti che si autenticano con SAML in Checkmk, ogni utente può essere assegnato a uno o più gruppi di contatto. Hai diverse opzioni per definire la mappatura nell'Contact groups.
Puoi utilizzare l'Roles per assegnare agli utenti diversi ruoli, in modo da definire utenti normali, amministratori, ecc.
4. SAML in Comunità Checkmk
La configurazione descritta in questo capitolo è rilevante solo per gli utenti della Comunità Checkmk che non possono utilizzare la connessione SAML integrata nelle edizioni commerciali di Checkmk.
Il prerequisito è che tu abbia installato il modulo Apache |
Le sezioni seguenti descrivono solo la configurazione di mod_auth_mellon per eventuali IdP già in esecuzione, utilizzando come esempio Active Directory Federation Services (ADFS).
La connessione in Checkmk stesso si limita all'ultimo passaggio delle istruzioni ADFS.
Sul server Checkmk, mod_auth_mellon funge da fornitore di servizi per le autenticazioni.
4.1. Accesso con Active Directory Federation Services
Prerequisiti
Accedere a Checkmk utilizzando Active Directory è fondamentalmente relativamente semplice: Active Directory Federation Services (ADFS) funge da Identity Provider (IdP), Checkmk fornisce l'autenticazione SAML.
I prerequisiti per questo tutorial sono quindi:
Integrazione LDAP-AD funzionante
ADFS funzionante come IdP
Server Checkmk con SSL
Un sistema operativo supportato.
Il Setup si svolge in tre passaggi:
Configurazione di Apache (risultato: file XML con metadati).
Configurazione di ADFS: impostazione di un rapporto di fiducia con i metadati Mellon.
Abilitazione del login direttamente in Checkmk.
Configurazione di Apache
Ovviamente si tratta di configurare il server Apache dell’istanza, quindi accedi prima lì:
Ora crea una directory per mod_auth_mellon e switcha a quella:
Ora esegui mellon_create_metadata specificando il tuo server e la tua istanza con il suffisso mellon:
Questo modulo genera tre file: certificato (.cert), chiave (.key) e metadati statici (.xml).
Il file .xml non è necessario e può essere eliminato:
Rinomina i file delle chiavi e dei certificati per semplicità:
Ora recupera i metadati richiesti direttamente dal tuo server ADFS (in questo caso myadfs) e salvali come idp-metadata.xml:
Ora ti serve il certificato pubblico per il server ADFS, che è memorizzato nel file idp-public-key.pem:
Nel caso ti stessi chiedendo cosa sia echo -n:
Viene utilizzato per terminare la seguente sessione SSL.
Come passo finale, sostituisci il file di configurazione dell'autenticazione ~/etc/apache/conf.d/auth.conf con la seguente variante, specificando ovviamente il tuo server Checkmk (qui myserver) e la tua istanza (qui mysite).
Nota nell'esempio di configurazione seguente che il percorso della directory di installazione nella riga che inizia con LoadModule può variare a seconda della distribuzione utilizzata:
Quindi riavvia Apache:
Infine, effettua lo scaricamento dei metadati Mellon creati dinamicamente come file XML, così potrai importarli subito in AD Management:
Configurazione di Active Directory
Per creare un rapporto di fiducia tra parti affidabili in ADFS, procedi come segue:
Avvia l'interfaccia ADFS:

Fai clic su "Add Relying Party Trust":

Lascia l'opzione impostata su "Claims aware" e procedi con il pulsante "Start":

Ora seleziona "Import data on the relying party from a file" e specifica il file XML che hai appena effettuato lo scaricamento:

Puoi tranquillamente ignorare l'avviso WARN relativo a "AD FS Management":

In "Specify Display Name" inserisci ora "Checkmk" come nome:

Quando assegni i permessi, a scopo di test, per l'Choose Access Control Policy puoi selezionare inizialmente il valore Permit everyone; in seguito dovrai cambiarlo in Permit specific group.

Conferma il riepilogo sotto "Ready to Add Trust":

Infine, conferma il dialogo "Finish" e mantieni il segno di spunta su "Configure claims issuance policy for this application":

Seleziona l'affidabilità della parte affidabile che hai appena creato e poi avvia l'editor con Edit Claim Issuance Policy…:

Aggiungi una nuova regola nel dialogo seguente tramite "Add Rule…":

Nel primo passaggio di "Select Rule Template" seleziona "Transform to Incoming Claim" e conferma:

Nel secondo passaggio di Configure Rule imposta i seguenti valori:
Incoming claim type:
Windows account nameOutgoing claim type:
Name IDOutgoing name ID format:
Transient Identifier

Questo passaggio completa anche la configurazione di ADFS. FS ora può ricavare l'autenticazione per Checkmk dall'autenticazione di Windows, che nel passaggio successivo istruirai ad autenticare gli utenti tramite richieste HTTP.
Configurazione di Checkmk
In Checkmk, alla voce Setup > General > Global Settings > User Interface > Authenticate users by incoming HTTP requests, in Current settings devi ora solo attivare l'opzione Activate HTTP header authentication.

4.2. Informazioni aggiuntive per altri sistemi
Entra ID con mod_auth_mellon
Quando Entra ID (chiamato Azure Active Directory fino al 2023) funge da IdP, ci sono alcune differenze nella procedura di configurazione; ad esempio, il nome utente può essere specificato direttamente senza bisogno di essere riscritto.
Prerequisiti per la seguente configurazione di esempio:
Imposta UserPrincipalName nella connessione LDAP come identificatore (maggiori informazioni nella documentazione Microsoft).
App aziendale personalizzata in Entra ID con UserPrincipalName come attributo "name" (per ulteriori informazioni, consulta la documentazione Microsoft).
Nota che nella seguente configurazione di esempio il percorso della directory di installazione nella riga che inizia con LoadModule può variare a seconda della distribuzione utilizzata:
NetIQ Access Manager per la gestione
Quando NetIQ Access Manager funge da IdP, ci sono alcune differenze nella procedura di configurazione; ad esempio, il nome utente può essere specificato direttamente senza bisogno di essere riscritto.
Nota che nell'esempio di configurazione seguente il percorso della directory di installazione nella riga che inizia con LoadModule può variare a seconda della distribuzione utilizzata:
5. Migrazione degli utenti esistenti
Una volta abilitato SAML, puoi migrare gli utenti esistenti da una connessione basata su password alla connessione SAML. Per farlo, check gli account desiderati nella gestione utenti alla voce "Setup > Users > Users". Quindi avvia la migrazione tramite "Migrate selected users".

In una fase intermedia, puoi far cancellare qualsiasi attributo.

