it-swarm.com.de

IIS Schreibzugriffsberechtigungen für AppPoolIdentity und Dateisystem

Hier ist ein Problem mit IIS 7.5 und ASP.NET, das ich untersucht habe und mit dem ich nichts anfangen kann. Jede Hilfe wäre sehr dankbar.

Meine Frage ist: Unter Verwendung von ASP.NET in IIS 7.5, wie ermöglicht IIS und/oder dem Betriebssystem, dass die Webanwendung beim Ausführen in einen Ordner wie C:\dump schreibt unter vollem Vertrauen? Wie kommt es, dass ich dem Benutzer des Anwendungspools keinen expliziten Schreibzugriff hinzufügen muss (in diesem Fall ApplicationPoolIdentity)?

Soviel weiß ich:

  • In IIS 7.5 ist die Standardidentität für einen Anwendungspool ApplicationPoolIdentity.
  • ApplicationPoolIdentity steht für ein Windows-Benutzerkonto mit dem Namen "IIS APPPOOL\AppPoolName", das beim Erstellen des Anwendungspools erstellt wird, wobei AppPoolName der Name des Anwendungspools ist.
  • Der Benutzer "IIS APPPOOL\AppPoolName" ist standardmäßig ein Mitglied der Gruppe IIS_IUSRS.
  • Wenn Sie unter Full Trust arbeiten, kann Ihre Webanwendung in viele Bereiche des Dateisystems schreiben (mit Ausnahme von Ordnern wie C:\Users, C:\Windows usw.). Beispielsweise kann Ihre Anwendung in einige Ordner schreiben, z. B. C:\dump.
  • Standardmäßig erhält die Gruppe IIS_IUSRS keinen Lese- oder Schreibzugriff auf C:\dump (zumindest keinen Zugriff, der über die Registerkarte "Sicherheit" im Windows Explorer sichtbar ist).
  • Wenn Sie den Schreibzugriff auf IIS_IUSRS verweigern, erhalten Sie eine SecurityException, wenn Sie versuchen, in den Ordner zu schreiben (wie erwartet).

Wie wird dem Benutzer "IIS APPPOOL\AppPoolName" unter Berücksichtigung all dessen Schreibzugriff gewährt? Der Prozess w3wp.exe wird als dieser Benutzer ausgeführt. Warum kann dieser Benutzer also in einen Ordner schreiben, auf den er keinen expliziten Zugriff zu haben scheint?

Bitte beachten Sie, dass dies wahrscheinlich der Einfachheit halber getan wurde, da es mühsam wäre, einem Benutzer Zugriff auf jeden Ordner zu gewähren, in den er schreiben muss, wenn Sie unter Full Trust arbeiten. Wenn Sie diesen Zugriff einschränken möchten, können Sie die Anwendung immer unter Medium Trust ausführen. Ich möchte wissen, wie das Betriebssystem und/oder IIS diese Schreibvorgänge zulassen, obwohl anscheinend kein expliziter Dateisystemzugriff gewährt wird.

384
rsbarro

Der ApplicationPoolIdentity wird die Mitgliedschaft der Users Gruppe sowie der IIS_IUSRS Gruppe zugewiesen. Auf den ersten Blick mag dies etwas besorgniserregend erscheinen, allerdings hat die Gruppe Users etwas eingeschränkte NTFS-Rechte.

Wenn Sie beispielsweise versuchen, einen Ordner im Ordner C:\Windows zu erstellen, werden Sie feststellen, dass dies nicht möglich ist. Das ApplicationPoolIdentity muss weiterhin in der Lage sein, Dateien aus den Windows-Systemordnern zu lesen (andernfalls kann der Arbeitsprozess wichtige DLLs dynamisch laden).

Im Hinblick auf Ihre Beobachtungen, ob Sie in Ihren Ordner c:\dump schreiben können. Wenn Sie sich die Berechtigungen in den erweiterten Sicherheitseinstellungen ansehen, sehen Sie Folgendes:

enter image description here

Beachten Sie, dass die Sonderberechtigung von c:\ geerbt wird:

enter image description here

Das ist der Grund, warum die ApplicationPoolIdentity Ihrer Site diesen Ordner lesen und schreiben kann . Dieses Recht wird vom Laufwerk c:\ geerbt.

In einer gemeinsam genutzten Umgebung, in der möglicherweise mehrere hundert Standorte mit jeweils eigenem Anwendungspool und eigener Anwendungspoolidentität vorhanden sind, würden Sie die Standortordner in einem Ordner oder Volume speichern, auf dem die Gruppe Users entfernt und die Berechtigungen auf solche festgelegt wurden dass nur Administratoren und das SYSTEM-Konto Zugriff haben (mit Vererbung).

Anschließend weisen Sie jedem IIS AppPool\[name] die erforderlichen Berechtigungen für seinen Site-Stammordner zu.

Sie sollten auch sicherstellen, dass alle Ordner, die Sie erstellen, in denen Sie potenziell vertrauliche Dateien oder Daten speichern, die Gruppe Users entfernt haben. Sie sollten auch sicherstellen, dass alle von Ihnen installierten Anwendungen keine vertraulichen Daten in ihren Ordnern c:\program files\[app name] speichern und stattdessen die Benutzerprofilordner verwenden.

Also ja, auf den ersten Blick sieht es so aus, als ob ApplicationPoolIdentity mehr Rechte hat, als es sollte, aber es hat tatsächlich nicht mehr Rechte, als es die Gruppenmitgliedschaft vorschreibt.

Die Gruppenzugehörigkeit von ApplicationPoolIdentity kann mit SysInternals Prozess-Explorer-Tool überprüft werden. Suchen Sie den Worker-Prozess, der mit der gewünschten Anwendungspool-Identität ausgeführt wird (Sie müssen der Liste der anzuzeigenden Spalten die Spalte User Name hinzufügen:

enter image description here

Zum Beispiel habe ich hier einen Pool mit dem Namen 900300, der die Anwendungspoolidentität IIS APPPOOL\900300 hat. Klicken Sie mit der rechten Maustaste auf die Eigenschaften des Prozesses und wählen Sie die Registerkarte Sicherheit aus.

enter image description here

Wie wir sehen können, ist IIS APPPOOL\900300 ein Mitglied der Users Gruppe.

395
Kev
  1. Klicken Sie mit der rechten Maustaste auf den Ordner.

  2. Klicken Sie auf Eigenschaften

  3. Klicken Sie auf die Registerkarte Sicherheit. Sie werden so etwas sehen:

enter image description here

  1. Klicken Sie oben im Bildschirm auf die Schaltfläche "Bearbeiten ...". Sie werden so etwas sehen:

enter image description here

  1. Klicken Sie oben im Bildschirm auf die Schaltfläche "Hinzufügen ...". Sie werden so etwas sehen:

enter image description here

  1. Klicken Sie oben im Bildschirm auf die Schaltfläche "Standorte ...". Sie werden so etwas sehen. Gehen Sie jetzt ganz oben in dieser Baumstruktur und wählen Sie Ihren Computernamen aus. Klicken Sie dann auf OK.

enter image description here

  1. Geben Sie nun "iis apppool\your_apppool_name" ein und klicken Sie auf die Schaltfläche "Namen überprüfen". Wenn der Apppool vorhanden ist, wird der Name Ihres Apppools im Textfeld mit einer Unterstreichung angezeigt. Klicken Sie auf OK.

enter image description here

  1. Aktivieren/deaktivieren Sie den Zugriff, den Sie dem Konto gewähren möchten

  2. Klicken Sie auf Übernehmen und dann auf OK.

27
fluidguid

Jeder Anwendungspool in IIs erstellt unter c:\users standardmäßig einen eigenen sicheren Benutzerordner mit vollständigen Lese-/Schreibrechten. Öffnen Sie Ihren Benutzerordner, und überprüfen Sie, welche Anwendungspoolordner vorhanden sind. Klicken Sie mit der rechten Maustaste, und überprüfen Sie deren Rechte für das zugewiesene virtuelle Anwendungspoolkonto. Ihr Anwendungspoolkonto sollte bereits mit Lese-/Schreibzugriff für Stammordner und Unterordner hinzugefügt worden sein.

Diese Art des Dateispeicherzugriffs wird also automatisch durchgeführt, und Sie sollten in der Lage sein, in den Ordnern der Anwendungspools Benutzerkonten zu schreiben, was immer Sie möchten, ohne etwas zu ändern. Aus diesem Grund wurden virtuelle Benutzerkonten für jeden Anwendungspool erstellt.

0
Stokely