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

284

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 est lequel, comment ils diffèrent, et lequel est vraiment celui sous 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?

Vilx-
la source
Et en utilisant Windows Server 2012 avec ASP.NET 4.0 ou supérieur?
Kiquenet du

Réponses:

434

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 d'être un développeur Web et de configurer IIS. Alors voilà ...

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

IIS_IUSRS:

Ceci est analogue à l'ancien IIS_WPGgroupe IIS6 . Il s'agit d'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 IUSR_<MACHINE_NAME>compte local 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 IIS_IUSRSet IUSRvoir:

Présentation des 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é d'identité du pool d'applications, 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 synthétisé appelé IIS AppPool\DefaultAppPoolcréé pour la durée de vie du pool. Si vous supprimez le pool, ce compte n'existera plus. Lors de l'application d'autorisations aux fichiers et 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 des utilisateurs de votre ordinateur. Consultez 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 DefaultAppPoolci - dessus.

NETWORK SERVICE: -

Le NETWORK SERVICEcompte 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 sites Web. Un site Web exécuté 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 avant Windows 2008, vous pourriez avoir ASP.NET exécuter des demandes sous le compte Pool d'applications (généralement NETWORK SERVICE). Alternativement, vous pouvez configurer ASP.NET pour emprunter l'identité du compte anonyme du site via le <identity impersonate="true" />paramètre dans le web.configfichier localement (si ce paramètre est verrouillé, il devra être effectué par un administrateur dans lemachine.config fichier).

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

Dans IIS7.x / ASP.NET, le contrôle de l'emprunt d'identité est désormais configuré via la fonctionnalité de configuration d'authentification d'un site. Vous pouvez donc configurer pour qu'il s'exécute en tant qu'identité de pool IUSRou compte anonyme personnalisé spécifique.

LOCAL SERVICE:

Le LOCAL SERVICEcompte est un compte intégré utilisé par le gestionnaire de contrôle des services. 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 à ce sujet mais j'ajoute pour être complet. Il s'agit d'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 qu'il s'exécute sous cette identité.

Compte LocalSystem

En pratique:

Dans la pratique, l'approche préférée pour sécuriser un site Web (si le site obtient son propre pool d'applications - qui est la valeur par défaut pour un nouveau site dans la console MMC d'IIS7) est de s'exécuter sous Application Pool Identity. Cela signifie définir l'identité du site dans les paramètres avancés de son pool d'applications sur Application Pool Identity:

entrez la description de l'image ici

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

entrez la description de l'image ici

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

entrez la description de l'image ici

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

entrez la description de l'image ici

Lorsque vous venez d'appliquer des autorisations de fichiers et de dossiers, vous accordez à l'identité du pool d'applications tous les droits requis. Par exemple, si vous accordez l'identité du pool d'applications pour les ASP.NET v4.0autorisations du pool, vous pouvez le faire via l'Explorateur:

entrez la description de l'image ici

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

entrez la description de l'image ici

Ou vous pouvez le faire en utilisant l' ICACLS.EXEutilitaire:

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

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

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

Mettre à jour:

Je suis juste tombé sur cette excellente réponse de 2009 qui contient un tas d'informations utiles, qui valent la peine d'être lues:

La différence entre le compte «Système local» et le compte «Service réseau»?

Kev
la source
ne sont pas d'accord pour utiliser le même utilisateur pour l'authentification anonyme et l'identité du pool d'applications ... si vous devez donner à apppoolidentity une autorisation d'écriture dans un dossier ....
giammin
1
@giammin - pourquoi pas? Sauf si vous avez un cas particulier, l'utilisation d'identités de pool d'applications est l'approche la plus sécurisée à condition que chaque site se trouve dans son propre pool d'applications. Je déteste faire "l'appel à l'autorité" mais je suis ingénieur hébergeur partagé et responsable de la sécurité depuis 15 ans, cette approche est une évidence sur IIS7 +.
Kev
@Kev simplement je n'aime pas donner la permission d'écriture sur un site à l'utilisateur anonyme
giammin
1
Vos pools d'applications peuvent être encore plus spécifiques en utilisant IIS AppPool \ <name_of_apppool>. Sur une note connexe, IIS Express fonctionnera uniquement avec IIS AppPool \ ASP.NET v4.0 car les comptes virtuels du pool d'applications ne sont pas créés.
kevindaub
@ daub815 - IIS Express fonctionne différemment car il était destiné à s'exécuter sous votre connexion et démarrage Windows et à s'arrêter si nécessaire lors du développement et du débogage. En réalité, il n'utilise pas ou n'a aucune dépendance sur les pools d'applications ou l'infrastructure Full Fat IIS. Le but d'IIS Express était de donner aux développeurs autant de comportement, de saveur et de configuration que la réalité car le serveur Web jouet de VS était sévèrement limité ...
Kev