Zuweisen von Berechtigungen zum ApplicationPoolIdentity-Konto

263

In IIS 7 unter Windows Server 2008 können Anwendungspools als "ApplicationPoolIdentity" -Konto anstelle des NetworkService-Kontos ausgeführt werden.

Wie kann ich diesem Konto "ApplicationPoolIdentity" Berechtigungen zuweisen? Es wird nicht als lokaler Benutzer auf dem Computer angezeigt. Es wird nirgendwo als Gruppe angezeigt. Nichts in der Ferne, wie es irgendwo erscheint. Wenn ich nach lokalen Benutzern, Gruppen und integrierten Konten suche, wird diese weder in der Liste noch in einer ähnlichen Liste angezeigt. Was ist los?

Ich bin nicht der einzige mit diesem Problem: Ein Beispiel finden Sie unter Probleme mit ApplicationPoolIdentity in IIS 7.5 + Windows 7 .


"Dies ist leider eine Einschränkung der Objektauswahl unter Windows Server 2008 / Windows Vista. Wie bereits mehrere Personen festgestellt haben, können Sie die Zugriffssteuerungsliste für die App-Pool-Identität weiterhin mit Befehlszeilentools wie icacls bearbeiten ."

Triynko
quelle

Antworten:

289

Update: Die ursprüngliche Frage betraf Windows Server 2008, die Lösung war jedoch für Windows Server 2008 R2 und Windows Server 2012 (sowie Windows 7 und 8) einfacher. Sie können den Benutzer über die NTFS-Benutzeroberfläche hinzufügen, indem Sie ihn direkt eingeben. Der Name hat das Format IIS APPPOOL \ {Name des App-Pools}. Zum Beispiel: IIS APPPOOL \ DefaultAppPool.

IIS APPPOOL\{app pool name}

Hinweis: Gemäß den Kommentaren unten sind zwei Dinge zu beachten:

  • Geben Sie die Zeichenfolge direkt in das Feld "Benutzer oder Gruppe auswählen" und nicht in das Suchfeld ein.
  • In einer Domänenumgebung müssen Sie zuerst den Speicherort für Ihren lokalen Computer festlegen.

Verweis auf Microsoft Docs-Artikel: Anwendungspoolidentitäten> Sichern von Ressourcen

Ursprüngliche Antwort: (für Windows Server 2008) Dies ist eine großartige Funktion, aber wie Sie bereits erwähnt haben, ist sie noch nicht vollständig implementiert. Sie können die App-Pool-Identität über die Eingabeaufforderung mit etwas wie icacls hinzufügen und sie dann über die GUI verwalten. Führen Sie beispielsweise Folgendes an der Eingabeaufforderung aus:

icacls c:\inetpub\wwwroot /grant "IIS APPPOOL\DefaultAppPool":(OI)(CI)(RX)

Wechseln Sie dann im Windows Explorer zum Ordner "wwwroot" und bearbeiten Sie die Sicherheitsberechtigungen. Sie sehen, wie eine Gruppe (das Gruppensymbol) mit dem Namen DefaultAppPool aussieht. Sie können jetzt die Berechtigungen bearbeiten.

Sie müssen dies jedoch überhaupt nicht verwenden. Es ist ein Bonus, den Sie verwenden können, wenn Sie möchten. Sie können die alte Methode zum Erstellen eines benutzerdefinierten Benutzers pro App-Pool und zum Zuweisen des benutzerdefinierten Benutzers zur Festplatte verwenden. Das hat volle UI-Unterstützung.

Diese SID-Injektionsmethode ist nützlich, da Sie einen einzelnen Benutzer verwenden können, aber jede Site vollständig voneinander isolieren können, ohne eindeutige Benutzer für jeden App-Pool erstellen zu müssen. Ziemlich beeindruckend, und mit der UI-Unterstützung wird es noch besser.

Hinweis: Wenn Sie den Benutzer des Anwendungspools nicht finden können, überprüfen Sie, ob der Windows-Dienst "Application Host Helper Service" ausgeführt wird. Dieser Dienst ordnet Benutzer des Anwendungspools Windows-Konten zu.

Scott Forsyth - MVP
quelle
1
Es ist eine Art seltsames Biest, da es nicht wie eine Gruppe ist, in der der Benutzer in einer Gruppe lebt, und es ist nicht wie ein Computerkonto gegenüber einem Benutzerkonto, die sich vollständig voneinander unterscheiden. Das App-Pool-Konto 'überlappt' den App-Pool-Identitätsbenutzer. Beispielsweise können Sie 5 App-Pools mit dem Netzwerkdienst und 5 andere mit benutzerdefinierten Konten einrichten, es handelt sich jedoch um 10 verschiedene systemverwaltete App-Pool-Konten. Die Vorteile werden im Ordner c: \ inetpub \ temp \ appPools deutlich, in dem es automatisch verwaltet wird und das System sauber sperrt. IIS nutzt sie gut. Unsere Verwendung für Ordner ist optional.
Scott Forsyth - MVP
29
Beachten Sie, dass, wenn Sie "IIS APPPOOL \ DefaultAppPool" direkt in das Feld "Benutzer oder Gruppe auswählen" eingeben (anstatt danach zu suchen), die Berechtigungen ordnungsgemäß erkannt werden (getestet unter Win7 x64 und Win2k8 R2 x64).
Milan Gardian
5
Sie sind für Win7 und Win2k8 R2 richtig. Es wurde nicht in Win2k8 RTM implementiert, ist aber in R2.
Scott Forsyth - MVP
9
Endlich ist es soweit - wenn Sie den Namen des App-Pools direkt eingeben, wie @Milan Gardian oben sagt, und das Standortfeld auf den lokalen Computer ändern, funktioniert es
Ciaran Bruen,
4
Vielen Dank für die beiden Dinge, die Sie beachten müssen. Ich stolperte über beides, und dies war eine klare und einfache Erklärung der Probleme und wie ich das erreichen konnte, was ich brauchte. Es ist nur eine Schande, dass keine der MSDN-Dokumentationen so klar war.
Ian Grainger
22

Sie müssen sicherstellen, dass das From this locationFeld auf die local machineund nicht auf die Domäne eingestellt ist.

Ich hatte das gleiche Problem und als ich es änderte, funktionierte es einwandfrei.

Alan
quelle
4

Sie sollten wirklich Gruppen pro "Rolle" erstellen und diese Gruppenzugriffe auf das Dateisystem zuweisen. Fügen Sie dann den App-Pool nach Bedarf zu den rollenspezifischen Gruppen hinzu. Auf diese Weise müssen Sie sich auch dann, wenn Sie den App-Pool später entfernen (und der virtuelle Benutzer wird unfähig ), keine Gedanken mehr über das Wiederherstellen aller Berechtigungen machen. Fügen Sie einfach den Ersatz-App-Pool zur vorhandenen Gruppe hinzu.

Jimbo
quelle
3

Nach dem Lesen der Antwort von @Scott Forsyth - MVP habe ich versucht, den Application Host Helper Service neu zu starten. Das hat das Problem für mich gelöst.

Roger
quelle
0

Ich habe WS8 R2 ausgeführt und konnte es nicht IIS APPPOOL\DefaultAppPoolüber den Windows Explorer hinzufügen . Die einzige Möglichkeit, wie es funktionierte, war über die Befehlszeile:

cacls [DATEIPFAD] / T / E / G "IIS APPPOOL \ DefaultAppPool": C

Denis Tse
quelle
2
Seltsamerweise musste ich "IIS AppPool \ DefaultAppPool" ausführen, damit es akzeptiert wurde. Beachten Sie die gemischte Groß- und Kleinschreibung - alle Großbuchstaben wurden wie beim ersten Mal nicht von der GUI akzeptiert.
Jeff McJunkin
0

Wenn es bei dieser Frage darum geht, wie _sp_send_dbmail in der msdb-Datenbank ausgeführt wird (mithilfe der in msdb gespeicherten SQL-Prozedur "Datenbank-Mail senden"), können Sie hier Abhilfe schaffen. Fügen Sie dem MSDB-Benutzer mit der Rollenmitgliedschaft "DatabaseMailUserRole" den Benutzernamen der .NET-Anwendung Ihrer Datenbank hinzu (der in Ihrer Verbindungszeichenfolge in Ihrer .NET-Anwendung definiert ist)

Muhamad Faried
quelle