Que 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 liés, et je ne peux pas comprendre lequel est lequel, comment ils diffèrent, et lequel est vraiment celui que mon application fonctionne sous. Voici une liste:

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

Qu'est-ce que c'est?

245
demandé sur Kev 2011-04-20 15:05:55

1 réponses

C'est une très bonne question et malheureusement beaucoup de développeurs ne posent pas assez de questions sur IIS/ASP.NET security dans le contexte d'être un développeur web et la mise en place D'IIS. Donc, ici, va....

pour couvrir les identités énumérées:

IIS_IUSRS:

analogue à l'ancien groupe IIS6 IIS_WPG . C'est un groupe intégré avec sa sécurité configurée de telle sorte que tout membre de ce groupe peut agir comme une identité de pool de demande.

IUSR:

ce compte est analogue à l'ancien IUSR_<MACHINE_NAME> compte local qui était l'utilisateur anonyme par défaut pour les sites IIS5 et IIS6 (c'est-à-dire celui configuré via l'onglet de sécurité des répertoires des propriétés d'un site).

pour plus d'informations sur IIS_IUSRS et IUSR voir:

Compréhension Intégrée Dans les Comptes Utilisateur et de Groupe dans IIS 7

DefaultAppPool:

si un pool d'applications est configuré pour fonctionner en utilisant la fonction identité du Pool d'applications, alors un compte" synthétisé "appelé IIS AppPool\<pool name> sera créé à la volée pour être utilisé comme identité du pool. Dans ce cas, il y aura un compte-rendu synthétisé appelé IIS AppPool\DefaultAppPool créé pour la durée de vie du piscine. Si vous supprimez la piscine puis ce compte n'existe plus. Lors de l'application des permissions aux fichiers et dossiers, ceux-ci doivent être ajoutés en utilisant IIS AppPool\<pool name> . Vous ne verrez pas non plus ces comptes de pool dans votre gestionnaire d'utilisateurs d'ordinateurs. Pour plus d'informations, voir:

Pool D'Identités

ASP.NET v4.0: -

ce sera être L'identité du Pool D'applications ASP.NET v4.0 Bassin D'Application. 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 Bas privilégié sous lequel vous pouvez exécuter vos pools d'application et des sites web. Un site web qui tourne dans un pool Windows 2003 peut toujours usurper l'identité du compte anonyme du site (IUSR_ ou quoi que vous configuré comme l'identité anonyme).

In ASP.NET avant Windows 2008 vous pourriez avoir ASP.NET exécutez les requêtes dans le compte du Pool D'applications (habituellement NETWORK SERVICE ). Vous pouvez aussi configurer ASP.NET pour imiter le compte anonyme du site via le paramètre <identity impersonate="true" /> dans le fichier web.config localement (si ce paramètre est verrouillé, il devra être fait par un administrateur dans le fichier machine.config ).

Réglage <identity impersonate="true"> est commun dans les environnements d'hébergement partagé où des pools d'applications partagées sont utilisés (en conjonction avec des paramètres de confiance partielle pour empêcher la dévolution du compte usurpé).

In IIS7.X / ASP.Le contrôle D'usurpation D'identité NET est maintenant configuré via la fonction de configuration D'authentification d'un site. Ainsi, vous pouvez configurer pour exécuter comme l'identité de la piscine, IUSR ou un compte personnalisé anonyme.

LOCAL SERVICE:

le compte LOCAL SERVICE est un compte intégré utilisé par le gestionnaire du contrôle des services. Il a un minimum de privilèges sur l'ordinateur local. Son champ d'application est assez limité:

Compte De Services Locaux

"

LOCAL SYSTEM:

vous n'avez pas demandé à propos de celui-ci, mais j'ajoute par souci d'exhaustivité. C'est un compte local intégré. Il a des privilèges assez étendus et la confiance. Vous ne devriez jamais configurer un site web ou un pool d'applications pour fonctionner sous cette identité.

Compte Du Système Local

Dans La Pratique:

dans la pratique l'approche préférée pour sécuriser un site web (si le site obtient son propre pool d'application - qui est la valeur par défaut pour un nouveau site dans le MMC de L'IIS7) doit être exécuté sous Application Pool Identity . Cela signifie définir L'identité du site dans les paramètres avancés de son Pool D'applications à Application Pool Identity :

enter image description here

dans le site Web, vous devez alors configurer la fonctionnalité D'authentification:

enter image description here

clic droit et modifier L'entrée D'authentification anonyme:

enter image description here

S'assurer que " identité du bassin D'Application " est sélectionné:

enter image description here

lorsque vous venez à appliquer les permissions de fichiers et de dossiers, vous accordez l'identité du Pool de demandes quels que soient les droits requis. Par exemple, si vous accordez l'identité de la piscine d'application pour les permissions de la piscine ASP.NET v4.0 , alors vous pouvez le faire via Explorer:

enter image description here

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

enter image description here

ou vous pouvez le faire en utilisant le ICACLS.EXE utility:

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

...ou...si le pool d'applications de votre site est appelé BobsCatPicBlog alors:

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

j'espère que cela aidera à clarifier les choses.

Mise à jour:

je viens de tomber sur cette excellente réponse de 2009 qui contient un tas d'informations utiles, qui valent bien une lecture:

la différence entre le compte "système Local" et le compte "SERVICE réseau"?

386
répondu Kev 2017-05-23 12:26:20