Übersicht über IIS7-Berechtigungen - ApplicationPoolIdentity

356

Wir haben kürzlich ein Upgrade auf IIS7 als Kernwebserver durchgeführt, und ich benötige einen Überblick über die Berechtigungen. Zuvor hatte ich dem AppPool-Benutzer (Netzwerkdienst) beim Schreiben in das Dateisystem Zugriff auf das Verzeichnis oder die Datei gewährt.

In IIS7 wird standardmäßig der AppPool-Benutzer auf eingestellt ApplicationPoolIdentity. Wenn ich also den Task-Manager überprüfe, sehe ich, dass ein Benutzerkonto mit dem Namen "WebSite.com" den IIS-Prozess ausführt ("Website.com" ist der Name der Website in IIS).

Dieses Benutzerkonto existiert jedoch nicht, wenn ich versuche, damit Berechtigungen zu erteilen. Wie bestimme ich also, welcher Benutzer auch die Berechtigungen erteilen soll?

Bearbeiten ================================================= =============================

Siehe unten für das Problem im Screenshot. Unsere Website (www.silverchip.co.uk) läuft unter dem Benutzernamen SilverChip.co.uk. Wenn ich jedoch Pemissionen hinzufüge, existiert dieser Benutzer nicht!

Geben Sie hier die Bildbeschreibung ein

================================= Siehe AppPool Image

Geben Sie hier die Bildbeschreibung ein

LiamB
quelle
2
Tatsächlich sind Microsoft-Informationen zu diesem Thema sehr gut. Identitäten des Anwendungspools
DanielV

Antworten:

679

ApplicationPoolIdentity ist die beste Vorgehensweise in IIS7 +. Es ist ein dynamisch erstelltes, nicht privilegiertes Konto. Informationen zum Hinzufügen der Dateisystemsicherheit für einen bestimmten Anwendungspool finden Sie unter "Anwendungspoolidentitäten" von IIS.net . Die schnelle Version:

Wenn der Anwendungspool "DefaultAppPool" heißt (ersetzen Sie diesen Text einfach, wenn er anders benannt ist).

  1. Öffnen Sie den Windows Explorer
  2. Wählen Sie eine Datei oder ein Verzeichnis.
  3. Klicken Sie mit der rechten Maustaste auf die Datei und wählen Sie "Eigenschaften".
  4. Wählen Sie die Registerkarte "Sicherheit"
  5. Klicken Sie auf "Bearbeiten" und dann auf "Hinzufügen"
  6. Klicken Sie auf die Schaltfläche "Standorte" und stellen Sie sicher, dass Sie den lokalen Computer auswählen . ( Nicht die Windows-Domäne, wenn der Server zu einer gehört.)
  7. Geben Sie " IIS AppPool \ DefaultAppPool " in das Textfeld "Geben Sie die zu wählenden Objektnamen ein :" ein. (Vergessen Sie nicht, "DefaultAppPool" hier in einen beliebigen Anwendungspool zu ändern.)
  8. Klicken Sie auf die Schaltfläche "Namen überprüfen" und dann auf "OK".
Jon Adams
quelle
11
@Pino: Nein, nicht der Name der Website. Verwenden Sie den Namen des Anwendungspools . Jede Website ist einem Anwendungspool zugeordnet. Sie können im Dialogfeld "Grundeinstellungen" der Eigenschaften der Website (in IIS7) feststellen, welches.
Jon Adams
2
@Pino: In diesem Fall sollten Sie die Sicherheitsrolle verwenden IIS AppPool\silverchip.co.uk. Ich habe jedoch keine Punkte in Sicherheitsnamen ausprobiert - möglicherweise möchten Sie sie in etwas ohne Interpunktion ändern.
Jon Adams
7
Ich habe Ihre Anweisungen befolgt, wie Sie gesagt haben. Aber es gibt einen Hack. Sie haben Eigenschaft festlegen , enable load user profileum truein Anwendung - Pool - Einstellungen. Und erst nach dieser Einstellung konnte ich die Anwendung ausführen. Bitte aktualisieren Sie Ihre Anweisungen und fügen Sie den 9. Punkt hinzu.
Johnny_D
19
Denken Sie daran, zu überprüfen, ob die Servereinstellungen für die anonyme Authentifizierung auch die Identität des Anwendungspools verwenden. Diese Lösung funktionierte für mich, sobald ich von IUSR zurückkam.
Blau
11
Pass hier auf! Sie können den Benutzer nicht über die Benutzeroberfläche nachschlagen, sondern müssen ihn eingeben. Sie können nur den Namen überprüfen.
Remco
87

Denken Sie daran, beim Auflösen des Namens den lokalen Namen des Servers und nicht den Domänennamen zu verwenden

IIS AppPool\DefaultAppPool

(nur eine Erinnerung, weil mich das ein bisschen gestolpert hat):Geben Sie hier die Bildbeschreibung ein

James Toomey
quelle
Ja, ich vergesse das jedes Mal, danke für die Erinnerung, James Toomey!
Tjans
30

Bei IIS-Standardkonfigurationen reicht es möglicherweise nicht aus, Zugriff auf den Benutzer IIS AppPool \ YourAppPoolName zu gewähren .

In meinem Fall hatte ich immer noch den Fehler HTTP-Fehler 401.3 - Nach dem Hinzufügen des AppPool-Benutzers nicht autorisiert und er wurde erst behoben, nachdem dem IUSR- Benutzer Berechtigungen hinzugefügt wurden .

Dies ist erforderlich, da der anonyme Zugriff standardmäßig über das IUSR erfolgt . Sie können einen anderen bestimmten Benutzer, den Anwendungspool, festlegen oder den IUSR weiterhin verwenden. Vergessen Sie jedoch nicht, die entsprechenden Berechtigungen festzulegen.

Registerkarte Authentifizierung

Credits für diese Antwort: HTTP-Fehler 401.3 - Nicht autorisiert

Zanon
quelle
3
Das ist entscheidend !!! Muss aus Sicherheitsgründen die "Anonyme Authentifizierung" in "Anwendungspoolidentität" ändern! Ich bin mir sicher, dass es einen guten Grund gibt, warum IUSR eingestellt ist, aber ich kann mir keinen einzigen vorstellen. Vielen Dank!!!
Dan B
Dies hat das Problem für mich behoben. Es könnte sein, dass meine Version von IIS 8 unter Windows Server 2012 R2 ist
myroslav
2
Dies ist ein wichtiger Schritt, der der akzeptierten Antwort hinzugefügt werden sollte. Der einfachste Weg ist auch, die Optionsbox in Application Pool Identity zu ändern
Sourcery
1
Das war mein Problem! Vielen Dank!!
Sloan Reynolds
28

Unter Windows Server 2008 (r2) können Sie einem Ordner über Eigenschaften-> Sicherheit keine Anwendungspoolidentität zuweisen. Sie können dies jedoch über eine Admin-Eingabeaufforderung wie folgt tun:

icacls "c:\yourdirectory" /t /grant "IIS AppPool\DefaultAppPool":(R)
Chris
quelle
1
Kannst du das ein wenig erklären? Was bedeutet (R)? Geben Sie in diesem Befehl tatsächlich spitze Klammern ein?
Kate Gregory
3
Hallo Kate, ich habe <> verwendet, um "Ihren Apppool-Namen hier" zu bezeichnen, aber in einem legitimen Apppool-Namen belassen. In IIS Manager -> Anwendungspools müssen Sie dem Namen und den enthaltenen Leerzeichen entsprechen. Das letzte, was ich getan habe, war "IIS AppPool \ ClientName_CompanyName - Intranet". : (R) gewährt in diesem Fall Lesezugriff. Sie können auch F (voll), M (ändern), RX (lesen + ausführen) und W (nur schreiben) verwenden.
Chris
9
Sie können die Zuweisung tatsächlich über die Registerkarte Wertpapiere in den Eigenschaften von Windows Server 2008 R2 vornehmen, sodass Sie diese Problemumgehung nicht benötigen sollten. Stellen Sie sicher, dass Sie integrierte Sicherheitsprinzipale für Objekttypen und Speicherort ausgewählt haben.
Rism
Diese Antwort funktioniert bei mir. Die ausgewählte Antwort funktioniert bei mir nicht.
Tuyen Nguyen
3
Siehe auch die ursprüngliche Antwort der ausgewählten Antwort von [link] serverfault.com/questions/81165/…. Für Windows Server 2008 (oder Datacenter Edition) müssen Sie die Befehlszeile verwenden, um das App-Pool-Konto in die Sicherheit zu bringen Dialog. Sobald es dort ist, können Sie es verwalten, Berechtigungsstufen für Unterverzeichnisse usw. ändern. Beachten Sie auch: "icacls" c: \ yourdirectory "/ t / grant" IIS AppPool \ DefaultAppPool ":( OI) (CI) (R)" OI -Objektvererbung, CI-Containervererbung.
secretwep
7

Teil A: Konfigurieren Ihres Anwendungspools

Angenommen, der Anwendungspool heißt "MyPool". Gehen Sie im IIS-Manager zu "Erweiterte Einstellungen" des Anwendungspools

  1. Scrollen Sie nach unten zu "Identität". Wenn Sie versuchen, den Wert zu bearbeiten, wird ein Dialogfeld angezeigt. Wählen Sie "Eingebautes Konto" und darunter "ApplicationPoolIdentity".

  2. Ein paar Zeilen unter "Identität" sollte "Benutzerprofil laden" angezeigt werden. Dieser Wert sollte auf 'True' gesetzt werden.

Teil B: Konfigurieren Ihrer Website

  1. Website-Name: Site-Name (nur ein Beispiel)
  2. Physischer Pfad: C: \ Was auch immer (nur ein Beispiel)
  3. Verbindung herstellen als ...: Anwendungsbenutzer (Pass-Through-Authentifizierung) (Die obigen Einstellungen finden Sie unter "Grundeinstellungen" der Site im IIS-Manager.)
  4. Suchen Sie nach dem Konfigurieren der Grundeinstellungen unter 'IIS' in der Hauptkonsole der Site nach der Konfiguration 'Authentifizierung'. Öffne es. Sie sollten eine Option für "Anonyme Authentifizierung" sehen. Stellen Sie sicher, dass es aktiviert ist. Klicken Sie dann mit der rechten Maustaste und klicken Sie auf "Bearbeiten ...". Wählen Sie 'Application Pool Identity'.

Teil C: Konfigurieren Ihres Ordners

Der betreffende Ordner ist C: \ Whatever

  1. Gehen Sie zu Eigenschaften - Freigabe - Erweiterte Freigabe - Berechtigungen und aktivieren Sie "Diesen Ordner freigeben".
  2. Im selben Dialogfeld finden Sie eine Schaltfläche 'Berechtigungen'. Klick es.
  3. Ein neues Dialogfeld wird geöffnet. Klicken Sie auf "Hinzufügen".
  4. Ein neues Dialogfeld "Benutzer oder Gruppen auswählen" wird geöffnet. Stellen Sie unter "Von diesem Speicherort aus" sicher, dass der Name mit Ihrem lokalen Host-Computer übereinstimmt. Geben Sie dann unter "Objektnamen eingeben" "IIS AppPool \ MyPool" ein, klicken Sie auf "Namen überprüfen" und dann auf "OK".
  5. Geben Sie dem Benutzer 'MyPool' die vollständigen Freigabeberechtigungen. Wenden Sie es an und schließen Sie die Ordnereigenschaften
  6. Öffnen Sie die Ordnereigenschaften erneut. Gehen Sie diesmal zu Sicherheit - Erweitert - Berechtigung und klicken Sie auf Hinzufügen. Oben wird die Option "Prinzipal auswählen" oder eine andere Option zur Auswahl eines Benutzers angezeigt. Klick es.
  7. Das Dialogfeld "Benutzer oder Gruppen auswählen" wird erneut geöffnet. Wiederholen Sie Schritt 4.
  8. Geben Sie dem Benutzer 'MyPool' alle oder so viele Berechtigungen, wie Sie benötigen.
  9. Aktivieren Sie "Alle untergeordneten Objektberechtigungen ersetzen ..." und wählen Sie "Anwenden" und "Schließen".

Sie sollten nun in der Lage sein, die Website zu durchsuchen

Dibyodyuti Mondal
quelle
Du bist der König des Dschungels! Vielen Dank
tno2007
5

Top Antwort von Jon Adams

Hier erfahren Sie, wie Sie dies für die PowerShell-Benutzer implementieren

$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
quelle
1

Um die Verwirrung zu vergrößern, funktioniert das Dialogfeld "Effektive Berechtigungen" (Windows Explorer) für diese Anmeldungen nicht. Ich habe eine Site "Umbo4" mit Pass-Through-Authentifizierung und habe mir die effektiven Berechtigungen des Benutzers im Site-Stammordner angesehen. Der Test "Namen überprüfen" löste den Namen "IIS AppPool \ Umbo4" auf, aber die effektiven Berechtigungen zeigen, dass der Benutzer überhaupt keine Berechtigungen für den Ordner hatte (alle Kontrollkästchen deaktiviert).

Ich habe diesen Benutzer dann explizit über die Registerkarte Explorer-Sicherheit aus dem Ordner ausgeschlossen. Dies führte dazu, dass die Site erwartungsgemäß mit einem HTTP 500.19-Fehler fehlschlug. Die effektiven Berechtigungen sahen jedoch genauso aus wie zuvor.

StuartN
quelle
1

Ich habe alle meine asp.net-Probleme behoben, indem ich einfach einen neuen Benutzer namens IUSER mit einem Kennwort erstellt und ihm den Netzwerkdienst und die Benutzergruppen hinzugefügt habe. Erstellen Sie dann alle Ihre virtuellen Sites und Anwendungen. Stellen Sie die Authentifizierung mit dem Kennwort auf IUSER ein. Stellen Sie den Dateizugriff auf hoher Ebene so ein, dass er IUSER und BAM enthält. Es wurden mindestens 3-4 Probleme behoben, einschließlich dieses.

Dave

David Granic
quelle