web-dev-qa-db-fra.com

Comment attribuer des autorisations au compte ApplicationPoolIdentity

Dans IIS 7 sur Windows Server 2008, les pools d'applications peuvent être exécutés en tant que 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 nulle part en tant que groupe. Rien de tel à distance n'apparaît nulle part. Lorsque je recherche des utilisateurs locaux, des groupes et des comptes intégrés, cela n'apparaît pas dans la liste, et rien de semblable n'apparaît dans la liste. Que se passe-t-il?

Je ne suis pas le seul à avoir ce problème: voir Problème avec ApplicationPoolIdentity dans IIS 7.5 + Windows 7 pour un exemple.


"Il s'agit malheureusement d'une limitation du sélecteur d'objets sur Windows Server 2008/Windows Vista - comme plusieurs personnes l'ont déjà découvert, vous pouvez toujours manipuler l'ACL pour l'identité du pool d'applications à l'aide d'outils de ligne de commande tels que icacls =. "

266
Triynko

Mise à jour: La question d'origine était pour 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 tapant directement. Le nom est au format IIS APPPOOL\{nom du pool d'applications}. Par exemple: IIS APPPOOL\DefaultAppPool).

IIS APPPOOL\{app pool name}

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

  • Saisissez 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 de Microsoft Docs: Identités du pool d'applications> Sécurisation des ressources

Réponse d'origine: (pour Windows Server 2008) Il s'agit d'une excellente fonctionnalité, mais comme vous l'avez mentionné, elle n'est pas encore entièrement implémentée. Vous pouvez ajouter l'identité du pool d'applications à partir de l'invite de commandes avec quelque chose comme icacls, puis vous pouvez 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 de groupe) appelé DefaultAppPool. Vous pouvez maintenant modifier les autorisations.

Cependant, vous n'avez pas du tout besoin de l'utiliser. C'est un bonus que vous pouvez utiliser si vous le souhaitez. Vous pouvez utiliser l'ancienne méthode pour créer un utilisateur personnalisé par pool d'applications et affecter l'utilisateur personnalisé au disque. Cela a une prise en charge complète de l'interface utilisateur.

Cette méthode d'injection SID est agréable car elle vous permet d'utiliser un seul utilisateur mais d'isoler complètement chaque site les uns des autres 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 Service est en cours d'exécution. C'est le service qui mappe les utilisateurs du pool d'applications aux comptes Windows.

291

Vous devez vous assurer que le From this location est défini sur local machine et non le domaine.

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

24
Alan

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

4
Jimbo

Après avoir lu @Scott Forsyth - réponse MVP, j'ai essayé de redémarrer le service d'assistance de l'hôte d'application. Cela a résolu le problème pour moi.

3
Roger

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

0
Muhamad Faried

J'utilisais WS8 R2 et je n'ai pas pu ajouter IIS APPPOOL\DefaultAppPool via l'Explorateur Windows. La seule façon dont cela fonctionnait était via la ligne de commande:

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

0
Denis Tse