Windows 2000
Active Directory et ADSI
une expérience d'automatisation

Laurent.Kling@epfl.ch, Département de Génie Mécanique

Préambule

Une des préoccupations actuelles est la gestion des usagers et des ressources informatiques qui sont liées. La mise en place de méta-annuaire offrant un lieu commun pour accéder aux éléments doit résoudre cette problématique dans un fonctionnement quotidien.

Un des premiers exemples de cette stratégie est celui de Novell qui intégra dans un protocole réseau spécifique une fonctionnalité d'annuaire. Une démarche similaire a été mise en place par Sun avec l'introduction de NIS sous Unix (Solaris) qui est devenu un standard supporté par d'autres fournisseurs. Le prolongement naturel de cette démarche est la re-création d'un méta-annuaire sous le système d'exploitation majoritaire actuel dans la micro-informatique, Windows 2000.

Principes

Je ne désire pas dans cet article expliquer l'ensemble du fonctionnement de Windows 2000 mais mettre en évidence certains éléments clés de sa mise en oeuvre. Windows 2000 est, malgré son patronyme, un système d'exploitation différent de ses prédécesseurs (comme Windows NT 4 ou Windows 98).
Deux éléments clés sont à la base de son fonctionnement:

De ce fait, il faut changer nos habitudes de travail.
Pour pouvoir approfondir la connaissance de ce système, je recommande de suivre les cours organisés par le SIC et vous propose de prendre comme livre de chevet l'ouvrage suivant:
Windows2000Active Directory, AlistairG. Lowe-Norris, Editeur O'Reilly, ISBN 1-56592-638-2.
Cet ouvrage, écrit en janvier 2000, par un informaticien travaillant dans un environnement similaire au nôtre (Université de Leicester) offre une présentation cohérente, depuis la description des fondements de cette technologie jusqu'à sa mise en oeuvre pratique avec l'utilisation de scripts, dont je me suis largement inspiré pour ce travail. Je le recommande vivement à chaque administrateur de Windows 2000.
La complexité de la mise en oeuvre de Windows 2000 dépasse largement celle de Windows NT 4 par trois écueils:


De ces réflexions, on peut mettre en place une charte de fonctionnement.

Charte de fonctionnement de Windows 2000

Persistance des informations:

La répercussion immédiate des modifications d'Active Directory entraîne à une vigilance accrue de celui-ci. Chaque changement de sa structure doit être répertorié et documenté.

Hiérarchie des domaines:

Chaque entité administrative doit exister sous la forme d'une Unité d'Organisation (OU) ou d'un serveur de domaine. Pour éviter une multiplication des serveurs de domaine, il peut être recommandé de créer des Unités d'Organisation (OU).

Sauvegarde des états:

À chaque changement majeur de la structure d'Active Directory, on doit disposer d'une sauvegarde. Cette sauvegarde doit être documentée. Les différents logs du système sont sauvegardés dans leur intégralité. Toutes modifications des Groups Policy (GPO) doivent être documentées et sauvegardées.

Responsabilité:

Chaque domaine ou Unité d'Organisation (OU) possède un seul administrateur. La délégation de ce rôle peut être temporaire ou permanente. Dans le cas d'une délégation temporaire, une traçabilité des opérations effectuées est obligatoire. Un administrateur doit être une personne qui a suivi ou qui suit une formation adaptée (comme les cours du SIC).
L'objectif de Windows 2000 est de fournir l'outilde gestion des ressources systèmes et de leur intégration dans un méta-annuaire; cette approche est un peu une illusion car malgré ses points de départ standard (X500, DNS), ils sont mis en pratique dans une culture de quasi-monopole. De plus, son intégration forte avec le système d'exploitation définit un outil n'offrant pas un support multi-plateforme complet (qui devrait dépasser le simple fait de partager des fichiers,). Un des premiers services d'un méta-annuaire devrait pouvoir fournir un point d'entrée centralisé pour accéder à l'information sur les ressources informatiques par l'intermédiaire d'une interface disponible sur l'ensemble des plates-formes (comme le Web).
Il nous faut attendre les outils issus du projet e-pfl, ou de leur intégration avec Gaspar. Celui-ci fournit déjà une fonctionnalité adaptée à ces besoins, mais devrait disposer des outils (scripts) pour rapatrier ces données dans l'ensemble des environnements utilisés dans l'EPFL (Unix, Linux, MacOS, Windows NT 4 et Windows 2000). Cette démarche ouvrant l'éventail de leur mise en oeuvre, d'un laboratoire ou institut jusqu'à une démarche centralisée pour l'EPFL.
Pour mon département, j'ai créé un outil, la logithèque (accessible par un lien depuis les pages Web du département http://dgmwww.epfl.ch/).

Logithèque du DGM

Le but de ce site est de fournir un cheminement pour accéder aux ressources offertes dans le domaine de l'informatique par le Département de Génie Mécanique et son Service Informatique. Il s'adresse donc aux étudiants, corps enseignant et corps administratif du DGM de l'EPFL. Son utilisation demande un accès à Internet et pour certaines ressources, un accès à un courrier électronique.
Le fonctionnement de la logithèque se décompose en 2 parties:

Cet outil est réalisé avec FileMaker Pro en utilisant la possibilité d'inclure des tagsspécifiques à la mise en oeuvre de cette base de données. On pourrait imaginer de réaliser ce travail avec des outils plus à la mode comme PHP et MySQL par exemple. J'ai préféré ré-utiliser un travail similaire réalisé pour le Département d'Architecture; FileMaker Pro offre une souplesse de développement non négligeable en intégrant dans un seul outil multi-plateformes, les deux faces de ce genre d'application (base de données et serveur Web). Il peut également offrir des fonctionnalités avancées comme la répartition de charge. Dans un souci de pérennité, son interface utilisateur simple offre une communication adaptée à de nombreux intervenants.

Utilisation conjointe de la Logithèque et de scripts ADSI

La création des comptes pour les usagers d'un système est généralement une opération fastidieuse. Une manière classique sous Windows NT 4 est la duplication à partir d'un chablon qui demande l'introduction de valeurs dans 3 champs. Cette même opération sous Windows 2000 nécessite de remplir 5 champs dans 3 fenêtres différentes. En plus, le dossier de l'usager pour son dossier de travail (Home Directory) créé automatiquement n'est pas accessible à l'administrateur (en Service Pack 1). Il est difficile de respecter la charte de fonctionnement précédemment citée, en particulier pour les points concernant la documentation et la mise à jour des informations.

Dans la modification des structures administratives en cours dans l'EPFL, en particulier la mise en place des Facultés et des nouveaux instituts, il est difficile de prévoir quelle sera l'organisation finale. Cependant le niveau d'agrégation minimum reste l'unité ou la chaire. L'objectif est de constituer une structure de gestion technique et administrative autour de cette unité, ceci dans le dessein de préparer son intégration dans un ensemble plus vaste.
Un outil parfaitement adapté pour cela est l'unité d'organisation (OU, Organisational Unit). Cet élément offre l'ensemble des caractéristiques requises:

La mise en oeuvre pratique et son automatisation s'effectue par l'intermédiaire d'une boîte à outil, ADSI (Active Directory Service Interface), disponible depuis 1997 et qui offre une interface unifiée à des services différents comme:

Cette pierre de Rosette des administrateurs systèmes offre ainsi un outil parfait pour réaliser les travaux répétitifs.

Son intégration avec WSH (Windows Script Host), environnement ouvert de développement d'outils de gestion, fournit un outil adapté à nos besoins sous Windows 2000; son utilisation est également possible (après installation) sur Windows 95, Windows 98 et Windows NT 4. Pour les personnes désirant mieux connaître cet outil, je leur recommande la lecture de l'ouvrage suivant:

WindowsScriptHost, DinoEsposito, Editeur Wrox, ISBN: 1-861002-65-3.

Ces 2 outils ont été utilisés pour le travail décrit dans le précédent Flash informatique (message destiné à tous les gestionnaires de salles de PC Windows ouvertes aux étudiants de Francois Georgy et Christian Zufferey) similaire à mon propos mais dans un contexte centralisé.

Cette ouverture du système par l'utilisation de scripts présente naturellement un trou de sécurité. Les 2 moteurs de WSH (cscript.exe et wscript.exe [respectivement en mode commande ou en mode Windows]) existent avec des permissions ouvertes pour tout le monde par défaut, je recommande que vous supprimiez cette option sur vos serveurs pour éviter des événements fâcheux (ces 2 exécutables se situent dans %SystemRoot%\system32). Je vous recommande également de ne pas ouvrir l'accès de l'utilisateur Guest, membre du groupe DomainUsers [et avec celui-ci comme groupe principal !] offrant ainsi un accès à l'ensemble des ressources de votre système,

Environnement de développement

La création de scripts est fastidieuse, le cycle d'écriture, exécution, correction est grandement facilité avec des outils adaptés. Le développement d'outils système à partir de scripts est généralement un parent pauvre comparé aux environnements intégrés de développement (IDE) disponibles pour les langages les plus répandus (Java, C, C++, Visual Basic). Pour remédier à ce manque, la combinaison de 2outils offre un environnement intégré (voir figure 1):

figure 1

L'utilisation de machine virtuelle (VirtualPC, VMware) offre la mise à disposition de plusieurs environnements disponibles simultanément (dans la limite de la mémoire disponible) sur un seul ordinateur. Dans un souci oecuménique, une partie de ce développement a été réalisée avec VirtualPC sur un Macintosh [en fait, je ne possède pas de PC à la maison, mais un Macintosh]. Ces outils raccourcissent le temps de développement en offrant un confort accru et la possibilité de tester son travail.

Les scripts...

L'objectif de ce travail est de fournir un outil cléenmain qui décharge l'administrateur de l'unité de la création d'usagers.

Cet outil part du postulat qu'actuellement un grand nombre d'administrateurs de systèmes Windows 2000 ne sont pas engagés dans cette seule activité; beaucoup sont des assistants-doctorants et leur travail sera simplifié si on leur offre un canevas d'administration.
Il nécessite comme point de départ les éléments suivants:

Il se présente sous la forme de deux scripts: http://flashinformatique.epfl.ch/spip.php?rubrique808-1-page7a.html et http://flashinformatique.epfl.ch/spip.php?rubrique808-1-page7b.html

1. Création de l'unité

Le premier script (création de l'unité: unit.vbs) est destiné à être exécuté sur le serveur qui va accueillir l'unité avec les droits de l'administrateur. La possibilité existe d'identifier l'accès à Active Directory (LDAP). Cette identification n'est pas nécessaire dans notre cas de figure, car nous héritons des privilèges liés à l'administration permettant d'effectuer des modifications.
Il nécessite 4 arguments (en mode commande, ou par l'intermédiaire de boîtes de dialogue en mode windows)


Pour ceux qui ne désirent pas avoir les boîtes de dialogues apparaissant en mode Windows lors du déroulement du script, je propose deux solutions:

>Pour différencier par le nom les groupes locaux des groupes globaux, j'ajoute un suffixe Gaux noms des groupes globaux.

Son exécution entraîne la création des éléments suivants:

Ce dossier pour l'OU dans le disque de partage va contenir (créé avec le deuxième script):

Il n'est pas nécessaire de fournir à ce script des informations système comme:

Elles sont directement recueillies auprès du serveur concerné.
Dans le log système et dans un fichier, une trace des différentes opérations effectuées est générée:

figure2

figure3

figure4

Et finalement il génère le fichier de configuration nécessaire pour la création des usagers:

si:DC=dgm-sg,DC=intranet,DC=epfl,DC=ch:DGM-SG:DGMPC1:D:105556:Service Informatique-Département Génie Mécanique

Ce script crée directement le point de partage et configure également les droits des groupes globaux inclus dans l'OU (voir figures 5 & 6). La modification physique de l'accès au dossier contenant les données s'effectue par cacls.

figures 5& 6: Point de partage de l'unité pour les usagers et droits afférents

CACLS

Cet outil déjà disponible avec la distribution de ZAK sous NT 4 (voir mon article du numéro du Flash Informatique de septembre 1999: Installation avec ZAK sur NT http://dit-archives.epfl.ch/FI99/fi-7-99/7-99-page9.html sur ce sujet) est disponible sous Windows2000, il offre la fonctionnalité de définir les droits d'un élément (dossier et/ou fichier) sur un disque et de lui attribuer des permissions, et cela de manière récursive si nécessaire. Son grand frère, xcacls est disponible au téléchargement chez Microsoft.

cacls.exe

Displays or modifies access control lists (ACLs) of files

CACLS filename [/T] [/E] [/C] [/G user:perm] [/R user [...]]
  [/P user:perm [...]] [/D user [...]]
 filename Displays ACLs.
 /T  Changes ACLs of specified files in
  the current directory and all subdirectories.
 /E  Edit ACL instead of replacing it.
 /C  Continue on access denied errors.
 /G user:perm Grant specified user access rights.
  Perm can be: R Read
   W Write
   C Change (write)
   F Full control
 /R user      Revoke specified user's access rights (only valid with /E).
 /P user:perm Replace specified user's access rights.
  Perm can be: N None
   R Read
   W Write
   C Change (write)
   F Full control
 /D user Deny specified user access.
Wildcards can be used to specify more that one file in a command.
You can specify more than one user in a command.


xcacls.exe
Displays or modifies access control lists (ACLs) of files

XCACLS filename [/T] [/E|/X] [/C] [/G user:perm;spec] [/R user [...]]
   [/P user:perm;spec [...]] [/D user [...]] [/Y]
  filename  Displays ACLs.
  /T   Changes ACLs of specified files in
   the current directory and all subdirectories.
 /E   Edit ACL instead of replacing it.
 /X   Same as /E except it only affects the ACEs that the 
  specified users already own.
 /C   Continue on access denied errors.
 /G user:perm;spec Grant specified user access rights.
  Perm can be: R Read
     C Change (write)
    F Full control
     P Change Permissions (Special access)
     O Take Ownership (Special access)
     X EXecute (Special access)
     E REad (Special access)
     W Write (Special access)
     D Delete (Special access)
  Spec can be the same as perm and will only be
   applied to a directory. In this case, Perm
   will be used for file inheritence in this
   directory. If not omitted: Spec=Perm. Special values
   for Spec only:
    T Not Specified (for file inherit, 
    only for dirs valid)
    At least one access right has to follow!
    Entries between ';' and T will be ignored!
 /R user  Revoke specified user's access rights.
 /P user:perm;spec Replace specified user's access rights.
   for access right specification see /G option
 /D user  Deny specified user access.
 /Y   Replace user's rights without verify

Wildcards can be used to specify more that one file in a command.
You can specify more than one user in a command.
You can combine access rights.

2. Création des usagers

Le second script va créer les usagers (users.vbs). Il ne possède pas de paramètres, mais va lire un fichier contenant les informations suivantes sur les usagers (new-users.txt):

     Unité, Institut, Département, Sciper, 
     Nom 8 char, Nom e-mail CSO, Fonction, 
     Prénom, Nom, Téléphone, Fax, Bureau

Par exemple:

     SI:SG:DGM:129330:bapst:Alexandre.Bapst:
     apprenti:Alexandre:Bapst:3565::

Ce fichier peut être automatiquement généré par la logithèque. Et il peut contenir des usagers de différentes unités (pour des mises à jour par exemple).
Contrairement à une idée répandue, les deux modes d'accès à un domaine Windows 2000, soit:


sont strictement équivalents et ne dépendent pas du mode de fonctionnement (mixte ou natif) du domaine.

figure 8

Pour éviter tout problème, et quoique les caractères utilisables dans Windows soient plus nombreux, je propose d'utiliser la norme Internet RFC 1123 qui propose les caractères suivants:
A-Z ; a-z ; 0-9 ; -
Avec le «.» comme séparateur entre le nom et le prénom. Cette manière de faire est identique à celle des adresses logiques du courrier électronique des usagers.
Il existe trois méthodes pour domicilier un usager dans un domaine 2000:

Il n'existe pas de règle absolue, la seconde ou la troisième solution me semble la plus favorable dans une logique de domaine. La documentation de Microsoft propose dans le troisième cas de créer 2 points de partage (un par type). Du fait de l'utilisation de script, il n'existe pas de problème à intégrer le dossier de profil dans le dossier de travail, offrant ainsi une gestion plus simple de l'utilisateur (en particulier dans son déplacement et dans la sauvegarde et récupération de ses données).
Je me permets de vous renvoyer sur le site Web de l'article déjà précité (http://pcline.epfl.ch/students/default.asp) qui décrit de manière très détaillée les conséquences des 2 dernières méthodes.
D'une manière similaire au premier script, dans le log système et dans un fichier, une trace des différentes opérations effectuées est sauvegardée.

Create User dans l'OU: si
FirstName - LastName: Alexandre-Bapst
DisplayName         : Alexandre.Bapst
Description         : Alexandre.Bapst dans l'OU
si (Service Informatique-Département Génie Mécanique)
TelephoneNumber     : 3565
EmailAddress        : Alexandre.Bapst@epfl.ch
EmployeeID          : 129330
Title               : apprenti
Department          : EPFL-DGM
Division            : SG-si
ExpirationDate      : 30.10.2003
LoginScript         : \\DGM-SG\Loginscripts\si.cmd
Profile             : \\DGM-SG\si\bapst\profile
HomeDirectory       : \\DGM-SG\si\bapst

Après l'exécution de ces 2 scripts, on obtient dans active directory:


Et pour un usager:

Les droits de chaque utilisateur sont de pouvoir modifier le contenu de son dossier et du dossier «trf». On peut facilement modifier ces droits dans le script par la commande cacls (voir plus haut).
Après son usage, la liste des usagers créée est mise à jour (users-current.txt). Pour éviter une re-création des usagers, le fichier d'origine est archivé.
Dans la durée de vie d'une unité, il est probable que la partition contenant le dossier de l'unité sera modifiée. Cela ne pose pas de problème car l'ensemble des accès aux fichiers se fait par l'intermédiaire de nom UNC (réseaux). Dans ce cas, il suffit de modifier le fichier de configuration lié à l'unité pour signifier ce changement (valide pour la création des nouveaux usagers).
L'ensemble des noms des fichiers des travaux effectués comporte un identificateur généré à partir de la date et de l'heure de création de l'opération facilitant l'organisation de la documentation des travaux effectués.
Ce travail doit permettre, en attendant la mise en place d'une professionnalisation de l'administration système, d'utiliser un outil permettant à un correspondant informatique de créer des structures informatiques adaptées à l'unité dont il a la charge sans occasionner un travail trop complexe.
Il permet de séparer clairement la gestion physique du serveur qui peut être déléguée à un administrateur système, de la gestion logique des usagers d'une unité ou d'un laboratoire qui doit rester proche des usagers dont il a la charge.

Les éléments de la charte de fonctionnement sont respectés, particulièrement les points concernant la documentation, plus faciles à faire respecter par un programme que par des personnes.

En réalité, «après un certain temps» d'après Fernand Reynaud.
Il intègre sous le même chapeau, JavaScript et VBScript qui sont des sous-éléments de Java et de Visual Basic, voire Perl pour les aficionados.
accéder par l'UNC = \\NETBIOS\ACRONYME


retour au sommaire du Flash informatique du mois d'octobre 2001
retour à la page principale des Flash informatique
Vos commentaires
© FI-8-1 du 23 octobre 2001