Freigeben über


Anwendungspoolidentitäten

von Thomas Deml

Unabhängig davon, ob Sie Ihre Website auf Ihrem eigenen Server oder in der Cloud ausführen, muss die Sicherheit am Anfang Ihrer Prioritätsliste stehen. Wenn ja, hören Sie gerne, 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äne 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 des Bildschirms

Anwendungspool-Identitätskonten

Arbeitsprozesse in IIS 6.0 und in IIS 7 werden standardmäßig als Netzwerkdienst ausgeführt. Der Netzwerkdienst ist eine integrierte Windows-Identität. Es ist kein Kennwort erforderlich und verfügt nur über Benutzerberechtigungen; das heißt, es hat eine relativ niedrige Berechtigungsstufe. 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.

Ein Problem trat jedoch im Laufe der Zeit 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 (klassisches ASP, ASP.NET, PHP-Code) ausführen, war es an der 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 seiner Anwendungspools erstellen kann. Weitere Informationen zu virtuellen Konten finden Sie in der schrittweisen Anleitung zu 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 Arbeitsprozesse des Anwendungspools standardmäßig unter diesem Konto aus.

Um dieses virtuelle Konto beim Ausführen von IIS 7.0 unter Windows Server 2008 zu verwenden, müssen Sie die Identitätseigenschaft eines Anwendungspools ändern, den Sie in ApplicationPoolIdentity erstellen. So gehen Sie wie folgt vor:

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

  2. Öffnen Sie den Knoten "Anwendungspools" unter dem Computerknoten. Wählen Sie den Anwendungspool aus, der unter einer automatisch generierten Anwendungspoolidentität ausgeführt werden soll.

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

    Screenshot des Dialogfelds

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

  5. Das folgende Dialogfeld wird angezeigt:

    Screenshot des Dialogfelds

  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

Sichern 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 im Windows-Sicherheitssystem ein Sicherheitsbezeichner mit dem Namen "MyNewAppPool" erstellt. Ab diesem Zeitpunkt können Ressourcen mithilfe dieser Identität gesichert werden. Die Identität ist jedoch kein echtes Benutzerkonto; sie wird nicht als Benutzer in der Windows-Benutzerverwaltungskonsole angezeigt.

Sie können dies versuchen, indem Sie eine Datei im Windows-Explorer auswählen und die Identität "DefaultAppPool" zur Zugriffssteuerungsliste (Access Control List, ACL) der Datei hinzufügen.

  1. Öffnen des Windows-Explorers

  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 dann auf die Schaltfläche " Hinzufügen ".

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

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

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

    Screenshot des Dialogfelds

Dadurch lässt die ausgewählte Datei oder das ausgewählte Verzeichnis auch den DefaultAppPool-Identitätszugriff zu.

Sie können dies über die Befehlszeile über das ICACLS-Tool tun. Im 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 (standard unter Windows 7 und Windows Server 2008 R2 und höher), führt IIS Arbeitsprozesse als Anwendungspoolidentität aus. Bei jedem anderen Identitätstyp wird der Sicherheitsbezeichner nur in das Zugriffstoken des Prozesses eingefügt. Wenn der Bezeichner eingefügt wird, kann der Inhalt weiterhin ACLed für applicationPoolIdentity sein, der Besitzer des Tokens ist jedoch wahrscheinlich nicht eindeutig. Weitere Informationen zu diesem Konzept finden Sie im Blogbeitrag .

Zugreifen auf das Netzwerk

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

<domainname>\<machinename>$,

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 ist wahrscheinlich früheren Anleitungsdokumenten geschuldet, die explizit empfehlen, ACL-Ressourcen für Netzwerkdienst, d. h. die Standardidentität vom 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. Ein 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 kein Benutzerprofil vom System erstellt. Nur die Standardanwendungspools (DefaultAppPool und Classic .NET AppPool) verfügen über Benutzerprofile auf dem Datenträger. Wenn der Administrator einen neuen Anwendungspool erstellt, 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.