L'organizzazione degli oggetti (computer, utenti, gruppi, ecc) in Active Directory è implementata mediante le unità organizzative. Come suggerisce il nome, le unità organizzative sono una sorta di contenitori utilizzati per organizzare gli oggetti all'interno di Active Directory. Le unità organizzative vengono utilizzate principalmente per formare una gerarchia di contenitori all'interno di un dominio a scopo amministrativo come ad esempio per l'applicazione dei Criteri di gruppo o per delegare il controllo. Il controllo su un'unità organizzativa e sugli oggetti in essa contenuti viene fornito tramite liste di controllo degli accessi (access control list o ACL). La delega del controllo supportata in Active Directory consente di trasferire il controllo amministrativo completo o limitato sugli oggetti ad altri utenti o gruppi. In questo modo è possibile distribuire la gestione di un numero elevato di oggetti ad una serie di utenti ritenuti attendibili.
In AD sono già presenti le unità organizzative relative a Computer (Computers) e Utenti (Users) come visibile in FIG 1. Tuttavia utilizzare solo queste UO in una grande azienda potrebbe non essere una buona idea.
Una grande azienda è generalmente suddivisa in diversi dipartimenti come Direzione, Vendite, Acquisti, Ricerca & Sviluppo, ecc. L'organizzazione degli oggetti in Active Directory può rispecchiare tale schema suddividendo e organizzando gli oggetti di un dominio.
In questi articolo andremo a creare due unità organizzative: una relativa Direzione e l'altra relativa all'ufficio Marketing.
Per la creazione di unità organizzative è possibile utilizzare diversi strumenti. In questo articolo verrà mostrato come creare un'unità organizzativa utilizzando Utenti e Computer di Active Directory, Centro di amministrazione di Active Directory e tramite PowerShell.
Creazione unità organizzativa tramite Utenti e Computer di Active Directory
Da Server Manager cliccare sul menu Strumenti e selezionare Utenti e Computer di Active Directory (Active Directory Users and Computers). In alternativa premere la combinazione di tasti WIN+R digitare dsa.msc e premere invio.
FIG 2 - Server Manager |
Espandere il dominio della propria azienda (mycompany.local) per visualizzare i container e le unità organizzative in esso contenute. Cliccare con il tasto destro del mouse sul nome del dominio e, dal menu contestuale, selezionare Nuovo quindi Unità organizzativa.
FIG 3 - Utenti e computer di Active Directory, Nuova unità organizzativa |
Digitare, nell'apposita casella, il nome da assegnare all'unità organizzativa, ad es. Direzione, e assicurarsi che sia selezionata l'opzione Proteggi contenitore da eliminazioni accidentali (l'opzione è attiva di default) quindi cliccare su OK per procedere alla creazione.
FIG 4 - Nuovo oggetto Unità organizzativa |
Cliccare con il tasto destro sull'unità organizzativa Direzione, selezionare Nuovo quindi Unità organizzativa. Assegnare il nome Utenti all'unità organizzativa e cliccare su OK per confermare.
Cliccare nuovamente con il tasto destro sull'unità organizzativa Direzione, selezionare Nuovo, Unità organizzativa. Assegnare il nome Computer all'unità organizzativa e cliccare su OK per confermare.
Ripetere i passaggi sopra indicati per l'unità organizzativa nominata Marketing. Al termine delle operazioni la situazione è quella mostra in FIG 5.
Creazione unità organizzativa tramite Centro di amministrazione di Active Directory
Da Server Manager cliccare sul menu Strumenti e selezionare Centro di amministrazione di Active Directory. In alternativa premere la combinazione di tasti WIN+R, digitare dsac.exe e premere invio.
FIG 6 - Server Manager |
Cliccare con il tasto destro del mouse sul dominio e dal menu contestuale selezionare Nuovo quindi Unità organizzativa.
FIG 7 - Centro di amministrazione di Active Directory |
Inserire il nome da assegnare all'unità organizzativa, ad es. Direzione, e verificare che sia selezionata l'opzione Proteggi contenitore da eliminazioni accidentali (l'opzione è attiva di default). In questa schermata, nell'apposito campo, possiamo anche aggiungere una descrizione all'unità organizzativa che stiamo andando a creare. Cliccare su OK per procedere alla creazione.
FIG 8 - Crea Unità organizzativa |
Selezionare l'UO Direzione appena creata, cliccarci su con il tasto destro del mouse e selezionare Nuovo, Unità organizzativa.
Come nome dell'unità organizzativa digitare Computer e cliccare su OK
Cliccare nuovamente con il tasto destro del mouse su Direzione e creare una nuova unità organizzativa nominandola Utenti.
Ripetere i passaggi precedenti per l'unità organizzativa nominata Marketing.
Lightweight Directory Access Protocol e Distinguished Name
Prima di mostrare come aggiungere una nuova unità organizzativa tramite PowerShell è necessario fare un accenno veloce ad alcuni argomenti come LDAP e DN.Active Directory utilizza il protocollo Lightweight Directory Access Protocol (LDAP) per le interrogazioni. Per identificare in maniera univoca un oggetto all'interno di Active Directory, LDAP utilizza il Distinguished Name (DN). Il formato utilizzato da DN per identificare un oggetto è tipo_oggetto=Nome_oggetto e più oggetti sono separati da virgola.
Ad es. il dominio mycompany.local è composto da due componenti di dominio (mycompany e local) e da DN vengono rappresentati come oggetti di tipo DC (domain component) nel seguente modo
dc=mycompany,dc=local
Le unità organizzative sono oggetti di tipo OU (organizational unit) mentre i container Users e Computers vengono identificati come tipo CN (common name).
L'unità Organizzativa Direzione creata precedentemente ha il seguente DN:
ou=Direzione,dc=mycompany,dc=local
Il container Users viene identificato dal Distinguished Name
cn=Users,dc=mycompany,dc=local
Un account utente con nome Elmer.Fudd presente all'interno dell'unità organizzativa Utenti in Direzione avrà il seguente DN
cn=Elmer.Fudd,ou=Utenti,ou=Direzione,dc=mycompany,dc=local
Dopo questo doveroso chiarimento, vediamo come procedere alla creazione di una nuova unità organizzativa tramite PowerShell.
Creazione unità organizzativa tramite PowerShell
In Windows Server 2008 R2 e nei sistemi operativi più recenti, è presente il modulo PowerShell Active Directory (parte di RSAT) che permette l'iterazione con AD. Tramite PowerShell è possibile creare un'unità organizzativa utilizzando il cmdlet New-ADOrganizationalUnit. Ad esempio, per creare una nuova OU denominata Direzione nella radice del dominio (come visto precedentemente mediante GUI) e le altre due UO, Utenti e Computer, al suo interno è possibile utilizzare i seguenti comandi:
New-ADOrganizationalUnit -Name:"Direzione" -Path:"DC=mycompany,DC=local" -ProtectedFromAccidentalDeletion:$true -Server:"ServerDC2.mycompany.local"
New-ADOrganizationalUnit -Name:"Utenti" -Path:"OU=Direzione,DC=mycompany,DC=local" -ProtectedFromAccidentalDeletion:$true -Server:"ServerDC2.mycompany.local"
New-ADOrganizationalUnit -Name:"Computer" -Path:"OU=Direzione,DC=mycompany,DC=local" -ProtectedFromAccidentalDeletion:$true -Server:"ServerDC2.mycompany.local"
FIG 10 - PowerShell, Nuova unità organizzativa |
I comandi creano un'unità organizzativa con il nome specificato dal parametro -Name, nel percorso specificato da -Path, protetta dalla cancellazione accidentale (-ProtectedFromAccidentalDeletion:$true) e sul server specificato dal parametro -Server. Volendo è possibile aggiungere una descrizione all'unità organizzativa mediante il parametro -Description. Ad esempio
New-ADOrganizationalUnit -Name:"Direzione" -Path:"DC=mycompany,DC=local" -ProtectedFromAccidentalDeletion:$true -Description "Uffici Direzione" -Server:"ServerDC2.mycompany.local"
Tramite PowerShell è possibile anche automatizzare la creazione di più unità organizzative. Ad esempio, supponiamo di avere un file ElencoUO.csv con all'interno l'elenco delle UO da creare all'interno della root del dominio.
FIG 11 - File di testo con elenco UO |
Tramite un semplice script come quello indicato di seguito possiamo caricare l'elenco e creare le unità organizzative risparmiando tempo rispetto alla creazione manuale.
$targetOU="DC=mycompany,DC=local"
$OUs = Import-csv "C:\PS\ElencoUO.csv"
foreach ($ou in $OUs)
{
write-host $ou.name
New-ADOrganizationalUnit -Name $ou.name -path $targetOU -ProtectedFromAccidentalDeletion:$true
}