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 =. "
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:
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.
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é.
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.
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.
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"
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