web-dev-qa-db-fra.com

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

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:

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

C'est quoi?

265
Vilx-

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:

Identités du pool d'applications

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é:

Compte LocalService

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é.

Compte LocalSystem

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_:

enter image description here

Sur le site Web, vous devez ensuite configurer la fonction d’authentification:

enter image description here

Faites un clic droit et éditez l'entrée Authentification anonyme:

enter image description here

Assurez-vous que "Identité du pool d'applications" est sélectionné:

enter image description here

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:

enter image description here

Cliquez sur le bouton "Vérifier les noms":

enter image description here

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 BobsCatPicBlogthen:

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"?

409
Kev