Quel rôle joue « App Pool Identity » pour un pool d'applications ?

Lorsqu’on parle de la sécurité d’IIS 7.5, à ma connaissance :

App Pool Identity détermine sous quelle identité mon application web s’exécute.

La méthode d’authentification détermine sous quelle identité les clients sont authentifiés.

J’ai un dossier virtuel configuré comme ceci :

  • J’utilise l’authentification anonyme en m’attendant à ce que tous les clients soient authentifiés en tant que IUSR.

  • Je donne à IUSR le contrôle total du dossier.

  • Mon App Pool Identity est défini sur le compte XXX, qui n’a aucune permission sur le dossier. (J’ai fait cela intentionnellement)

Mais il s’avère que je ne peux pas parcourir les fichiers de ce dossier. Dès que je donne au compte XXX la permission d’accéder à ce dossier, tout fonctionne bien.

Alors quel rôle joue l’App Pool Identity dans l’authentification anonyme ? C’est totalement inattendu que je doive donner au compte App Pool Identity la permission d’accéder au dossier. Je pensais que l’authentification anonyme suffirait ?

Merci.

Il y a beaucoup de termes surchargés ici, et un changement entre IIS 7 et 7.5.

App Pool Identity vs Compte du pool d’applications

Commençons par l’identité du pool d’applications (identité avec un i minuscule, ce que j’appelle le Compte du pool d’applications pour éviter toute ambiguïté) :

Selon ma compréhension, le Compte du pool d’applications est le compte utilisé pour démarrer un pool d’applications, et l’identité que le pool d’applications assume lorsqu’il n’usurpe l’identité de personne d’autre.

Donc, quelle que soit l’identité que vous attribuez au pool d’applications, celui-ci va avoir besoin de pouvoir lire les fichiers dans le dossier de contenu : en particulier {mais pas uniquement} les fichiers web.config (qui font partie de la configuration IIS et contrôlent ce que le pool d’applications va faire).

S’il ne peut pas accéder à un dossier, il supposera qu’il pourrait y avoir un fichier web.config important (susceptible de tout changer) à l’intérieur, et affichera une erreur. Le Compte du pool d’applications a donc besoin d’un accès en Lecture à tous les dossiers de contenu.

ApplicationPoolIdentity

Pourquoi différencier le Compte du pool d’applications (l’identité du pool d’applications) de l’App Pool Identity ? Parce que ApplicationPoolIdentity (avec les majuscules spéciales) est un nouveau type de compte - un compte de service managé - introduit et défini par défaut dans IIS 7.5 / Windows 2008 R2, et disponible à partir de Windows 2008 SP2 également (mais pas par défaut).

Voir Application Pool Identities sur IIS.Net

Lorsque vous créez un site web sous 2008 R2 ou ultérieur via l’interface graphique :

  • un pool d’applications sera créé pour héberger ce site web, et

  • le type de compte sera ApplicationPoolIdentity, au lieu de Network Service (la valeur par défaut sous 2008), Local Service ou Local System

  • une identité virtuelle, IIS AppPools\NomDuPoolDApplications, sera mise à disposition pour être utilisée comme principal de sécurité sur la machine locale

Avec 2008 RTM, le compte par défaut du pool d’applications était Network Service plus un identifiant/différenciateur unique du pool d’applications ; le nouveau type de compte AppPoolIdentity de R2/SP2 est un compte similaire à Network Service (c’est-à-dire qu’il représente l’ordinateur lors des connexions externes), mais empêche l’usurpation d’identité d’un autre pool d’applications au sein de la même machine.

Retour à la question originale :

Le compte du pool d’applications définit sous quelle identité votre application s’exécute lorsqu’elle n’usurpe l’identité de personne d’autre

La méthode d’authentification décrit comment vous allez authentifier les clients (afin d’usurper leur identité)

Le compte utilisateur anonyme définit sous quelle identité vous allez vous exécuter lorsque vous usurpez l’identité d’un utilisateur pour une requête qui n’est pas authentifiée - IUSR est un tel utilisateur.

À noter, avec IIS 7.5+, vous pouvez définir le compte utilisateur anonyme comme étant l’Application Pool Identity (dans les propriétés de la méthode d’authentification anonyme), ce qui pourrait simplifier l’isolation et la sécurisation du contenu pour un site web donné.

Définissez les permissions en utilisant le format IIS AppPool\NomDeVotreSite pour le nom (voir cet article).