Bestimmt gibt es verschiedene Ansätze, Rechte auf einem Webserver zu verwalten, wenn man dort mehrere Webseiten laufen hat. Dieser Blogpost ist eine Zusammenfassung mehrerer Artikel zu diesem Thema und stellt eine Art Best Practice dar.
Organisation der Application Pools
Zuerst stellt sich die Frage, welchen Application Pool man überhaupt verwenden soll. Es werden eine Reihe Application Pools unter verschiedenem Kontext angeboten.
Folgende Empfehlungen könnten ein Anhaltspunkt sein
- Wenn Sie .NET nicht benötigen (PHP, statische Webseite), sollten Sie Managed Code nicht verwenden. Handelt es sich hingegen um eine .NET-Website, müssen Sie die richtige .NET-Version wählen, damit die Applikation nachher funktioniert.
- Legen Sie für jede Applikation einen eigenen Application Pool an. Wenn Sie einen Application Pool für mehrere Webapplikationen gemeinsam verwenden, laufen alle im gleichen Prozess-Kontext. Das heißt, wenn eine Webseite einen Absturz verursacht oder den Speicher auffrisst, sind alle Websites betroffen, die in diesem Kontext laufen.
- Wählen Sie als Application Pool User einen speziellen User aus, wenn dieser Zugriff auf Datenbanken oder andere Ressourcen benötigt. Wird der Application Pool User nicht für spezielle Zugrifft benötigt, verwenden Sie am besten den Standarduser „ApplicationPoolIdentity“.
- Wenn Sie NetworkService als User für den Application Pool setzen, geben Sie dem Prozess unnötig viele Rechte, von dieser Vorgehensweise ist also abzuraten, wenn es dafür keinen speziellen Grund gibt.
Rechtevergabe für den Application Pool User
Wenn Sie ApplicationPoolIdentity als Application Pool User setzen, dann wird automatisch ein User im System angelegt, der sowohl in die Users-Gruppe als auch in die IIS_Users-Gruppe (lokaler Server) eingehängt wird.
Sie können nun einerseits der Gruppe IIS_Users Rechte auf dem System geben, die Sie für alle Websites benötigen.
Rechte, die nur ein spezieller Application Pool benötigt, können für diesen User speziell vergeben werden. Gehen Sie wie folgt vor:
- Nehmen wir an, Sie haben einen Application Pool angelegt, der AppPoolCool (bitte in folgender Anleitung durch eigenen Namen ersetzen) heißt und unter dem Kontext der ApplicationPoolIdentity läuft.
- Öffnen Sie den Windows Explorer
- Wählen Sie ein Verzeichnis, für das Sie Rechte vergeben wollen (z.B. das Root-Directory der Webapplikation)
- Tätigen Sie einen Rechts-Klick mit der Maus und wählen Sie „Properties„.
- Wählen Sie den Reiter „Security„.
- Klicken Sie zuerst auf „Edit“ und dann auf „Add„.
- Klicken SIe auf „Location„. Stellen Sie sicher, dass der Name des Webservers eingestellt ist und nicht der Name der Domäne. Es müssen die lokalen und nicht die AD-Gruppen betrachtet werden.
- Schreiben Sie nun in das Textfeld „Enter the object names to select“ „IIS AppPoolAppPoolCool„
- Klicken Sie auf „Check Names“ und dann auf OK. Wenn Sie den Namen korrekt eingegeben haben, kann er aufgelöst werden.
- Vergeben Sie nun für diesen AppPool die Rechte, die Sie brauchen.
Weiterführende Links:
- IIS.net’s „Application Pool Identities“
- http://stackoverflow.com/questions/7334216/iis7-permissions-overview-applicationpoolidentity
- http://stackoverflow.com/questions/5437723/iis-apppoolidentity-and-file-system-write-access-permissions
Ist doch cool, oder?
LG,
Sabine.