> Tech > Hiérarchie de la métabase

Hiérarchie de la métabase

Tech - Par Renaud ROSSET - Publié le 24 juin 2010
email

Dès qu'on se plonge dans la métabase, on constate sa nature hiérarchique. La plupart des tâches associées à  un script consistent à  établir ou à  extraire une propriété située à  un noeud bien précis de la hiérarchie. Il faut bien respecter cette hiérarchie quand on écrit des scripts, sous peine

Hiérarchie de la métabase

de modifier
involontairement les propriétés
d’éléments enfants.
Utilisons maintenant Metabase
Explorer pour accomplir la même
tâche que iispath.js : trouver le chemin
de votre site Web par défaut.
Pour cela, nous allons explorer le
nom de chemin (c’est-à -dire, IIS ://localhost/
W3SVC/1/ ROOT) que nous
avons utilisé dans iispath.js. Agrandissez
l’objet serveur Web, puis
agrandissez les noeuds LM (LM signifie
local machine, représenté par localhost
dans l’argument nom de chemin
de iispath.js), W3SVC, 1, et
ROOT. Quand vous sélectionnez le
noeud ROOT, le panneau de droite
affiche plusieurs propriétés, dont
Path, comme on le voit figure 2.
Modifions maintenant iispath.js
pour que ses résultats affichent certaines
autres propriétés présentes
dans Metabase Explorer. Par exemple,
pour sortir les documents par
défaut, modifiez le script online de la
façon suivante :

Wscript.Echo (« Default Documents:  »
+ GetObject
(« IIS://localhost/W3SVC/1/ROOT »)
.DefaultDoc);

Notons que les deux versions de
iispath.js utilisent la fonction JScript
GetObject pour extraire les données
de configuration IIS. Cette fonction
accède à  un objet d’une classe spécifique
(aussi appelée Key Type), selon
l’argument de nom de chemin utilisé.
(Quand vous utilisez Metabase
Explorer pour visualiser les propriétés
d’un objet, la classe de celui-ci apparaît
comme le KeyType.) Le tableau 1
montre quelques exemples des classes
auxquelles la fonction GetObject peut
accéder. (La documentation IIS décrit
les propriétés et méthodes que chaque
classe supporte, les fonctions de ces
propriétés, et comment les modifier.)
Après avoir accédé à  un objet dérivé
de l’une de ces classes, vous pouvez
l’interroger quant à  ses propriétés
afin de pouvoir déterminer des paramètres
spécifiques, comme le chemin
d’un répertoire virtuel ou l’adresse IP
d’un site Web. Vous pouvez utiliser des scripts pour définir les valeurs de ces
paramètres ou, dans certains cas, invoquer
des actions prédéfinies, appelées
méthodes (comme la méthode Backup
qui sauvegarde la métabase.) Dans
notre exemple de nom de chemin, examinons
les objets à  chaque niveau de la
hiérarchie.
Le noeud machine (classe IIsComputer).
Le fait de donner le nom de
chemin IIS ://localhost comme un argument
à  la fonction GetObject fait que le
script renvoie un objet avec la classe
IIsComputer ; l’objet représente le
noeud machine. Cette classe n’a qu’un
petit nombre de propriétés et de méthodes
propres à  la machine, comme
les méthodes Backup et Restore.
Le listing 1 montre un exemple de
script qui utilise la méthode Backup
pour sauvegarder la métabase IIS. Une
fois ce script exécuté, le fichier
MyBackup.md0 apparaîtra dans le répertoire
%mydir%\system32\inetsrvmetaback du système. La fonction
Backup permet d’indiquer un numéro
de version de sauvegarde. Si vous voulez
ignorer ce détail, vous pouvez
mettre le numéro à  -1, comme dans le
renvoi A du listing 1. IIS sélectionnera
alors le numéro de version disponible
suivant.
Le listing 2 montre un exemple de
script qui utilise la méthode Restore
pour restaurer la sauvegarde. Le code
au renvoi A du listing 2 ordonne à  IIS
d’utiliser la version de sauvegarde existante
la plus haute. Si vous voulez restaurer
une version de sauvegarde particulière,
vous pouvez remplacer « -2 »
par un numéro de version spécifique
(« 100 », par exemple). Pour vérifier
que la sauvegarde et la restauration de
votre script fonctionne correctement,
invoquez le script backup, supprimer
un répertoire virtuel de test puis invoquez
le script restore et vérifiez que le
répertoire virtuel supprimé est restauré.
La classe IIsComputer est aussi le
point d’entrée d’une ou plusieurs machines
IIS vers l’administration à  distance.
Au lieu d’utiliser localhost dans
le nom de chemin quand vous appelez
l’objet IIsComputer, référencez simplement
le nom de machine du système
à  distance (par exemple, iisgeekserver)
ou son adresse IP. Cette
fonctionnalité d’administration à  distance
agit par l’intermédiaire de
DCOM (Distributed COM). Si des références
différentes sont nécessaires
pour se connecter à  la machine distante, vous devez utiliser la méthode
OpenDSObject de l’interface noyau
ADSI IADsOpenDSObject au lieu de la
fonction GetObject. Le script que
montre le listing 3 utilise d’abord la
fonction GetObject pour accéder au
provider IIS ADSI, puis appelle la méthode
OpenDSObject, passant le nom
d’utilisateur et mot de passe nécessaires
pour l’authentification sur le système
à  distance. (Pour plus d’informations
sur le provider, les interfaces et
les constantes d’ADSI, voir « Autres lectures
».) Attention : un mot de passe en
texte clair dans un script est dangereux
: on ne le fait ici que pour les besoins
de la démonstration. Il faut soit
stocker le script en lieu sûr, soit modifier
le script pour demander à  l’administrateur
son nom d’utilisateur et mot
de passe.
Le noeud W3SVC (classe IIsWeb-
Service). IIS peut héberger de multiples
services, dont les plus répandus
sont W3SVC, FTP, SMTP et NNTP.
Chacun de ces services a son propre
noeud sous le noeud machine. Quand
on utilise l’argument du nom de chemin
IIS ://localhost/W3SVC, on obtient
un objet W3Svc dérivé de la classe
IISWebService.
Le noeud Web site (classe IIsWeb-
Server). Un nom de classe comme
IIsWebSite (plutôt que IIsWebServer)
communiquerait plus clairement la
fonction du noeud du site Web. Chaque
site Web sur votre serveur est représenté
par un noeud séparé. Pour éviter
des références ambiguà«s, IIS attribue à 
chaque site Web un ID de site numérique
; l’ID du site Web par défaut est
toujours 1. Pour référencer le noeud du
site Web par défaut dans un script, par
conséquent, utilisez ce numéro dans
l’argument nom de chemin de la fonction
GetObject. Si vous avez plus d’un
site Web, vous pouvez utiliser Metabase
Explorer pour trouver l’ID de
chaque site. Dans IIS 5.0, le snap-in IIS
Manager affiche aussi l’ID du site, ou
bien vous pouvez utiliser la commande
suivante pour afficher tous les sites :

iisweb.vbs /query

Pour trouver l’ID d’un site IIS 5.1,
exécutez le script findweb.vbs, qui se
trouve par défaut dans le dossier %windir%Inetpub\Adminscripts ; pour des
sites IIS 5.0, IIS 4.0, le fichier est dénommé
findsite.vbs.
La documentation d’IIS recense
des centaines de propriétés au niveau
du site Web. La plupart d’entre elles
sont reflétées dans l’UI (User Interface)
IIS mais, certaines, comme la
propriété Realm, n’ont de support GUI
que dans IIS 6.0. La classe IIsWeb-
Server a aussi quelques méthodes
utiles, y compris celles servant à  démarrer,
arrêter ou suspendre un site
Web. De telles méthodes sont utiles
pour recycler à  distance un site Web.
Le listing 4 montre un exemple de
script destiné à  arrêter et démarrer le
site Web par défaut. Pour simplement
démarrer le site, utilisez le script du listing
5.
Le noeud répertoire virtuel (classe
IIsWebVirtualDir). Le noeud répertoire
virtuel ROOT, de la classe IIsWeb-
VirtualDir, sous chaque noeud site Web
représente l’emplacement racine de ce
site Web. (Bien que la racine d’un site
Web n’apparaisse pas comme un répertoire
virtuel dans la console IIS
Manager, elle apparaît comme un répertoire
virtuel dans la métabase.) On
peut définir des centaines de propriétés
sur ce noeud, y compris le chemin
physique que nous avons utilisé
comme exemple. La classe IIsWeb-
VirtualDir supporte aussi des méthodes intéressantes, dont plusieurs
fonctions AppCreate pour
créer des applications Web. On peut
aussi utiliser la fonction AppCreate
pour configurer le niveau d’isolation
d’une application IIS, et les extensions
AppCreate récentes (AppCreate3
dans IIS 6.0, AppCreate2 dans IIS
5.1 et IIS 5.0, par exemple) prennent
en compte les possibilités d’isolation
avancées d’IIS.
Une fois la hiérarchie de la métabase
assimilée, on est prêt à  apprendre
la manière de définir, créer et
chercher des données de configuration
IIS. Avec un tel bagage, vous
pourrez aborder des tâches auparavant
laborieuses et périlleuses comme
redéfinir le chemin home de votre
site Web d’un drive à  un autre, ou
créer un répertoire virtuel identique
dans 1 000 sites Web en quelques
minutes.

Téléchargez cette ressource

Cybersécurité des collectivités : Enjeux, Perspectives & Solutions

Cybersécurité des collectivités : Enjeux, Perspectives & Solutions

Villes, intercommunalités, métropoles, départements et régions sont particulièrement exposés aux risques de cybersécurité. Ce livre blanc Stormshield présente les défis cyber que rencontrent les collectivités, les solutions et perspectives pour qu’elles puissent assurer leur mission d’utilité publique, en toute sécurité.

Tech - Par Renaud ROSSET - Publié le 24 juin 2010