web-dev-qa-db-fra.com

Vue d'ensemble des autorisations IIS7 - ApplicationPoolIdentity

Nous avons récemment effectué la mise à niveau vers IIS7 en tant que serveur Web principal et j'ai besoin d'une vue d'ensemble en termes d'autorisations. Auparavant, lorsque j'avais besoin d'écrire sur le système de fichiers, j'aurais donné à l'utilisateur AppPool (Service réseau) l'accès au répertoire ou au fichier.

Dans IIS7, par défaut, l'utilisateur AppPool est défini sur ApplicationPoolIdentity. Ainsi, lorsque je vérifie le gestionnaire de tâches, je constate qu'un compte d'utilisateur appelé "WebSite.com" exécute le processus IIS ("Site Web.com" étant le nom du site Web dans IIS).

Cependant, ce compte d'utilisateur n'existe pas si j'essaie de l'utiliser pour donner des autorisations. Alors, comment puis-je déterminer quel utilisateur donner les autorisations aussi?

Modifier ============================================== =============================

Voir ci-dessous pour le problème de la capture d'écran. Notre site web (www.silverchip.co.uk) fonctionne sous le nom d'utilisateur SilverChip.co.uk. Cependant, lorsque j'ajoute des sanctions, cet utilisateur n'existe pas!

enter image description here

================================= Voir Image AppPool

enter image description here

334
LiamB

ApplicationPoolIdentity est la meilleure pratique à utiliser dans IIS7 +. Il s’agit d’un compte créé de manière dynamique et non privilégié. Pour ajouter la sécurité du système de fichiers à un pool d'applications particulier, voir "Identités de pool d'applications" IIS.net . La version rapide:

Si le pool d'applications s'appelle "DefaultAppPool" (remplacez simplement le texte ci-dessous s'il porte un nom différent)

  1. Ouvrir l'explorateur Windows
  2. Sélectionnez un fichier ou un répertoire.
  3. Faites un clic droit sur le fichier et sélectionnez "Propriétés"
  4. Sélectionnez l'onglet "Sécurité"
  5. Cliquez sur le bouton "Modifier" puis sur "Ajouter"
  6. Cliquez sur le bouton "Emplacements" et assurez-vous de sélectionner la machine locale . ( Non le domaine Windows si le serveur en appartient à un.)
  7. Entrez " IIS AppPool\DefaultAppPool " dans la zone de texte "Entrez les noms des objets à sélectionner:". (N'oubliez pas de remplacer "DefaultAppPool" par ce que vous avez nommé votre pool d'applications.)
  8. Cliquez sur le bouton "Vérifier les noms" et cliquez sur "OK".
633
Jon Adams

N'oubliez pas d'utiliser le nom local du serveur, pas le nom de domaine, lors de la résolution du nom

IIS AppPool\DefaultAppPool

(juste un rappel parce que ça m'a fait trébucher un peu):enter image description here

75
James Toomey

Sous Windows Server 2008 (r2), vous ne pouvez pas attribuer une identité de pool d'applications à un dossier via Propriétés-> Sécurité. Vous pouvez le faire via une invite de la commande admin en utilisant les éléments suivants:

icacls "c:\yourdirectory" /t /grant "IIS AppPool\DefaultAppPool":(R)
26
Chris

Donner accès à l'utilisateur IIS AppPool\YourAppPoolName n'est peut-être pas suffisant avec IIS configurations par défaut.

Dans mon cas, je rencontrais toujours l’erreur Erreur HTTP 401.3 - Unauthorized après l’ajout de l’utilisateur AppPool et elle n’a été corrigée qu’après l’ajout des autorisations à IUSR utilisateur.

Cela est nécessaire car, par défaut, l'accès anonyme est effectué à l'aide de IUSR. Vous pouvez définir un autre utilisateur spécifique, le pool d'applications, ou continuer à utiliser l'IUSR, mais n'oubliez pas de définir les autorisations appropriées.

authentication tab

Crédits de cette réponse: Erreur HTTP 401.3 - Non autorisé

25
Zanon

Meilleure réponse de Jon Adams

Voici comment implémenter ceci pour les gens de PowerShell

$IncommingPath = "F:\WebContent"
$Acl = Get-Acl $IncommingPath
$Ar = New-Object  system.security.accesscontrol.filesystemaccessrule("IIS AppPool\DefaultAppPool","FullControl","ContainerInherit, ObjectInherit", "None", "Allow")
$Acl.SetAccessRule($Ar)
Set-Acl $IncommingPath $Acl
3
Chris Mills

Partie A: Configuration de votre pool d'applications

Supposons que le pool d'applications s'appelle 'MyPool'. Allez dans 'Paramètres avancés' du pool d'applications à partir du IIS Manager.

  1. Faites défiler jusqu'à "Identité". Tenter de modifier la valeur fera apparaître une boîte de dialogue. Sélectionnez "Compte intégré" et sous celui-ci, sélectionnez "ApplicationPoolIdentity".

  2. Quelques lignes en dessous de "Identity", vous devriez trouver "Load User Profile". Cette valeur doit être définie sur 'True'.

Partie B: Configuration de votre site Web

  1. Nom du site: SiteName (juste un exemple)
  2. Chemin physique: C:\Quoi que ce soit (juste un exemple)
  3. Connecter en tant que ...: utilisateur de l'application (authentification unique) (les paramètres ci-dessus se trouvent dans les "Paramètres de base" du site dans le gestionnaire IIS)
  4. Après avoir configuré les paramètres de base, recherchez la configuration "Authentification" sous "IIS" dans la console principale du site. Ouvrez-le. Vous devriez voir une option pour 'Authentification anonyme'. Assurez-vous qu'il est activé. Puis faites un clic droit et 'Editer ...'. Sélectionnez "Identité du pool d'applications".

Partie C: Configuration de votre dossier

Le dossier en question est C: \

  1. Allez dans Propriétés - Partage - Partage avancé - Autorisations et cochez la case "Partager ce dossier".
  2. Dans la même boîte de dialogue, vous trouverez un bouton 'Autorisations'. Cliquez dessus.
  3. Une nouvelle boîte de dialogue s'ouvrira. Cliquez sur 'Ajouter'.
  4. Une nouvelle boîte de dialogue 'Sélectionner des utilisateurs ou des groupes' s'ouvrira. Sous "À partir de cet emplacement", assurez-vous que le nom est identique à celui de votre ordinateur hôte local. Ensuite, sous "Entrez les noms des objets", tapez "IIS AppPool\MyPool", cliquez sur "Vérifier les noms", puis sur "OK".
  5. Accordez des autorisations de partage complètes pour l'utilisateur 'MyPool'. Appliquez-le et fermez les propriétés du dossier
  6. Ouvrez à nouveau les propriétés du dossier. Cette fois, accédez à Sécurité - Avancé - Autorisations, puis cliquez sur Ajouter. Il y aura une option "Sélectionnez un principal" en haut, ou une autre option pour choisir un utilisateur. Cliquez dessus.
  7. La boîte de dialogue "Sélectionner des utilisateurs ou des groupes" s'ouvre à nouveau. Répétez l'étape 4.
  8. Donnez toutes les autorisations ou autant d’autorisations dont vous avez besoin à l’utilisateur 'MyPool'.
  9. Cochez la case "Remplacer toutes les autorisations d'objet enfant ...", puis cliquez sur Appliquer et fermez-le.

Vous devriez maintenant pouvoir utiliser la navigation sur le site

3
Dibyodyuti Mondal

Juste pour ajouter à la confusion, la boîte de dialogue Autorisations effectives (Explorateur Windows) ne fonctionne pas pour ces connexions. J'ai un site "Umbo4" utilisant une authentification unique et j'ai examiné les autorisations effectives de l'utilisateur dans le dossier racine du site. Le test de vérification des noms a résolu le nom "IIS AppPool\Umbo4", mais les autorisations effectives indiquent que l'utilisateur ne dispose d'aucune autorisation sur le dossier (toutes les cases à cocher sont décochées).

J'ai ensuite exclu explicitement cet utilisateur du dossier, à l'aide de l'onglet Sécurité de l'explorateur. Cela a entraîné l'échec du site avec une erreur HTTP 500.19, comme prévu. Les autorisations effectives semblaient toutefois exactement comme avant.

1
StuartN

J'ai résolu tous mes problèmes asp.net en créant simplement un nouvel utilisateur appelé IUSER avec un mot de passe et en l'ajoutant au service réseau et aux groupes d'utilisateurs. Créez ensuite tous vos sites virtuels et vos applications authentifiées avec IUSER avec son mot de passe. Définissez un accès de haut niveau aux fichiers pour inclure IUSER et BAM. Au moins 3-4 problèmes, dont celui-ci, ont été résolus.

Dave

1
David Granic