Sous Windows Server 2008 avec ASP.NET 4.0 installé, il existe toute une série de comptes d’utilisateurs associés. Je ne comprends pas lequel est lequel, en quoi ils diffèrent et quel est VRAIMENT celui sous lequel mon application est exécutée. Voici une liste:
C'est quoi?
C’est une très bonne question et, malheureusement, de nombreux développeurs ne posent pas assez de questions sur la sécurité IIS/ASP.NET dans le contexte d’être un développeur Web et de configurer IIS. Alors voilà ....
Pour couvrir les identités listées:
IIS_IUSRS:
Ceci est analogue à l'ancien groupe IIS6 _IIS_WPG
_. C'est un groupe intégré dont la sécurité est configurée de sorte que tout membre de ce groupe puisse agir en tant qu'identité de pool d'applications.
IUSR:
Ce compte est analogue à l'ancien compte local _IUSR_<MACHINE_NAME>
_ qui était l'utilisateur anonyme par défaut pour les sites Web IIS5 et IIS6 (c'est-à-dire celui configuré via l'onglet Sécurité du répertoire des propriétés d'un site).
Pour plus d'informations sur _IIS_IUSRS
_ et IUSR
, voir:
Présentation des comptes d'utilisateurs et de groupes intégrés dans IIS 7
DefaultAppPool:
Si un pool d'applications est configuré pour être exécuté à l'aide de la fonctionnalité Identité de pool d'applications, un compte "synthétisé" appelé _IIS AppPool\<pool name>
_ sera créé à la volée pour être utilisé en tant qu'identité de pool. Dans ce cas, un compte synthétisé appelé _IIS AppPool\DefaultAppPool
_ sera créé pour la durée de vie du pool. Si vous supprimez le pool, ce compte n'existera plus. Lorsque vous appliquez des autorisations aux fichiers et aux dossiers, ceux-ci doivent être ajoutés à l'aide de _IIS AppPool\<pool name>
_. Vous ne verrez pas non plus ces comptes de pool dans le Gestionnaire d’utilisateur de votre ordinateur. Voir ci-dessous pour plus d'informations:
ASP.NET v4.0:
-
Il s'agira de l'identité du pool d'applications pour le pool d'applications ASP.NET v4.0. Voir DefaultAppPool
ci-dessus.
NETWORK SERVICE:
-
Le compte _NETWORK SERVICE
_ est une identité intégrée introduite sous Windows 2003. _NETWORK SERVICE
_ est un compte disposant de peu de privilèges sous lequel vous pouvez exécuter vos pools d'applications et vos sites Web. Un site Web fonctionnant dans un pool Windows 2003 peut toujours emprunter l'identité du compte anonyme du site (IUSR_ ou tout ce que vous avez configuré en tant qu'identité anonyme).
Dans ASP.NET avant Windows 2008, vous pouviez avoir des demandes d'exécution ASP.NET sous le compte de pool d'applications (généralement _NETWORK SERVICE
_). Vous pouvez également configurer ASP.NET pour emprunter l'identité du compte anonyme du site via le paramètre _<identity impersonate="true" />
_ du fichier _web.config
_ localement (si ce paramètre est verrouillé, il devra être effectué par un administrateur du fichier _machine.config
_ fichier).
La définition de _<identity impersonate="true">
_ est courante dans les environnements d'hébergement partagé dans lesquels des pools d'applications partagés sont utilisés (en conjonction avec des paramètres de confiance partielle pour empêcher le dénouement du compte avec emprunt d'identité).
Dans IIS7.x/ASP.NET, le contrôle de l'emprunt d'identité est maintenant configuré via la fonctionnalité de configuration de l'authentification d'un site. Vous pouvez donc configurer l'exécution en tant qu'identité de pool, IUSR
ou un compte anonyme personnalisé.
LOCAL SERVICE:
Le compte _LOCAL SERVICE
_ est un compte intégré utilisé par le gestionnaire de contrôle de service. Il dispose d'un ensemble minimal de privilèges sur l'ordinateur local. Son domaine d'utilisation est assez limité:
LOCAL SYSTEM:
Vous n'avez pas posé de question à propos de celui-ci, mais j'ajoute par souci d'exhaustivité. Ceci est un compte intégré local. Il a des privilèges et une confiance assez étendus. Vous ne devez jamais configurer un site Web ou un pool d'applications pour s'exécuter sous cette identité.
En pratique:
Dans la pratique, l’approche privilégiée pour sécuriser un site Web (si le site dispose de son propre pool d’applications - ce qui est la valeur par défaut pour un nouveau site dans la console MMC d’IIS7) consiste à exécuter l'exécution sous _Application Pool Identity
_. Cela signifie que vous définissez l'identité du site dans les paramètres avancés de son pool d'applications sur _Application Pool Identity
_:
Sur le site Web, vous devez ensuite configurer la fonction d’authentification:
Faites un clic droit et éditez l'entrée Authentification anonyme:
Assurez-vous que "Identité du pool d'applications" est sélectionné:
Lorsque vous appliquez des autorisations de fichiers et de dossiers, vous accordez l’identité du pool d’applications, quels que soient les droits requis. Par exemple, si vous accordez l'identité du pool d'applications pour les autorisations de pool _ASP.NET v4.0
_, vous pouvez le faire via l'Explorateur:
Cliquez sur le bouton "Vérifier les noms":
Ou vous pouvez le faire en utilisant l'utilitaire _ICACLS.EXE
_:
icacls c:\wwwroot\mysite/grant "AppPool IIS\ASP.NET v4.0" :( CI) (OI) (M)
... ou ... si le pool d'applications de votre site s'appelle BobsCatPicBlog
then:
icacls c:\wwwroot\mysite/grant "IIS AppPool\BobsCatPicBlog" :( CI) (OI) (M)
J'espère que cela aide à clarifier les choses.
Mise à jour:
Je viens de tomber sur cette excellente réponse de 2009 qui contient de nombreuses informations utiles qui méritent d'être lues:
La différence entre le compte "Système local" et le compte "Service réseau"?