Active Directory

Active Directory rappresenta una delle funzioni più innovative introdotte da Windows 2000. In buona sostanza è un luogo centrale per memorizzare, in maniera gerarchica, informazioni circa gli utenti, l’hardware, le applicazioni e i dati sulla rete, in modo da facilitare la loro ricerca e il loro recupero. Essa, inoltre, memorizza le informazioni di autorizzazione e autenticazione richieste per assicurare che solo gli utenti appropriati accedano alle risorse di rete.

Nelle precedenti versioni di NT, queste memorizzate in luoghi diversi e i Domain Controller condividevano solamente il database SAM, il quale mantiene solamente informazioni sugli utenti e sui gruppi. Con Active Directory le informazioni vengono mantenute e aggiornate in un solo punto, rappresentando una sorta di "pagine gialle" della rete.

Active Directory offre i seguenti vantaggi:

Sicurezza. Si può definire il controllo dell’accesso su tutti gli oggetti della directory e si possono definire le politiche di sicurezza da applicare ad un intero dominio.

Standard aperto. Active Directory è X.500 compatibile, quindi può dialogare con altre directory o applicazioni.

Scalabilità. E’ in grado di memorizzare una grande quantità di oggetti e relative informazioni, grazie alla struttura di database su cui si basa.

Compatibilità. Supporta il precedente schema di directory in Windows NT (3.5x e 4.0), figurando come Domain Controller del dominio sulle reti dello stesso sistema; è inoltre compatibile con Windows NT Workstation e i client Windows 9x.

Disponibilità. Active Directory è dotato di un meccanismo di replica multimaster, che consente a tutti gli utenti, a prescindere da dove accedono fisicamente alla rete, di accedere a un database aggiornato.

STRUTTURA

La struttura di Active Directory è gerarchica. Al livello più alto della gerarchia troviamo una foresta di alberi di domini. Un albero di dominio è composto da un dominio radice e una serie di domini figli, ognuno dei quali a sua volta può avere altri domini figli.

Figura 1 - Foresta alberi di domini

 

Figura 2 - Albero di dominio

Ogni dominio contiene al suo interno dei particolari contenitori, detti unità organizzative, all’interno delle quali possono essere collocate altre unità organizzative e gli oggetti del dominio, ovvero utenti, gruppi, computer. Un'unità organizzativa non può contenere oggetti provenienti da altri domini.

Le unità organizzative sono molto utili, poiché ci consentono di creare, all’interno di un dominio, una rappresentazione delle strutture logiche gerarchiche presenti nell'organizzazione; questo approccio consente di gestire la configurazione e l'utilizzo di account e risorse in base al modello della propria organizzazione, semplificandone l’amministrazione.

Figura 3 - Esempio struttura dominio

Il controllo amministrativo di ciascuna unità organizzativa può essere delegato a determinati utenti: esse rappresentano l'ambito più piccolo a cui sia possibile delegare l'autorità amministrativa (gli altri sono i siti e i domini). Questo consente di delegare l'amministrazione locale di utenti e risorse.

In questo modo possiamo distribuire l'amministrazione del dominio tra vari amministratori, in una maniera tale che le responsabilità amministrative che vengono gestite risultino molto simili alle responsabilità organizzative assegnate nella gerarchia aziendale.

Alle unità organizzative (così come ai siti e ai domini) è possibile assegnare oggetti Criteri di gruppo. Un oggetto Criteri di gruppo è insieme di impostazioni, che consentono di definire e controllare il funzionamento dei programmi e delle risorse di rete per utenti e computer all’interno di un’organizzazione. L’applicazione di un Criterio di gruppo ad un particolare utente o computer è determinata dall’appartenenza ad un’unità organizzativa, ad un dominio o a un sito.

Un sito non è altro che una sottorete connessa, ovvero specifica un insieme di indirizzi IP di macchine ched formeranno quel sito. I siti rappresentano un meccanismo molto utile per creare e gestire una raccolta di DC (Domain Controller), consentendo di gestire in maniera efficiente la replica.

Infatti, la replica delle informazioni di Active Directory può avvenire tra DC (Domain Controller) all’interno dello stesso sito o tra siti diversi collegati tra loro.

Figura 4 - Esempio di collegamento tra siti

Per determinare l’appartenenza ad un sito, un client determina il proprio sito quando è acceso, mentre un DC la stabilisce controllando quale sia il sito di appartenenza, nella directory, del proprio server di oggetti. Se un client o un DC non sondo inclusi in alcun sito, si trovano all’interno del primo sito realizzato, detto “primo sito predefinito”; quindi a tutti i siti è sempre associato un DC.

Active Directory include nella sua struttura anche i gruppi. I gruppi sono oggetti Active Directory (o di un computer locale) che possono contenere utenti, computer e altri gruppi. Si differenziano dalle unità organizzative in quanto queste ultime consentono di creare una gerarchia che rispecchia la struttura dell’organizzazione, mentre i gruppi sono utilizzati per gestire l'accesso di utenti e computer a risorse condivise. Infatti, le unità organizzative non sono elementi principali di protezione: la funzione che svolgono è unicamente quella di organizzare e contenere gli oggetti di Active Directory. L'appartenenza ai gruppi viene utilizzata per filtrare gli oggetti Criteri di gruppo che influiranno sugli utenti e i computer inclusi nel sito, nel dominio o nell'unità organizzativa.

I gruppi sono classificati in:

Gruppi universali: possono contenere utenti e altri gruppi, provenienti da qualsiasi punto della foresta di alberi di domini; essi vengono pubblicati nel catalogo globale.

Gruppi globali: contengono gli utenti dello stesso dominio, e rispetto a Windows NT 4.0, possono contenere anche gruppi dello dominio; non vengono pubblicati nel catalogo globale;

Gruppi locali di dominio: possono contenere utenti e gruppi provenienti da altri domini, ma possono utilizzare solo gli ACL del loro stesso dominio; neppure loro sono pubblicati nel catalogo globale.

Gruppi locali: Windows 2000 Professional e Windows 2000 Server possiedono un gruppo locale detto “utenti locali”, memorizzato nel database SAM. E’ possibile assegnare gli utenti locali, i gruppi globali o gli utenti. 

Active Directory come standard aperto

In generale l’utilizzo per molto tempo di una nuova tecnologia è spesso legato alla sua qualità: le tecnologie meno buone hanno una vita breve, mentre quelle molto valide ricevono l’attenzione dei progettisti software desiderosi di utilizzarle all’interno delle loro applicazioni. Come esempio di tali tecnologie abbiamo LDAP e X.500, tecnologie che Microsoft ha applicato alla nuova famiglia di Windows.

Infatti Microsoft ha sostituito il progetto di sicurezza di Windows NT, basato interamente sul registro di sistema, con un servizio di directory aperto, che è una buona implementazione dello schema di directory X.500; per l’accesso non viene utilizzata una tecnologia proprietaria, ma si adottano due meccanismi di accesso:

Active Directory interagisce benissimo anche con il DNS (Domain Name System), che viene utilizzato come servizio di ricerca, in alternativa al più pesante servizio WINS (Windows Internet Name System).

L’implementazione del DNS è una variante, detta DNS dinamico, grazie alla quale gli host che memorizzano le informazioni sui nomi del DNS possono registrare e aggiornare dinamicamente i loro record in zone mantenute dai server DNS, che a loro volta possono accettare ed elaborare i messaggi di aggiornamento. (Un tempo questo lavoro veniva effettuato dagli amministratori, oppure si costringeva il DNS a utilizzare il WINS).

Inoltre il DNS memorizza le proprie zone in Active Directory là dove è autorizzato a farlo; il trasferimento delle zone non è più necessario in quanto la replica viene eseguita da Active Directory, anche se per ragioni di interoperabilità viene supportata. 

Oggetti e schema in Active Directory

Tutto ciò che Active Directory contiene (utente, unità organizzativa, computer, stampante, ect..) è un oggetto che viene memorizzato con un insieme di attributi caratteristici dell’oggetto. Ciascuno di tali oggetti è una istanza di una classe.

Le classi di oggetti, insieme con gli attributi e le regole che devono essere seguite per la loro gestione, formano un gruppo detto schema. In particolare, per ogni classe, lo schema definisce la classe genitore, gli attributi, gli attributi aggiuntivi che gli oggetti devono avere, e memorizza tutte queste informazioni.

Lo schema di Active Directory presenta due tipi di oggetti: quelli dello schema di classe definiscono una classe e quelli dello schema di attributi definiscono gli attributi; pertanto, per ciascuna classe nello schema vi è uno schema di classe e per ciascun attributo vi è uno schema di attributi.

Ciascun attributo in Active Directory possiede una definizione che ne descrive:

Per quanto riguarda la definizione di una classe, essa viene definita specificando gli attributi che dovrà contenere; ogni classe può derivare da un’altra classe genitore, detta superiore, e quindi, oltre ai propri attributi, una classe possiede gli attributi ereditati da una classe superiore.

Tutte le classi dello schema derivano dalla speciale classe, detta top, che è una classe astratta (non presenta oggetti espliciti), da cui tutte le classi ereditano gli attributi. Così come per gli attributi, anche gli oggetti vengono identificati con un OID.

Per renderlo accessibile, lo schema viene caricato dal DC, al momento dell’avvio, nella cache della sua memoria RAM; se apportano delle modifiche allo schema, Active Directory aggiorna la cache entro cinque minuti. Tali modiche, così come l’aggiunta di nuove classi o attributi allo schema, vanno compiute in una copia dello schema situata sul disco rigido del DC. Si utilizza la cache dello schema, nella RAM del DC, solo per migliorare il throughput nelle operazioni di accesso allo schema

Catalogo globale

La gestione efficiente di tutti gli oggetti di Active Directory richiede l’utilizzo di un qualche meccanismo che consente di recuperare velocemente le informazioni sugli oggetti e sugli attributi memorizzati.

Il meccanismo utilizzato da Active Directory è rappresentato dal Catalogo globale. Il catalogo globale è un indice che contiene tutti gli oggetti Active Directory con un numero limitato di attributi di ciascuno di essi, in altre parole gli attributi più adoperati nelle procedure di ricerca, come il nome utente, l’indirizzo di posta elettronica. Anche se Active Directory viene divisa per domini, il catalogo globale fornisce una vista degli oggetti a prescindere dal dominio; in questo modo un utente può recuperare le risorse dalla rete, a prescindere dal punto in cui si trovino.

Per default, un catalogo globale viene creato automaticamente sull’iniziale controller di dominio nella foresta. Quando un utente accede alla rete, il catalogo fornisce informazioni sull’appartenenza al gruppo dell’account che invia la richiesta di accesso. Se nel dominio vi è un solo controller, questo sarà designato come server del catalogo, mentre se i controller nel dominio sono più d’uno è sufficiente configurarne uno a caso.

Possiamo individuare le due funzioni principali che il catalogo globale esegue:

Accesso: tutti gli oggetti che vengono autenticati in Active Directory devono fare riferimento al catalogo globale, per cui deve essere possibile accedere ad esso. Può verificarsi che nel momento in cui l’utente cerca di accedere, nessun catalogo sia disponibile; in questo caso, l’utente potrà accedere solo al computer locale, salvo che egli non appartenga al gruppo amministrativo del dominio che non ha bisogno del catalogo per accedere.

Interrogazione: questa funzione è importante, visto che la ricerca delle informazioni non è facile, specie quando abbiamo più controller. Va detto comunque, che la maggior parte del traffico verso Active Directory è rappresentato da interrogazioni con cui gli utenti richiedono informazioni sugli oggetti nella directory. Nel caso in cui si disponga di più controller di dominio, per ottenere una più equa distribuzione del carico, è opportuno avere più server di catalogo.

Active Directory: la replica delle informazioni

Active Directory utilizza un modello per la replica di informazioni in essa contenute, modificando il ruolo dei DC. In Windows NT, le informazioni di dominio erano distribuite tra un PDC (Primary Domain Controller, controller di dominio primario) che possedeva solo la copia di lettura delle informazioni, e un BDC (Backup Domain Controller, controller di dominio di backup) che possedeva solo la copia di scrittura. In Windows 2000 si è verificato un passo in avanti: i DC non sono né primari né di backup, ma sono semplici controller di dominio; grazie a questa innovazione possiamo:

a)      si può essere convalidati e si possono ricevere tutti i privilegi necessari a cercare le risorse disponibili nella rete, dovunque ci si trovi;

b)      aggiornare la directory da qualsiasi DC e tale modifica viene estesa a tutti gli altri DC.

Il meccanismo della replica in Active Directory consente di mantenere copie delle informazioni sul dominio tra tutti i controller del dominio. Tale meccanismo è in grado poi di garantire che una singola modifica non venga replicata varie volte sullo stesso dominio da svariati insiemi di connessioni, perché altrimenti arriveremmo ad un processo di replica infinita, con conseguente calo della rete. Ciò viene ottenuto tenendo traccia sia degli attributi modificati di un determinato oggetto, sia del numero di volte con cui si sono verificate tali modifiche.

Il meccanismo della replica è implementato da una particolare servizio, detto KCC (Knowledge Consistency Checker), che opera nel contesto della LSA e non è visualizzato nel Task Manager. Dopo che il KCC ha stabilito le connessioni tra i controller di dominio, la propagazione degli aggiornamenti delle informazioni al vari controller di domini viene eseguita dal DRA (Directory Replication Agent).

Le connessioni tra controller di dominio viene detta topologia di replica. Active Directory tenta di avere almeno due connessioni per ciascun DC, al fine di garantire la replica anche in caso di fallimento di una connessione: infatti in caso di fallimento, la replica può comunque essere effettuata tra gli altri DC, utilizzando l’altra connessione.

Abbiamo due meccanismi di replica: replica intrasito e replica inter-sito.

Nella replica intrasito, i patner di replica sono tutti contenuti all’interno di un unico sito, che può essere quello di default, primo sito predefinito, oppure un sito opportunamente creato. In questo caso il KCC determina automaticamente la topologia di replica.

Figura 5 - Replica intrasito

Nella replica inter-sito, invece, i DC possono trovarsi in siti diversi, e una connessione tra due DC viene detta collegamento del sito. In tale tipo di replica, la topologia di replica non viene definita automaticamente, ma occorre creare esplicitamente i collegamenti di sito. Una volta creato il collegamento, Active Directory riceve indicazioni sugli oggetti della connessione che deve creare per replicare i dati della directory.

Figura 6 - Replica inter-sito

Qualunque sia il tipo di replica utilizzato, essa utilizza due protocolli per lo scambio dei dati:

Replica IP: rappresenta lo standard più semplice, che si avvale delle RPC (Remore Procedure Call) sia per la replica intrasito che per la replica inter-sito. Esso funzione anche senza una CA (Certificate Authority).

Replica SMTP: questo protocollo è utilizzato solo nella replica inter-sito, e consente di replicare gli schemi, le configurazioni e il catalogo globale; esso richiede, però l’installazione e la configurazione di una CA (Certificate Authority).

Per eventuali approfondimenti su Active Directory, si può consultare il capitolo Riferimenti.