Système de configuration dans IIS 7
par Walter Oliver
Vue d’ensemble
IIS 7 introduit un tout nouveau système de configuration, au cœur de toutes les nouvelles fonctionnalités liées à l’administration. Le système de configuration est basé sur des fichiers XML distribués, en texte clair, qui contiennent les paramètres de configuration pour l’ensemble de la plateforme de serveur web, y compris IIS, ASP.NET et d’autres composants, tels que FTP 7.5 ; ils peuvent éventuellement être définis sur les répertoires de contenu avec le contenu web s’ils sont déverrouillés pour ce niveau. Notez que les paramètres de configuration FTP 6.0 sont stockés dans le MetaBase.
Différents niveaux de la hiérarchie de configuration peuvent être délégués par l’administrateur de l’ordinateur à d’autres utilisateurs, tels que le propriétaire du site ou le développeur d’applications. Sécuriser les valeurs par défaut et le verrouillage obsolète limite l’accès en écriture aux paramètres de configuration de l’administrateur de l’ordinateur uniquement (les exceptions sont quelques paramètres spécifiques au site, tels que DefaultDocument) ; Toutefois, les fonctionnalités de verrouillage sophistiquées et granulaires permettent le déverrouillage sécurisé et la délégation de la gestion des paramètres de configuration spécifiques à davantage d’utilisateurs, pour leur étendue de l’espace de noms web. Le système est rétrocompatible au niveau de l’API avec les versions précédentes d’IIS (une fois la couche de compatibilité MetaBase installée).
Au niveau racine (ou global), il existe deux fichiers distincts :
- system32\inetsrv\config\applicationHost.config : contient les valeurs par défaut globales pour les paramètres de serveur web (IIS).
- \Windows\Microsoft.NET\Framework\v4.0.30319\Config\machine.config : contient les valeurs par défaut globales pour les paramètres du .NET Framework, y compris certains des ASP.NET (le reste des paramètres se trouvent dans le fichier web.config dans le même dossier, ce qui est parfois appelé le fichier web.config racine).
La raison pour laquelle il existe toujours deux fichiers distincts est que les deux technologies sont différentes (selon la planification et les produits). IIS fait partie de Windows et le .NET Framework peut être version indépendante.
Dans les répertoires de contenu web, il peut y avoir des fichiers web.config facultatifs qui contrôlent le comportement de leur niveau de hiérarchie et vers le bas. Ils peuvent être locaux ou distants (si le répertoire de contenu se trouve sur un partage UNC, par exemple). Ils peuvent contenir IIS, ASP.NET ou tout autre paramètre de configuration du .NET Framework qui peut être spécifié à leur niveau. Par défaut, il n’existe aucun fichier web.config.
Hiérarchie
En termes de hiérarchie d’héritage, le fichier racine est machine.config, puis web.config au même répertoire (appelé racine web.config), puis applicationHost.config, puis les fichiers web.config facultatifs le long de l’espace de noms, comme illustré dans le diagramme suivant.
Sections
Dans un fichier de configuration, les paramètres sont organisés de manière structurée, en fonction d’une unité appelée « section ». La section Configuration est un groupe de paramètres liés logiquement qui peuvent être déployés dans son ensemble, ou désinscrire à partir du système dans son ensemble et sont généralement consommés par un seul module de serveur.
En d’autres termes, presque tous les modules d’exécution qui s’exécutent dans le processus de travail ont une section de configuration correspondante pour celle-ci. La section Configuration est également l’unité d’extensibilité : l’ajout de nouveaux paramètres au schéma de configuration est effectué en étendant une section existante ou en y ajoutant une ou plusieurs sections.
Les sections sont regroupées dans des collections liées logiquement, appelées « groupes de sections ». Les groupes de sections ne sont pas l’unité de déploiement ou d’inscription, ni toute autre opération substantielle (par exemple, verrouillage, chiffrement). Ils n’ont pas de paramètres en eux. Leur objectif est de structurer davantage l’organisation des paramètres et d’éviter une longue liste plate de sections de configuration. Ils sont utilisés pour créer une hiérarchie de paramètres. Ils ont donc des relations entre eux (parent/enfant).
En d’autres termes, les groupes de sections peuvent être imbriqués. Une section donnée appartient toujours à un groupe de sections uniquement et ne peut pas contenir d’autres sections (ou groupes de sections). Un groupe de sections donné peut appartenir à un groupe de sections parent et peut contenir zéro ou plusieurs groupes de sections enfants. Il contient généralement plusieurs sections ; sinon, il n’y a pas de bonne raison de l’avoir en premier lieu (toutefois, les clients peuvent étendre le schéma en créant leurs propres groupes de sections qui ont une seule section, quelle que soit la raison).
Voici un exemple illustrant les sections et les groupes de sections :
<!-- section group for web server configuration -->
<system.webServer>
<!-- section group for web server security configuration -->
<security>
<!-- section group for web server authentication configuration -->
<authentication>
<!-- three sections for authentication -->
<basicAuthentication ... />
<windowsAutnentication ... />
<anonymousAuthentication ... />
</authentication>
</security>
</system.webServer>
Chaque section a un nom. Le nom court est le nom de la section elle-même, et le nom long est le nom complet, y compris tous les groupes de sections contenants. Par exemple, le nom complet de « windowsAuthentication » est « system.webServer/security/authentication/windowsAuthentication ». Cette organisation hiérarchique permet des sections futures (et des groupes de sections) portant le même nom, mais sous différents groupes de sections.
Chaque niveau de l’espace de noms d’URL peut avoir une configuration associée. La configuration d’un niveau donné hérite des niveaux enfants, sauf si elle est spécifiquement remplacée par un niveau enfant. Un moyen simple d’obtenir une configuration par URL consiste à utiliser des fichiers web.config, dans les dossiers de système de fichiers physiques mappés aux chemins d’accès virtuels. Au niveau racine (au niveau de l’ordinateur), des fichiers distincts doivent être utilisés, en fonction du groupe de sections de configuration (qui sera défini plus loin dans le document ; à des fins actuelles, considérez-le comme le nom de l’élément XML contenant la configuration) :
Groupe de sections | Description | Fichier racine |
---|---|---|
system.applicationHost | Système d’activation Windows : modèle de processus | System32\inetsrv\config\applicationHost.config |
system.webServer | Serveur Web: IIS | System32\inetsrv\config\applicationHost.config |
system.web | ASP.NET | Windows\microsoft.net\framework\v2.0.50727\config\web.config |
Système.* | Autre framework .NET | Windows\microsoft.net\framework\v2.0.50727\config\machine.config |
[Microsoft other] | Microsoft autre | Windows\microsoft.net\framework\v2.0.50727\config\machine.config |
[custom] | Tiers | Machine.config ou root web.config ou applicationHost.config, jusqu’à 3rd-party / customer |
Le format de persistance de la configuration est XML ; il est donc utile de décrire les mappages entre les unités organisationnelles de configuration et la terminologie XML. Les groupes de sections et les sections sont des éléments XML. Dans une section, les paramètres sont organisés en unités plus petites qui suivent étroitement la terminologie XML :
Unité de configuration | Terminologie XML | Description |
---|---|---|
Élément de configuration | Élément XML | Contient d’autres unités enfants ; n’a pas de valeur. |
Collection de configuration | Élément XML | Cas privé d’élément : contient un groupe d’éléments sous la forme d’ajouter/supprimer/effacer. |
Pages de propriétés de configuration | Attribut XML | Contient uniquement une valeur ; ne contient pas d’unités enfants. |
Le système de configuration est piloté par un schéma déclaratif, à son cœur. Le schéma de configuration s’étend sur plusieurs fichiers, qui résident à un emplacement connu : system32\inetsrv\config\schema. Par défaut, seuls les administrateurs de machine ont accès à ce dossier. Les clients ou les tiers peuvent ajouter des fichiers de schéma pour leurs sections personnalisées en les copiant dans ce répertoire. Le système de configuration les récupère automatiquement au démarrage, au cours du processus de configuration de l’appelant. Si le système de configuration est déjà en cours d’exécution, il ne récupère pas les modifications apportées aux fichiers de schéma ou aux nouveaux fichiers.
Ne modifiez pas iis ou d’autres fichiers de schéma installés dans ce répertoire, car des erreurs peuvent entraîner un schéma endommagé et une incapacité du serveur à démarrer.
Remarque
Il n’existe aucune interface programmatique de haut niveau pour obtenir et définir des fichiers de schéma, à court d’API d’accès aux fichiers traditionnels et d’analyse/modification XML. Il est toujours recommandé de sauvegarder l’état sensible comme le dossier de schéma avant d’y apporter des modifications.
Trois fichiers composent le schéma unifié de la plateforme de serveurs web :
- IIS_schema.xml : couvre les paramètres et groupes de sections du système d’activation Windows et du serveur web IIS.
- ASPNET_schema.xml : couvre les paramètres de ASP.NET dans le groupe de sections.
- FX_schema.xml : couvre d’autres paramètres du .NET Framework dans différents groupes de sections.
Vous trouverez également FTP_schema.xml si la fonctionnalité FTP IIS 7 est installée.