Comment attribuer des autorisations au compte ApplicationPoolIdentity

264

Dans IIS 7 sur Windows Server 2008, les pools d'applications peuvent être exécutés sous le compte "ApplicationPoolIdentity" au lieu du compte NetworkService.

Comment attribuer des autorisations à ce compte "ApplicationPoolIdentity". Il n'apparaît pas en tant qu'utilisateur local sur la machine. Il n'apparaît en tant que groupe nulle part. Rien à distance comme il apparaît n'importe où. Lorsque je recherche des utilisateurs locaux, des groupes et des comptes intégrés, il n'apparaît pas dans la liste et rien de similaire n'apparaît dans la liste. Que se passe-t-il?

Je ne suis pas le seul à avoir ce problème: voir la section Problèmes liés à ApplicationPoolIdentity dans IIS 7.5 + Windows 7 pour obtenir un exemple.


"Il s'agit malheureusement d'une limitation du sélecteur d'objet sous Windows Server 2008 / Windows Vista. Plusieurs personnes l'ayant déjà découvert, vous pouvez toujours manipuler la liste de contrôle d'accès pour l'identité du pool d'applications à l'aide d'outils de ligne de commande tels qu'icacls ."

Triynko
la source

Réponses:

290

Mise à jour: La question initiale concernait Windows Server 2008, mais la solution est plus simple pour Windows Server 2008 R2 et Windows Server 2012 (et Windows 7 et 8). Vous pouvez ajouter l'utilisateur via l'interface utilisateur NTFS en le saisissant directement. Le nom est au format IIS APPPOOL \ {nom du pool d'applications}. Par exemple: IIS APPPOOL \ DefaultAppPool.

IIS APPPOOL\{app pool name}

Note: Selon les commentaires ci-dessous, il y a deux choses à savoir:

  • Entrez la chaîne directement dans "Sélectionner un utilisateur ou un groupe" et non dans le champ de recherche.
  • Dans un environnement de domaine, vous devez d'abord définir l'emplacement sur votre ordinateur local.

Référence à l'article Microsoft Docs: Identités de pool d'applications> Sécurisation des ressources

Réponse d'origine: (pour Windows Server 2008) Il s'agit d'une fonctionnalité intéressante, mais comme vous l'avez mentionné, elle n'est pas encore totalement implémentée. Vous pouvez ajouter l'identité du pool d'applications à partir de l'invite de commande avec un nom similaire à icacls, puis la gérer à partir de l'interface graphique. Par exemple, exécutez quelque chose comme ceci à partir de l'invite de commande:

icacls c:\inetpub\wwwroot /grant "IIS APPPOOL\DefaultAppPool":(OI)(CI)(RX)

Ensuite, dans l'Explorateur Windows, accédez au dossier wwwroot et modifiez les autorisations de sécurité. Vous verrez à quoi ressemble un groupe (l'icône du groupe) appelé DefaultAppPool. Vous pouvez maintenant modifier les autorisations.

Cependant, vous n'avez pas besoin de l'utiliser du tout. C'est un bonus que vous pouvez utiliser si vous le souhaitez. Vous pouvez utiliser l'ancienne méthode de création d'un utilisateur personnalisé par pool d'applications et d'affecter l'utilisateur personnalisé à un disque. Cela a un support complet de l'interface utilisateur.

Cette méthode d’injection de SID est intéressante car elle vous permet d’utiliser un seul utilisateur tout en isolant complètement chaque site l’un de l’autre sans avoir à créer des utilisateurs uniques pour chaque pool d’applications. Assez impressionnant, et ce sera encore mieux avec le support de l'interface utilisateur.

Remarque: Si vous ne parvenez pas à trouver l'utilisateur du pool d'applications, vérifiez si le service Windows appelé Application Helper Application Helper est en cours d'exécution. C'est le service qui mappe les utilisateurs du pool d'applications vers les comptes Windows.

Scott Forsyth - MVP
la source
1
C'est une sorte de bête étrange, car ce n'est pas comme un groupe où l'utilisateur vit dans un groupe, et ce n'est pas comme un compte d'ordinateur contre un compte d'utilisateur qui sont complètement différents les uns des autres. Le compte de pool d'applications "chevauche" l'utilisateur d'identité du pool d'applications. Par exemple, vous pouvez avoir 5 pools d'applications utilisant le service réseau et 5 autres utilisant des comptes personnalisés, mais il s'agit de 10 comptes de pool d'applications gérés différents du système. Les avantages sont remarqués avec le dossier c: \ inetpub \ temp \ appPools où il est géré automatiquement et verrouille le système proprement. IIS les exploite bien. Notre utilisation sur les dossiers est facultative.
Scott Forsyth - MVP
29
Notez que si vous entrez "IIS APPPOOL \ DefaultAppPool" directement dans "Sélectionner un utilisateur ou un groupe" (au lieu de le rechercher) lors de la modification des autorisations, il sera correctement reconnu (testé sur Win7 x64 et Win2k8 R2 x64).
Milan Gardian
5
Vous avez raison pour Win7 et Win2k8 R2. Cela n'a pas été implémenté dans Win2k8 RTM, mais dans R2.
Scott Forsyth - MVP le
9
Enfin obtenu ceci - si vous tapez le nom de la piscine de l'application directement comme @Milan Gardian dit ci - dessus et changez le champ d'emplacement à la machine locale, alors cela fonctionne
Ciaran Bruen
4
Merci beaucoup pour les "deux choses à prendre en compte". Je suis tombé sur l'une et l'autre, et c'était une explication claire et simple des problèmes et de la manière de réaliser ce que je devais réaliser. C'est dommage, aucune documentation de MSDN n'était aussi claire.
Ian Grainger
22

Vous devez vous assurer que le From this locationchamp est défini sur le local machineet non sur le domaine.

J'ai eu le même problème et une fois que j'ai changé que cela a bien fonctionné.

Alan
la source
4

Vous devriez vraiment créer des groupes par "rôle" et attribuer à ce groupe les accès au système de fichiers. Ajoutez ensuite le pool d'applications aux groupes spécifiques à un rôle, si nécessaire. De cette façon , même si vous supprimez le pool d'application plus tard (et l'utilisateur virtuel GOES tapette ), vous n'avez pas à vous soucier de refaire toutes les autorisations, vous ajoutez juste le pool d'application de remplacement au groupe existant.

Jimbo
la source
3

Après avoir lu @Scott Forsyth - Réponse de MVP, j'ai tenté de redémarrer le service Application Host Helper. Cela a résolu le problème pour moi.

Roger
la source
0

J'exécutais WS8 R2 et je ne pouvais pas ajouter IIS APPPOOL\DefaultAppPoolvia l'Explorateur Windows. La seule façon dont cela fonctionnait était via la ligne de commande:

cacls [CHEMIN DE FICHIER] / T / E / G "APPUI IIS \ DefaultAppPool": C

Denis Tse
la source
2
Étrangement, je devais faire "IIS AppPool \ DefaultAppPool" pour que cela soit accepté. Remarquez le cas mélangé - toutes les majuscules, comme je l'ai fait la première fois, n'ont pas été acceptées par l'interface graphique.
Jeff McJunkin
0

Si cette question concerne la procédure à suivre pour exécuter _sp_send_dbmail dans la base de données msdb (à l'aide de la procédure stockée SQL send stockée Mail dans msdb), voici quelques solutions. Ajoutez le nom d'utilisateur de l'application .net de votre base de données (défini dans la chaîne de connexion de votre application .net) à l'utilisateur msdb avec l'appartenance au rôle "DatabaseMailUserRole".

Muhamad Faried
la source