Quels sont tous les comptes d’utilisateur pour IIS / ASP.NET et en quoi diffèrent-ils?

Sous Windows Server 2008 avec ASP.NET 4.0 installé, il y a toute une série de comptes d’utilisateurs associés, et je ne peux pas comprendre lequel, comment, comment est-il vraiment celui sur lequel mon application s’exécute. Voici une liste:

  • IIS_IUSRS
  • IUSR
  • DefaultAppPool
  • ASP.NET v4.0
  • NETWORK_SERVICE
  • SERVICE LOCAL.

Qu’est ce que c’est quoi?

C’est une très bonne question et, malheureusement, de nombreux développeurs ne posent pas suffisamment de questions sur la sécurité IIS / ASP.NET dans le contexte du développement Web et de la configuration d’IIS. Alors voilà …

Pour couvrir les identités répertoriées:

IIS_IUSRS:

Ceci est analogue à l’ancien groupe IIS6 IIS_WPG . Il s’agit d’un groupe intégré dont la sécurité est configurée de telle sorte que tout membre de ce groupe peut agir en tant qu’identité de pool d’applications.

IUSR:

Ce compte est analogue à l’ancien IUSR_ local IUSR_ 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é de répertoire des propriétés d’un site).

Pour plus d’informations sur IIS_IUSRS et IUSR voir:

Comprendre les comptes d’utilisateurs et de groupes intégrés dans IIS 7

DefaultAppPool:

Si un pool d’applications est configuré pour s’exécuter à l’aide de la fonctionnalité Identité du pool d’applications, un compte “synthétisé” appelé IIS AppPool\ sera créé à la volée pour être utilisé comme identité du pool. Dans ce cas, il y aura un compte synthétisé appelé IIS AppPool\DefaultAppPool créé pour la durée de vie du pool. Si vous supprimez le pool, ce compte n’existera plus. Lors de l’application des permissions sur les fichiers et dossiers, ceux-ci doivent être ajoutés à l’aide d’ IIS AppPool\ . Vous ne verrez pas non plus ces comptes de pool dans le Gestionnaire des utilisateurs de votre ordinateur. Voir les informations suivantes pour plus d’informations:

Identités du pool d’applications

ASP.NET v4.0:

Ce sera 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 sur Windows 2003. NETWORK SERVICE est un compte à faible privilège sous lequel vous pouvez exécuter vos pools d’applications et vos sites Web. Un site Web s’exécutant dans un pool Windows 2003 peut toujours emprunter l’identité du compte anonyme du site (IUSR_ ou tout ce que vous avez configuré comme identité anonyme).

Dans ASP.NET antérieur à Windows 2008, vous pouviez avoir des demandes d’exécution ASP.NET sous le compte du 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 dans le fichier web.config en local (si ce paramètre est verrouillé, il doit être effectué par un administrateur de la machine.config fichier machine.config ).

La définition de est courante dans les environnements d’hébergement partagé où des pools d’applications partagés sont utilisés (conjointement avec des parameters de confiance partielle pour empêcher le désengagement du compte représenté).

Dans IIS7.x / ASP.NET, le contrôle d’emprunt d’identité est désormais configuré via la fonctionnalité de configuration d’authentification d’un site. Vous pouvez donc configurer pour exécuter l’identité du pool, IUSR ou un compte anonyme personnalisé spécifique.

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 minimum de privilèges sur l’ordinateur local. Son utilisation est relativement limitée:

Compte LocalService

LOCAL SYSTEM:

Vous n’avez pas demandé à propos de celui-ci mais j’ajoute pour la complétude. Ceci est un compte intégré local. Il a assez de privilèges et de confiance. Vous ne devez jamais configurer un site Web ou un pool d’applications pour qu’il s’exécute sous cette identité.

Compte LocalSystem

En pratique:

En pratique, la méthode privilégiée pour sécuriser un site Web (si le site dispose de son propre pool d’applications, qui est la valeur par défaut d’un nouveau site dans la console MMC d’IIS7), doit être exécutée sous Application Pool Identity . Cela signifie définir l’identité du site dans les parameters avancés de son pool d’ Application Pool Identity :

entrer la description de l'image ici

Sur le site Web, vous devez alors configurer la fonctionnalité d’authentification:

entrer la description de l'image ici

Cliquez avec le bouton droit et modifiez l’entrée Authentification anonyme:

entrer la description de l'image ici

Assurez-vous que “Identité du pool d’applications” est sélectionnée:

entrer la description de l'image ici

Lorsque vous appliquez les permissions de fichiers et de dossiers, vous accordez à l’identité du pool d’applications les droits requirejs. Par exemple, si vous accordez l’identité du pool d’applications pour les permissions du pool ASP.NET v4.0 , vous pouvez soit le faire via l’Explorateur:

entrer la description de l'image ici

Cliquez sur le bouton “Vérifier les noms”:

entrer la description de l'image ici

Ou vous pouvez le faire en utilisant l’utilitaire ICACLS.EXE :

  icacls c: \ wwwroot \ mysite / grant "IIS AppPool \ ASP.NET v4.0" :( CI) (OI) (M) 

… ou … si le pool d’applications de votre site s’appelle BobsCatPicBlog :

  icacls c: \ wwwroot \ mysite / grant "IIS AppPool \ BobsCatPicBlog" :( CI) (OI) (M) 

J’espère que cela aide à clarifier les choses.

Mettre à jour:

Je viens de tomber sur cette excellente réponse de 2009 qui contient un tas d’informations utiles, qui méritent d’être lues:

La différence entre le compte “Local System” et le compte “Network Service”?