LDAP è un protocollo fondamentale per la gestione delle identità sin dai primi anni '90, quando è stato sviluppato come alternativa più snella al protocollo X.500 Directory Access Protocol. Ancora oggi è integrato nella maggior parte degli ambienti aziendali e continua a costituire la base dei servizi di autenticazione e di directory, anche se le organizzazioni stanno adottando soluzioni di gestione delle identità basate sul cloud.
LDAP funziona secondo un modello client-server in cui un client LDAP invia richieste a un server di directory, il quale memorizza e restituisce informazioni provenienti da una directory centralizzata. La comunicazione avviene tramite TCP/IP, in genere sulla porta 389 per le connessioni standard o sulla porta 636 per LDAPS (LDAP su SSL/TLS).
A grandi linee, uno scambio LDAP si articola in quattro fasi:
- Connettiti:Il client avvia una sessione TCP con il server LDAP.
- Rilegatura: Il cliente effettua l'autenticazione presso il server, in modo anonimo o tramite credenziali.
- Richiesta:Il client invia un'operazione, ad esempio una richiesta di ricerca o di modifica, alla directory.
- Risposta:Il server restituisce i dati richiesti o un codice di stato, e il client alla fine invia un comando di disconnessione per chiudere la sessione.
Il server organizza i propri dati in una struttura ad albero gerarchica e risponde a una serie definita di operazioni, tra cui bind, search, compare, add, modify, delete e unbind. Questo modello di accesso condiviso e in tempo reale è ciò che rende LDAP particolarmente adatto agli ambienti in cui numerose applicazioni devono interrogare la stessa fonte autorevole per i dati di identità.
La struttura della directory LDAP
Una directory LDAP memorizza le informazioni in una struttura gerarchica denominata Directory Information Tree (DIT). Ogni voce della struttura rappresenta un oggetto (ad esempio un utente, un gruppo o un dispositivo) ed è identificata da un nome univoco (Distinguished Name, DN) che ne descrive la posizione nella gerarchia.
Il DN è costituito da una serie di componenti elencati dal più specifico al più generico:
- cn(nome comune), come ad esempio il nome completo di una persona
- ou(unità organizzativa), come ad esempio un dipartimento
- dc(componente del dominio), come ad esempio parti di un nome di dominio
Ad esempio, il DN cn=John Smith,ou=Engineering,dc=example,dc=com identifica un utente di nome John Smith nell'unità organizzativa Engineering all'interno del dominio example.com.
Operazioni LDAP
LDAP definisce un numero limitato di operazioni standardizzate che coprono l'intero ciclo di vita dell'interazione di un client con una directory, dall'autenticazione alle operazioni di lettura e scrittura, fino alla chiusura della sessione.
- Legare: autentica il client presso il server di directory e stabilisce una sessione autenticata. L'operazione di bind è ciò che rende LDAP utilizzabile come meccanismo di autenticazione, poiché un bind riuscito conferma che le credenziali fornite corrispondono a una voce valida nella directory.
- Ricerca: effettua una ricerca nella directory per individuare le voci che corrispondono a criteri specifici, utilizzando una sintassi di filtro per definire quali attributi e valori devono essere restituiti. La ricerca è l'operazione LDAP più utilizzata e è alla base di casi d'uso quali la ricerca di utenti, la verifica dell'appartenenza a gruppi e la navigazione nella directory.
- Confronta: verifica se un determinato valore di attributo corrisponde al valore memorizzato in una voce, restituendo un risultato vero o falso senza rivelare il valore memorizzato stesso. La funzione "Compare" viene spesso utilizzata per operazioni di verifica semplici in cui non è necessaria una ricerca completa.
- Aggiungi: crea una nuova voce nella directory in una posizione specificata dell'albero. Le operazioni di aggiunta vengono comunemente utilizzate durante il provisioning degli utenti, quando è necessario registrare nuovi account, gruppi o dispositivi nella directory.
- Modifica: aggiorna gli attributi di una voce esistente, consentendo modifiche quali il reimpostamento della password, l'aggiornamento dell'appartenenza a un gruppo o la modifica del profilo. La funzione "Modifica" consente di aggiungere, sostituire ed eliminare singoli valori degli attributi all'interno di una voce.
- Modifica DN: rinomina una voce o la sposta in una posizione diversa all'interno dell'albero delle directory. La funzione "Modifica DN" viene utilizzata quando cambiano le strutture organizzative, ad esempio quando un utente passa da un reparto all'altro o quando un'unità organizzativa viene riorganizzata.
- Elimina: rimuove una voce dalla directory. Il comando "Delete" viene solitamente utilizzato durante il processo di deprovisioning, quando gli account o le risorse vengono disattivati ed è necessario ripulire i relativi record nella directory.
- Scollegare: chiude la sessione del client e interrompe la connessione al server. Sebbene il nome suggerisca che si tratti dell'operazione inversa rispetto al comando "bind", il comando "unbind" segnala in realtà che il client ha terminato l'attività e libera le risorse del server ad esso associate.
- Operazioni estese: è un framework che consente ai fornitori e agli organismi di standardizzazione di definire operazioni aggiuntive oltre a quelle di base. StartTLS, che trasforma una connessione LDAP standard in una connessione crittografata, è una delle operazioni estese più diffuse.
Il protocollo LDAP viene utilizzato negli ambienti aziendali per centralizzare i dati relativi alle identità e consentire un accesso coerente a tali dati da parte di diverse applicazioni e servizi. Tra i casi d'uso più comuni figurano:
- Autenticazione centralizzata: verifica delle credenziali degli utenti per numerose applicazioni a partire da un’unica directory, riducendo la proliferazione delle password e il carico amministrativo
- Gestione di utenti e gruppi: archiviazione e organizzazione dei dati relativi a dipendenti, collaboratori esterni e account di sistema, nonché dei gruppi e delle autorizzazioni ad essi associati
- Rubrica e ricerca dei contatti: consentire ai client di posta elettronica e agli strumenti di collaborazione di interrogare una rubrica aziendale per ottenere le informazioni di contatto
- Gestione dei dispositivi e delle risorse: monitoraggio delle risorse di rete quali stampanti, server e archivi condivisi
- Principi fondamentali del Single Sign-On: funge da fonte di identità di base che i sistemi SSO utilizzano per verificare gli utenti e recuperare gli attributi del profilo
L'autenticazione LDAP è il processo mediante il quale un'applicazione verifica l'identità di un utente effettuando il binding a una directory LDAP con le credenziali fornite dall'utente. Se la directory conferma che le credenziali corrispondono a una voce valida, l'utente viene autenticato e gli viene concesso l'accesso all'applicazione richiedente.
Il flusso tipico dell'autenticazione LDAP si svolge come segue:
- L'utente inserisce le credenziali (di solito un nome utente e una password) in un'applicazione.
- L'applicazione invia al server di directory una richiesta di bind LDAP contenente tali credenziali.
- Il server LDAP individua la voce dell'utente all'interno dell'albero della directory utilizzando l'identificatore fornito.
- Il server confronta la password inserita con le credenziali memorizzate relative a quella voce.
- Il server restituisce all'applicazione una risposta di successo o di errore.
- In caso di esito positivo, l'applicazione concede all'utente l'accesso alla risorsa richiesta.
Bind semplice vs. Bind SASL
LDAP supporta due meccanismi di bind principali e la scelta tra i due ha importanti implicazioni in termini di sicurezza per quanto riguarda le modalità di trasmissione e verifica delle credenziali durante l'autenticazione.
A legatura semplice invia il nome utente e la password direttamente al server, il quale trasmette le credenziali in chiaro a meno che la connessione non sia protetta da TLS (come nel caso di LDAPS o StartTLS).
A Bind SASL (Simple Authentication and Security Layer) supporta meccanismi di autenticazione più rigorosi, tra cui Kerberos, certificati client e altri metodi integrabili, ed è preferibile in ambienti in cui l'esposizione delle credenziali rappresenta un rischio.
LDAP e Active Directory vengono spesso confusi, ma non sono tecnologie concorrenti. LDAP è un protocollo aperto per l'accesso alle informazioni delle directory, mentre Active Directory è un prodotto di servizi di directory Microsoft che utilizza LDAP come uno dei metodi di accesso supportati.
In parole povere, Active Directory utilizza il protocollo LDAP, ma LDAP non è Active Directory. Anche molti servizi di directory non Microsoft, tra cui OpenLDAP, 389 Directory Server e Oracle Internet Directory, implementano il protocollo LDAP.
LDAP, SAML e OAuth sono protocolli correlati ma distinti che risolvono problemi diversi nell'ambito più ampio della gestione delle identità e degli accessi.
- LDAPgestisce l'accesso alle directory e l'autenticazione, in genere per risorse locali e applicazioni interne. Si tratta di un protocollo che consente di interrogare e modificare una directory ed è in grado di eseguire l'autenticazione tramite l'operazione di bind.
- SAML (Security Assertion Markup Language) consente l'autenticazione federata per il single sign-on basato sul web, attraverso lo scambio di asserzioni di autenticazione e autorizzazione tra un provider di identità e un provider di servizi. Viene comunemente utilizzato per consentire agli utenti di accedere alle applicazioni cloud e SaaS.
- OAuth è un protocollo di autorizzazione che consente alle applicazioni di terze parti di ottenere un accesso limitato alle risorse di un utente senza rivelare le credenziali. Regola ciò che un’applicazione può fare per conto di un utente, non l’identità dell’utente stesso.
Molti ambienti moderni si avvalgono di tutti e tre: LDAP come directory sottostante per i dati degli utenti, SAML per l’SSO federato nelle applicazioni cloud e OAuth per l’accesso delegato alle API. Per approfondire il funzionamento congiunto dei livelli di autenticazione e governance, consulta l’articolo di RSA su governance dell'identità e IAM .
Il protocollo LDAP rimane ampiamente diffuso e non viene sostituito in modo generalizzato, anche se le organizzazioni adottano provider di identità cloud e applicazioni SaaS. La maggior parte degli ambienti aziendali continua ad affidarsi alle directory LDAP esistenti come fonte autorevole per i dati degli utenti, e le moderne piattaforme IAM sono generalmente progettate per integrarsi con tali directory piuttosto che sostituirle.
La tendenza prevalente è quella verso architetture ibride in cui le directory LDAP coesistono con provider di identità cloud, piattaforme SSO e livelli di autenticazione a più fattori. Anziché limitarsi a eseguire un semplice bind e concedere l’accesso, le organizzazioni integrano sempre più spesso l’autenticazione LDAP con controlli aggiuntivi, tra cui l’autenticazione multifattoriale, l’autenticazione senza password, l’autenticazione adattiva, le decisioni di accesso basate sul rischio e la verifica continua. Questo approccio a più livelli preserva gli investimenti esistenti nelle directory, affrontando al contempo i rischi legati alle credenziali che un semplice bind LDAP non è in grado di mitigare.
RSA’s soluzioni per la gestione delle identità e degli accessi integrarsi con le directory LDAP esistenti per aggiungere funzionalità moderne di autenticazione e controllo degli accessi all'infrastruttura legacy. RSA amplia l'autenticazione basata su LDAP con l'autenticazione a più fattori (MFA), opzioni senza password e accesso basato sul rischio, consentendo alle organizzazioni di rafforzare la sicurezza delle identità senza dover sostituire i servizi di directory da cui già dipendono.
LDAP di per sé non crittografa il traffico per impostazione predefinita e le connessioni LDAP standard trasmettono le credenziali di bind in chiaro. LDAP diventa sicuro quando viene implementato con LDAPS o StartTLS per crittografare la connessione, in combinazione con meccanismi di autenticazione robusti come SASL e controlli aggiuntivi quali l’autenticazione a più fattori. Senza queste protezioni, LDAP è vulnerabile all’intercettazione delle credenziali e agli attacchi di tipo «injection».
LDAP utilizza la porta TCP 389 per le connessioni standard non crittografate e la porta TCP 636 per LDAPS, che crittografa la comunicazione tramite SSL/TLS. StartTLS è un’alternativa che avvia la connessione sulla porta 389 e la aggiorna a una sessione crittografata. I servizi di catalogo globale in Active Directory utilizzano le porte 3268 e 3269 per la loro versione crittografata.
LDAP trasmette i dati tramite una connessione TCP non crittografata sulla porta 389, il che espone le credenziali e le query di directory al rischio di intercettazione. LDAPS avvolge lo stesso protocollo LDAP in un canale crittografato SSL/TLS sulla porta 636, proteggendo la connessione da intercettazioni e manomissioni. LDAPS è generalmente necessario in ambienti in cui dati sensibili delle directory o traffico di autenticazione attraversano reti non affidabili.
Sì, LDAP continua a essere ampiamente utilizzato negli ambienti aziendali. Continua a fungere da protocollo di directory sottostante per Active Directory, OpenLDAP e altri servizi di directory, ed è ancora utilizzato per l’autenticazione, il provisioning degli utenti e le ricerche nella directory in architetture on-premise e ibride. Le piattaforme di identità cloud in genere si integrano con LDAP anziché sostituirlo.
Una query LDAP è una richiesta di ricerca inviata da un client LDAP a un server di directory per recuperare le voci che soddisfano criteri specifici. Le query utilizzano una sintassi di filtro definita, come ad esempio (&(objectClass=user)(department=Engineering)), per specificare quali attributi e valori devono essere restituiti. Le applicazioni utilizzano le query LDAP per cercare utenti, gruppi e altri oggetti della directory su larga scala.
Sì, LDAP può supportare le applicazioni cloud tramite la sincronizzazione delle directory, le offerte LDAP-as-a-service o l’integrazione con provider di identità cloud che federano l’autenticazione con le directory LDAP on-premise. Molte organizzazioni utilizzano SAML o SCIM insieme a LDAP per collegare le directory locali alle applicazioni SaaS, mantenendo LDAP come fonte autorevole di identità.