Konfigurieren der Prozessidentität in ASP.NET

ASP.NET-Seiten werden innerhalb eines Prozesses oder Windows-Programms ausgeführt. Alle Windows-Programme werden mit einer bestimmten Sicherheitsidentität ausgeführt. Standardmäßig wird der ASP.NET-Prozess unter einer vordefinierten Windows-Identität ausgeführt. Alternativ können Sie festlegen, dass ASP.NET unter einer anderen Identität oder unter der Windows-Identität des anfordernden Benutzers ausgeführt wird, indem Sie die Anwendung für die Verwendung von Identitätswechsel konfigurieren.

Zur Erhöhung der Sicherheit von ASP.NET-Anwendungen sollten Sie sicherstellen, dass der ASP.NET-Prozess mit einer Identität ausgeführt wird, die nur über die zur Ausführung der Anwendung erforderlichen Mindestberechtigungen verfügt. Dadurch werden die Auswirkungen beim Auftreten einer Sicherheitsverletzung durch von ASP.NET offengelegten Ressourcen reduziert.

Auf einem Webserver mit Microsoft Windows Server 2003 und Internet Information Services (IIS) 6.0 wird der ASP.NET-Prozess im Anwendungspool für die Webanwendung ausgeführt. Der Anwendungspool definiert die Identität, unter der ASP.NET ausgeführt wird, in der Standardeinstellung das NETZWERKDIENSTE-Konto. In älteren Versionen von IIS unter den Betriebssystemen Windows 2000 und Windows XP Professional wird ASP.NET im ASP.NET-Workerprozess (Aspnet_wp.exe) ausgeführt. Die Identität des Aspnet_wp.exe-Prozesses, in der Standardeinstellung das ASPNET-Konto, wird durch die Identität festgelegt, mit der ASP.NET ausgeführt wird.

Um auf einem Server unter Windows Server 2003 die Identität für eine ASP.NET-Anwendung festzulegen, konfigurieren Sie mit dem IIS-Manager die Identität des Anwendungspools für die ASP.NET-Anwendung. Die Identität des Anwendungspools muss gleichzeitig der Gruppe IIS_WPG auf dem Servercomputer hinzugefügt werden.

Für die Ausführung des ASP.NET-Workerprozesses mit einem eigenen Konto unter Windows 2000 oder Windows XP Professional können Sie die folgenden beiden Attribute auf das <processModel>-Konfigurationselement der Datei Machine.config des Webservercomputers anwenden:

  • userName   Der Name des Windows-Kontos, unter dem der Prozess ausgeführt werden soll.

  • password   Das Klartext-Kennwort für das Konto. Das Speichern von Klartext-Kennwörtern in einer Konfigurationsdatei birgt gewisse Sicherheitsrisiken. Wenn in der Konfigurationsdatei Anmeldeinformationen gespeichert werden, sollten Sie den Inhalt des <processModel>-Konfigurationselements mithilfe geschützter Konfiguration verschlüsseln. Weitere Informationen hierzu finden Sie unter Verschlüsseln von Konfigurationsinformationen mithilfe der geschützten Konfiguration. Im Internet veröffentlichte Anwendungen sollten nicht mit einer spezifischen Identität ausgeführt werden. Verwenden Sie eine der von IIS angebotenen Alternativen wie z. B. die anonyme Identität. Weitere Informationen hierzu finden Sie unter Verwenden der IIS-Authentifizierung mit ASP.NET-Identitätswechsel.

Das folgende Beispiel zeigt, wie diese Attribute im <processModel>-Element einer Konfigurationsdatei festgelegt werden können, um den Workerprozess unter einem lokalen Benutzerkonto auszuführen.

<system.web>
  <processModel enable="true"
    userName="LOCALMACHINE\IUSR_ProcessUser"
    password="%Hco94*#QW12"/>
</system.web>

Sie können das userName-Attribut nicht nur auf den Namen einer vorhandenen Windows-Identität, sondern auch auf die vordefinierten Namen System oder Machine festlegen. Der Workerprozess wird vom System-Konto unter der gleichen Identität wie IIS selbst (normalerweise SYSTEM) ausgeführt.

Security noteSicherheitshinweis Hinweis

Es ist nicht empfehlenswert, die Anwendung unter dem System-Konto auszuführen, da dieses über erweiterte Berechtigungen verfügt, was im Falle eines Angriffs auf den ASP.NET-Prozess ein Sicherheitsrisiko darstellt.

Das Machine-Konto führt den Workerprozess unter einem speziellen Konto mit dem Namen ASPNET aus, das nur über eingeschränkte Berechtigungen verfügt. Bei beiden Identitäten müssen dem Betriebssystem keine Anmeldeinformationen vom Prozess bereitgestellt werden.

Hinweis

Damit die ASP.NET-Anwendungen ordnungsgemäß ausgeführt werden, müssen Sie sicherstellen, dass die Prozessidentität auf die Zugriffssteuerungslisten (ACLs, Zugriffssteuerungslisten) zugreifen kann, die in Erforderliche Zugriffssteuerungslisten für ASP.NET aufgelistet sind. Auf IIS 5.0-Servern muss der Prozessidentität außerdem Lesezugriff auf die IIS-Metabasis gewährt werden. Verwenden Sie hierzu das Tool Aspnet_regiis.exe, und geben Sie die -ga-Option an, beispielsweise aspnet_regiis -ga "UserDomain\ApplicationUser".

Siehe auch

Weitere Ressourcen

Sicherheit für ASP.NET-Webanwendungen