Vue d'ensemble des autorisations IIS7 - ApplicationPoolIdentity

356

Nous avons récemment mis à 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 dans le système de fichiers, j'aurais donné à l'utilisateur AppPool (service réseau) un accès au répertoire ou au fichier.

Dans IIS7, je vois, par défaut, l'utilisateur AppPool est défini sur ApplicationPoolIdentity. Ainsi, lorsque je vérifie le gestionnaire de tâches, je vois qu'un compte d'utilisateur appelé «WebSite.com» exécute le processus IIS («Website.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 doit également accorder les autorisations?

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

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

entrez la description de l'image ici

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

entrez la description de l'image ici

LiamB
la source
2
En fait, les informations Microsoft à ce sujet sont très bonnes . Identités du pool d'applications
DanielV

Réponses:

680

ApplicationPoolIdentity est en fait la meilleure pratique à utiliser dans IIS7 +. Il s'agit d'un compte non privilégié créé dynamiquement. Pour ajouter la sécurité du système de fichiers pour un pool d'applications particulier, voir «Identités du pool d'applications» d'IIS.net . La version rapide:

Si le pool d'applications est nommé "DefaultAppPool" (remplacez simplement ce texte ci-dessous s'il est nommé différemment)

  1. Ouvrez 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 . ( Pas le domaine Windows si le serveur en fait partie.)
  7. Entrez " IIS AppPool \ DefaultAppPool " dans la zone de texte "Entrez les noms des objets à sélectionner:". (N'oubliez pas de remplacer "DefaultAppPool" ici par le nom de votre pool d'applications.)
  8. Cliquez sur le bouton "Vérifier les noms" et cliquez sur "OK".
Jon Adams
la source
11
@Pino: Non, pas le nom du site Web. Utilisez le nom du pool d'applications . Chaque site Web est affecté à un pool d'applications. Vous pouvez dire lequel dans la boîte de dialogue Paramètres de base des propriétés du site Web (dans IIS7).
Jon Adams,
2
@Pino: Dans ce cas, le rôle de sécurité que vous devez utiliser est IIS AppPool\silverchip.co.uk. Cependant, je n'ai pas essayé les périodes dans les noms de sécurité - vous pouvez le changer en quelque chose sans ponctuation.
Jon Adams
7
Je vous ai suivi les instructions comme vous l'avez dit. Mais il y a un hack. Vous devez définir la propriété enable load user profilepour truedans les paramètres de pool d'applications. Et seulement après ce réglage, j'ai pu exécuter l'application. Veuillez donc mettre à jour vos instructions et ajouter le 9ème point.
Johnny_D
19
N'oubliez pas de vérifier que les paramètres du serveur pour l'authentification anonyme utilisent également l'identité du pool d'applications. Cette solution a fonctionné pour moi dès que je suis revenu d'IUSR.
bblue
11
Faites attention ici! Vous ne pouvez pas rechercher l'utilisateur à l'aide de l'interface utilisateur, mais vous devez le saisir. La vérification du nom est la seule chose que vous pouvez faire.
Remco
88

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 car cela m'a fait trébucher un peu):entrez la description de l'image ici

James Toomey
la source
Ouais, j'oublie ça à chaque fois, merci pour le rappel James Toomey!
tjans
30

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

Dans mon cas, j'avais toujours l'erreur HTTP Erreur 401.3 - Non autorisée après l'ajout de l'utilisateur AppPool et elle n'a été corrigée qu'après l'ajout d'autorisations à l' utilisateur IUSR .

Cela est nécessaire car, par défaut, l'accès anonyme se fait à l'aide de l' 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.

onglet d'authentification

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

Zanon
la source
3
C'est crucial !!! Doit changer "Authentification anonyme" en "Identité du pool d'applications" pour des raisons de sécurité! Je suis sûr qu'il y a une bonne raison pour laquelle il est réglé sur IUSR, mais je ne peux pas penser à un seul. Merci!!!
Dan B
Cela a résolu le problème pour moi. C'est peut-être parce que ma version d'IIS est 8 sur Windows Server 2012 R2
myroslav
2
Il s'agit d'une étape importante qui devrait être ajoutée à la réponse acceptée. De plus, le moyen le plus simple est de changer le boîtier radio en identité de pool d'applications
Sourcery
1
C'était mon problème! Je vous remercie!!
Sloan Reynolds
28

Sur 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 commande d'administration en utilisant les éléments suivants:

icacls "c:\yourdirectory" /t /grant "IIS AppPool\DefaultAppPool":(R)
Chris
la source
1
pouvez-vous expliquer cela un peu? Que signifie (R)? Saisissez-vous réellement des crochets angulaires dans cette commande?
Kate Gregory
3
Salut Kate, j'utilisais <> pour désigner "votre nom apppool ici", mais laissé dans un nom apppool légitime. Dans IIS Manager -> Pools d'applications, vous devrez faire correspondre le nom, les espaces inclus. Le dernier que j'ai fait était "IIS AppPool \ ClientName_CompanyName - Intranet". : (R) dans ce cas accorde l'accès en lecture. Vous pouvez également utiliser F (complet), M (modifier), RX (lecture + exécution) et W (écriture uniquement).
Chris
9
Vous pouvez réellement affecter via l'onglet Valeurs mobilières dans les propriétés de Windows Server 2008 R2, vous ne devriez donc pas avoir besoin de cette solution de contournement. Assurez-vous que les principaux de sécurité intégrés sont sélectionnés sur les types d'objets et leur emplacement.
rism
Cette réponse fonctionne pour moi. La réponse sélectionnée ne fonctionne pas pour moi.
Tuyen Nguyen
3
voir également la réponse d'origine de la réponse sélectionnée de [link] serverfault.com/questions/81165/… Pour Windows Server 2008 (ou édition Datacenter), vous devez à peu près utiliser la ligne de commande pour obtenir le compte du pool d'applications dans la sécurité dialogue. Une fois qu'il est là, vous pouvez le gérer, modifier les niveaux d'autorisation, pour les sous-répertoires, etc. Considérez également: "icacls" c: \ yourdirectory "/ t / grant" IIS AppPool \ DefaultAppPool ":( OI) (CI) (R)" OI -objet héritage, héritage CI-conteneur.
secretwep
7

Partie A: Configuration de votre pool d'applications

Supposons que le pool d'applications est nommé «MyPool» Accédez aux «Paramètres avancés» du pool d'applications à partir du gestionnaire IIS

  1. Faites défiler jusqu'à «Identité». Essayer 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 sous «Identité», vous devriez trouver «Charger le profil utilisateur». Cette valeur doit être définie sur «True».

Partie B: Configuration de votre site Web

  1. Nom du site Web: SiteName (juste un exemple)
  2. Chemin physique: C: \ Peu importe (juste un exemple)
  3. Se connecter en tant que: utilisateur de l'application (authentification unique) (les paramètres ci-dessus peuvent être trouvés dans «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é. Cliquez ensuite avec le bouton droit de la souris et "Modifier ...". Sélectionnez «Identité du pool d'applications».

Partie C: Configurer votre dossier

Le dossier en question est C: \ Peu importe

  1. Allez dans Propriétés - Partage - Partage avancé - Autorisations, et cochez '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'ouvre. Cliquez sur «Ajouter».
  4. Une nouvelle boîte de dialogue «Sélectionner des utilisateurs ou des groupes» s'ouvre. Sous «À partir de cet emplacement», assurez-vous que le nom est le même que celui de votre ordinateur hôte local. Ensuite, sous «Entrez les noms des objets», tapez «IIS AppPool \ MyPool» et cliquez sur «Vérifier les noms» puis sur «OK»
  5. Accordez des autorisations de partage complètes à 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é - Autorisation, puis cliquez sur Ajouter. Il y aura une option «Sélectionner 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. Accordez toutes ou autant d'autorisations dont vous avez besoin à l'utilisateur «MyPool».
  9. Cochez "Remplacer toutes les autorisations d'objet enfant ..." et Appliquer et fermer.

Vous devriez maintenant pouvoir utiliser la navigation sur le site Web

Dibyodyuti Mondal
la source
Tu es le roi de la jungle! Merci
tno2007
5

Meilleure réponse de Jon Adams

Voici comment implémenter cela 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
Chris Mills
la source
1

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 l'authentification directe et j'ai regardé les autorisations effectives de l'utilisateur dans le dossier racine du site. Le test Vérifier les noms a résolu le nom «IIS AppPool \ Umbo4», mais les autorisations effectives montrent que l'utilisateur n'avait aucune autorisation sur le dossier (toutes les cases à cocher ne sont pas cochées).

J'ai ensuite exclu cet utilisateur du dossier explicitement, en utilisant l'onglet Sécurité de l'Explorateur. Cela a entraîné l'échec du site avec une erreur HTTP 500.19, comme prévu. Cependant, les autorisations effectives étaient exactement comme auparavant.

StuartN
la source
1

J'ai résolu tous mes problèmes asp.net simplement en créant un nouvel utilisateur appelé IUSER avec un mot de passe et en lui ajoutant le service réseau et les groupes d'utilisateurs. Ensuite, créez tous vos sites et applications virtuels définissez l'authentification sur IUSER avec son mot de passe .. définissez un accès de fichier de haut niveau pour inclure IUSER et BAM, il a résolu au moins 3-4 problèmes, y compris celui-ci ..

Dave

David Granic
la source