Anwendungspoolidentitäten

von Thomas Deml

Unabhängig davon, ob Sie Ihre Site auf Ihrem eigenen Server oder in der Cloud ausführen, muss die Sicherheit ganz oben auf Ihrer Prioritätsliste stehen. Wenn dies der Fall ist, werden Sie sich freuen, dass IIS über ein Sicherheitsfeature namens Anwendungspoolidentität verfügt. Dieses Feature wurde in Service Pack 2 (SP2) von Windows Server 2008 und Windows Vista eingeführt. Mit einer Anwendungspoolidentität können Sie einen Anwendungspool unter einem eindeutigen Konto ausführen, ohne Domänen oder lokale Konten erstellen und verwalten zu müssen. Der Name des Anwendungspoolkontos entspricht dem Namen des Anwendungspools. Die folgende Abbildung zeigt einen IIS-Arbeitsprozess (W3wp.exe), der als DefaultAppPool-Identität ausgeführt wird.

Screenshot of the Task Manager screen with a focus on the W 3 W P dot E X E I I S worker process.

Anwendungspool-Identitätskonten

Arbeitsprozesse in IIS 6.0 und IIS 7 werden standardmäßig als Netzwerkdienst ausgeführt. Beim Netzwerkdienst handelt es sich um eine integrierte Identität von Windows. Er erfordert kein Kennwort und verfügt nur über Benutzerberechtigungen, das heißt relativ niedrige Berechtigungen. Die Ausführung als Konto mit niedriger Berechtigung ist eine gute Sicherheitspraxis, da ein Softwarefehler nicht von einem böswilligen Benutzer verwendet werden kann, um das gesamte System zu übernehmen.

Im Laufe der Zeit trat jedoch ein Problem auf, da immer mehr Windows-Systemdienste als Netzwerkdienst ausgeführt wurden. Dies liegt daran, dass Dienste, die als Netzwerkdienst ausgeführt werden, andere Dienste manipulieren können, die unter derselben Identität ausgeführt werden. Da IIS-Arbeitsprozesse standardmäßig Drittanbietercode (klassischen ASP-, ASP.NET-, PHP-Code) ausführen, war es Zeit, IIS-Arbeitsprozesse von anderen Windows-Systemdiensten zu isolieren und IIS-Arbeitsprozesse unter eindeutigen Identitäten auszuführen. Das Windows-Betriebssystem bietet ein Feature namens „Virtuelle Konten“, mit dem IIS eine eindeutige Identität für jeden einzelnen Anwendungspool erstellen kann. Weitere Informationen zu virtuellen Konten finden Sie in der schrittweisen Anleitung für Dienstkonten.

Konfigurieren von IIS-Anwendungspoolidentitäten

Wenn Sie IIS 7.5 unter Windows Server 2008 R2 oder eine höhere Version von IIS ausführen, müssen Sie nichts tun, um die neue Identität zu verwenden. Für jeden Anwendungspool, den Sie erstellen, wird die Identity-Eigenschaft des neuen Anwendungspools standardmäßig auf ApplicationPoolIdentity festgelegt. Der IIS-Administratorprozess (WAS) erstellt ein virtuelles Konto mit dem Namen des neuen Anwendungspools und führt die Workerprozesse des Anwendungspools standardmäßig unter diesem Konto aus.

Um dieses virtuelle Konto bei Ausführung von IIS 7.0 unter Windows Server 2008 zu verwenden, müssen Sie die Identity-Eigenschaft eines Anwendungspools, den Sie erstellen, in ApplicationPoolIdentity ändern. Und zwar mit diesen Eigenschaften:

  1. Öffnen Sie die IIS-Verwaltungskonsole (INETMGR.MSC).

  2. Öffnen Sie den Knoten „Anwendungspools“ unter dem Computerknoten. Wählen Sie den Anwendungspool aus, den Sie ändern möchten, um ihn unter einer automatisch generierten Anwendungspoolidentität auszuführen.

  3. Klicken Sie mit der rechten Maustaste auf den Anwendungspool und wählen Sie Erweiterte Einstellungen aus.

    Screenshot of the Advanced Settings dialog with the Identity setting being highlighted.

  4. Wählen Sie das Listenelement Identität aus, und klicken Sie auf die Auslassungspunkte (die Schaltfläche mit den drei Punkten).

  5. Das folgende Dialogfeld wird angezeigt:

    Screenshot of the Application Pool Identity dialog with the Application Pool Identity option being highlighted.

  6. Wählen Sie die Schaltfläche „Integriertes Konto“ und dann den Identitätstyp ApplicationPoolIdentity aus dem Kombinationsfeld aus.

Um denselben Schritt mithilfe der Befehlszeile auszuführen, können Sie das Befehlszeilentool "appcmd" wie folgt aufrufen:

%windir%\system32\inetsrv\appcmd.exe set AppPool <your AppPool> -processModel.identityType:ApplicationPoolIdentity

Schützen von Ressourcen

Wenn ein neuer Anwendungspool erstellt wird, erstellt der IIS-Verwaltungsprozess eine Sicherheits-ID (SID), die den Namen des Anwendungspools selbst darstellt. Wenn Sie beispielsweise einen Anwendungspool mit dem Namen „MyNewAppPool“ erstellen, wird eine Sicherheits-ID mit dem Namen „MyNewAppPool“ im Windows-Sicherheitssystem erstellt. Ab diesem Punkt können Ressourcen mithilfe dieser Identität geschützt werden. Die Identität ist jedoch kein echtes Benutzerkonto. Sie wird nicht als Benutzer in der Windows-Benutzerverwaltungskonsole angezeigt.

Sie können das testen, indem Sie eine Datei im Windows-Explorer auszuwählen und die Identität „DefaultAppPool“ zur Zugriffssteuerungsliste (Access Control List, ACL) der Datei hinzuzufügen.

  1. Öffnen von Windows-Explorer

  2. Wählen Sie eine Datei oder ein Verzeichnis aus.

  3. Klicken Sie mit der rechten Maustaste auf die Datei, und wählen Sie Eigenschaften aus.

  4. Wählen Sie die Registerkarte Sicherheit aus.

  5. Klicken Sie auf die Schaltfläche Bearbeiten und dan auf die Schaltfläche Hinzufügen.

  6. Klicken Sie auf die Schaltfläche Speicherorte, und stellen Sie sicher, dass Sie Ihren Computer auswählen.

    Screenshot of the Select Users or Groups dialog.

  7. Geben Sie IIS AppPool\DefaultAppPool im Textfeld Geben Sie die auszuwählenden Objektnamen ein: ein.

  8. Klicken Sie auf die Schaltfläche Namen überprüfen und auf OK.

Dadurch ermöglicht die Datei oder das Verzeichnis, die bzw. das Sie jetzt ausgewählt haben, auch den DefaultAppPool-Identitätszugriff.

Sie können dazu die Befehlszeile nutzen, indem Sie das ICACLS-Tool verwenden. Mit dem folgenden Beispiel erhalten Sie Vollzugriff auf die DefaultAppPool-Identität:

ICACLS test.txt /grant "IIS AppPool\DefaultAppPool:F"

Weitere Informationen finden Sie unter ICACLS.

Unter Windows 7 und Windows Server 2008 R2 und höheren Versionen von Windows werden Anwendungspools standardmäßig als Anwendungspoolidentität ausgeführt. Dazu wurde ein neuer Identitätstyp mit dem Namen „AppPoolIdentity“ eingeführt. Wenn der Identitätstyp „AppPoolIdentity“ ausgewählt ist (Standardeinstellung unter Windows 7 und Windows Server 2008 R2 und höher), führen IIS Arbeitsprozesse als Anwendungspoolidentität aus. Bei jedem anderen Identitätstyp wird die Sicherheits-ID nur in das Zugriffstoken des Prozesses eingefügt. Wenn der Bezeichner eingefügt wird, kann der Inhalt weiterhin der Zugriffssteuerungsliste für die ApplicationPoolIdentity hinzugefügt werden, die Besitzer des Tokens sind jedoch wahrscheinlich nicht eindeutig. Weitere Informationen zu diesem Konzept finden Sie im Blogbeitrag Neu in IIS 7 – App-Poolisolation.

Zugreifen auf das Netzwerk

Die Verwendung des Netzwerkdienstkontos in einer Domänenumgebung hat einen großen Vorteil. Der Arbeitsprozess, der als Netzwerkdienst ausgeführt wird, kann als Computerkonto auf das Netzwerk zugreifen. Computerkonten werden generiert, wenn ein Computer einer Domäne beigetreten ist. Sie sehen wie folgt aus:

<domainname>\<machinename>$,

Zum Beispiel:

mydomain\machine1$

Das schöne daran ist, dass Netzwerkressourcen wie Dateifreigaben oder SQL Server-Datenbanken ACLed sein können, um diesen Computerkontozugriff zu ermöglichen.

Was ist mit Anwendungspoolidentitäten?

Die gute Nachricht ist, dass Anwendungspoolidentitäten auch das Computerkonto verwenden, um auf Netzwerkressourcen zuzugreifen. Es sind keine Änderungen erforderlich.

Kompatibilitätsprobleme mit Anwendungspoolidentitäten

Leitfadendokumentation

Das größte Kompatibilitätsproblem mit Anwendungspoolidentitäten sind wahrscheinlich frühere Anleitungsdokumente, die ACL-Ressourcen für Netzwerkdienst explizit empfehlen, d. h. die Standardidentität des DefaultAppPool in IIS 6.0 und IIS 7.0. Kunden müssen ihre Skripts in ACL für „IIS AppPool\DefaultAppPool“ (oder einen anderen Anwendungspoolnamen) ändern, wenn sie unter IIS 7.5 oder höher ausgeführt werden (siehe Beispiel oben).

Benutzerprofil

IIS lädt das Windows-Benutzerprofil nicht, aber bestimmte Anwendungen nutzen es möglicherweise trotzdem, um temporäre Daten zu speichern. SQL Express ist ein Beispiel für eine Anwendung, die dies tut. Das Benutzerprofil muss jedoch erstellt werden, um temporäre Daten entweder im Profilverzeichnis oder in der Registrierungsstruktur zu speichern. Das Benutzerprofil für das Netzwerkdienstkonto wurde vom System erstellt und war immer verfügbar. Mit dem Wechsel zu eindeutigen Anwendungspoolidentitäten wird jedoch vom System kein Benutzerprofil erstellt. Nur die Standardanwendungspools („DefaultAppPool“ und „Classic .NET AppPool“) verfügen über Benutzerprofile auf dem Datenträger. Wenn Administratoren einen neuen Anwendungspool erstellen, wird kein Benutzerprofil erstellt.

Wenn Sie möchten, können Sie jedoch IIS-Anwendungspools so konfigurieren, dass das Benutzerprofil geladen wird, indem Sie das LoadUserProfile-Attribut auf „true“ festlegen.

Zusammenfassung

Anwendungspoolidentitäten sind ein leistungsfähiges neues Isolationsfeature, das für Windows Server 2008, Windows Vista und höhere Versionen von Windows eingeführt wurde. Dadurch wird die Ausführung von IIS-Anwendungen noch sicherer und zuverlässiger.