Per Mausklick bewerten und Feedback geben
MSDN
MSDN Library
Entwicklerbibliothek
.NET-Entwicklung
Security
 Vorgehensweise: Erstellen eines ben...
Vorgehensweise: Erstellen eines benutzerdefinierten Kontos zum Ausführen von ASP.NET
Aktualisiert: 05. Mai 2004
Auf dieser Seite

Zielsetzung Zielsetzung
Betrifft Betrifft
Verwendung dieses Moduls Verwendung dieses Moduls
Zusammenfassung Zusammenfassung
Benötigte Kenntnisse Benötigte Kenntnisse
Erstellen eines neuen lokalen Kontos Erstellen eines neuen lokalen Kontos
Zuweisen von minimalen Rechten Zuweisen von minimalen Rechten
Zuweisen von NTFS-Berechtigungen Zuweisen von NTFS-Berechtigungen
Konfigurieren von ASP.NET für die Ausführung unter Verwendung des neuen Kontos Konfigurieren von ASP.NET für die Ausführung unter Verwendung des neuen Kontos

Zielsetzung

Themenbereiche:

  • Erstellen eines Kontos mit minimalen Rechten, das über die erforderlichen Berechtigungen verfügt, um ASP.NET-Anwendungen richtig ausführen zu können

  • Konfigurieren von ASP.NET für die Ausführung eines benutzerdefinierten Kontos mit minimalen Rechten

Betrifft

Die Informationen in diesem Modul gelten für folgende Produkte und Technologien:

  • Microsoft® Windows® XP oder Windows 2000 Server (mit Service Pack 3) und höhere Betriebssysteme

  • Microsoft .NET Framework Version 1.0 (mit Service Pack 2) und höhere Versionen

  • Internetinformationsdienste (IIS) 5.0 oder 6.0 (nur bei Verwendung von IISS 5.0-Isolationsmodus)

Verwendung dieses Moduls

Empfehlungen für eine erfolgreiche Arbeit mit diesem Modul:

  • Sie müssen Erfahrung in der Entwicklung von ASP.NET-Webanwendungen haben und mit dem Zweck und der Struktur der Datei machine.config vertraut sein.

  • Sie müssen Erfahrung in der Erstellung und Verwaltung von eigenständigen oder domänenbasierten Windows-Benutzerkonten mit Windows-Verwaltungsprogrammen haben.

  • Lesen Sie Modul 8, "ASP.NET-Sicherheit". Dort erfahren Sie weitere Details über die Funktionsweise von ASP.NET-Sicherheit, über die Auswirkungen der Identität des ASP.NET-Workerprozesses auf die Berechtigungen einer ausführenden Anwendung und die Verwendung des Identitätswechsels, um einem Benutzer Ihrer Webanwendung einfach der entsprechenden Berechtigungsstufe zuzuteilen.

Zusammenfassung

Standardmäßig wird jeder ASP.NET-Workerprozess im Kontext eines Kontos mit minimalen Rechten ausgeführt, das die Bezeichnung ASPNET trägt. Wenn Ihre ASP.NET-Anwendung auf einem domänenbasierten Server bereitgestellt wird oder auf Ressourcen auf Remoteservern zugreifen muss, können Sie die Verwaltung vereinfachen, indem Sie ASP.NET für die Ausführung im Kontext eines anderen Kontos definieren.

In diesem Modul wird beschrieben, wie Sie ASP.NET für die Ausführung im Kontext eines benutzerdefinierten lokalen Kontos oder Domänenkontos ausführen und welche Berechtigungen Sie diesem Konto zuweisen müssen, damit es richtig funktioniert.

Benötigte Kenntnisse

Bevor Sie mit diesem Modul beginnen, sollten Sie sich über folgende Punkte im Klaren sein:

Identität des ASP.NET-Workerprozesses

Das zum Zeitpunkt der Installation angelegte Standardkonto zum Ausführen von ASP.NET ist ein lokales Konto mit minimalen Rechten und wird in machine.config wie folgt definiert:

<processModel enable="true" userName="Computer" password="AutoGenerate" />

Dieses Konto wird im Container Lokale Benutzer und Gruppen als "ASPNET" aufgeführt und verfügt über ein sicheres Kennwort, das in der Local Security Authority (LSA) gesichert ist.

Wenn Sie über die ASP.NET-Prozessidentität auf Netzwerkressourcen wie eine Datenbank zugreifen müssen, haben Sie die folgenden Möglichkeiten:

  • Sie können ein Domänenkonto verwenden.

  • Sie können "gespiegelte" lokale Konten verwenden (d. h. Konten mit übereinstimmenden Benutzernamen und Kennwörtern auf zwei Computern). Diese Vorgehensweise ist zwingend, wenn sich die Computer in unterschiedlichen Domänen ohne Vertrauensstellung befinden, oder wenn sich zwischen den Computern eine Firewall befindet und Sie die für die NTLM- oder Kerberos-Authentifizierung benötigten Anschlüsse nicht öffnen können.

    Die einfachste Vorgehensweise besteht darin, das Kennwort des ASPNET-Kontos in einen dem Webserver bekannten Wert zu ändern und dann ein Konto mit Namen ASPNET mit dem gleichen Kennwort auf dem Zielcomputer zu erstellen. Auf dem Webserver müssen Sie zuerst das Kennwort des ASPNET-Kontos im Container Lokale Benutzer und Gruppen ändern und dann die Anmeldeinformationen im Element <processModel< in machine.config austauschen. Sie sollten Kennwörter in machine.config nicht im Klartext speichern, sondern stattdessen mithilfe von aspnet_setreg.exe verschlüsselte Kennwörter in der Registrierung speichern. Weitere Informationen finden Sie in Modul 8, "ASP.NET-Sicherheit".

    <processModel enable="true" 
          userName="registry:HKLM\SOFTWARE\YourSecureApp\processModel\
                    ASPNET_SETREG,userName" 
          password="registry:HKLM\SOFTWARE\YourSecureApp\processModel\
                    ASPNET_SETREG,password" . . ./>
    

    Mit den in diesem Modul erläuterten Schritten können Sie ein lokales Konto mit minimalen Rechten erstellen.

Identitätswechsel zu festen Identitäten

Mithilfe der folgenden Einstellung in web.config können Sie feste Identitäten für bestimmte virtuelle Verzeichnisse festlegen. Verwenden Sie aspnet_setreg.exe, um verschlüsselte Anmeldeinformationen in der Registrierung zu speichern.

<identity impersonate="true"
          userName="registry:HKLM\SOFTWARE\YourSecureApp\
                    identity\ASPNET_SETREG,userName"
          password="registry:HKLM\SOFTWARE\YourSecureApp\
                    identity\ASPNET_SETREG,password" />

Dieses Verfahren wird in der Regel verwendet, wenn Sie auf dem gleichen Webserver mehrere Websites verwalten, die unter unterschiedlichen Identitäten ausgeführt werden müssen, also beispielsweise beim Anwendungshosting.

In diesem Modul wird gezeigt, wie ein lokales Konto mit minimalen Rechten angelegt wird. Wenn es in erster Linie um die Verwaltung geht, können Sie auch ein eingeschränktes Domänenkonto mit minimalen Rechten und einem sicheren Kennwort verwenden.

Bei den Überlegungen bezüglich des Kontos zum Ausführen von ASP.NET sollten Sie Folgendes berücksichtigen:

  • ASP.NET führt nicht standardmäßig einen Identitätswechsel durch. Demzufolge wird bei jedem Ressourcenzugriff seitens der Webanwendung die ASP.NET-Prozessidentität verwendet. In diesem Fall müssen Windows-Ressourcen über eine Access Control List (ACL oder Zugriffssteuerungsliste) verfügen, die den Zugriff auf das ASP.NET-Prozesskonto ermöglicht.

  • Wenn Sie den Identitätswechsel aktivieren, greift die Anwendung über den Sicherheitskontext des ursprünglichen Benutzers oder des anonymen Internetbenutzerkontos (standardmäßig IUSR_MACHINE) auf Ressourcen zu, wenn IIS für die anonyme Authentifizierung konfiguriert ist. In diesem Fall müssen die Ressourcen über ACLs basierend auf der Identität des ursprünglichen Benutzers (oder IUSR_MACHINE) verfügen.

  • Halten Sie sich bei der Erstellung eines benutzerdefinierten Kontos immer an das Prinzip der minimalen Rechte, d. h. gewähren Sie jeweils nur das Minimum der erforderlichen Rechte und Berechtigungen.

  • Vermeiden Sie es, ASP.NET unter Verwendung des Kontos SYSTEM auszuführen.

  • Sehen Sie davon ab, dem Konto das Recht "Als Teil des Betriebssystems handeln" zu gewähren.

Erstellen eines neuen lokalen Kontos

Mit diesem Verfahren wird ein neues lokales Konto erstellt. Das neue Konto wird standardmäßig der lokalen Gruppe Benutzer hinzugefügt.

  • So erstellen Sie ein neues lokales Konto

    1. Erstellen Sie ein lokales Konto (zum Beispiel "CustomASPNET").
      Verwenden Sie unbedingt ein sicheres Kennwort für das Konto. Sichere Kennwörter umfassen mindestens sieben Zeichen und setzen sich aus einer Mischung aus Groß- und Kleinbuchstaben, Zahlen und Sonderzeichen wie *, ? oder $ zusammen.

    2. Deaktivieren Sie die Option Benutzer muss Kennwort bei der nächsten Anmeldung ändern.

    3. Aktivieren Sie die Option Kennwort läuft nie ab.

Zuweisen von minimalen Rechten

Mit diesem Verfahren werden die minimalen Rechte zugewiesen, die zum Ausführen von ASP.NET erforderlich sind.

  • So weisen Sie minimale Rechte zu

    1. Starten Sie das Tool Lokale Sicherheitsrichtlinie aus der Programmgruppe Verwaltung.

    2. Erweitern Sie Lokale Sicherheitsrichtlinie und wählen Sie Zuweisen von Benutzerrechten.
      Im rechten Fensterausschnitt wird eine Liste der Rechte angezeigt.

    3. Weisen Sie dem neuen Konto die folgenden Rechte zu:

      • Auf diesen Computer vom Netzwerk aus zugreifen

      • Anmelden als Stapelverarbeitungsauftrag

      • Als Dienst anmelden

      • Lokale Anmeldung verweigern

      • Anmeldung über Terminaldienste verweigern

      Hinweis: Wenn Sie einem Konto ein Recht zuweisen möchten, doppelklicken Sie auf das Recht und klicken dann auf Hinzufügen, um das gewünschte Konto auswählen zu können.

    4. Schließen Sie das Tool.

Zuweisen von NTFS-Berechtigungen

Mit diesem Verfahren werden dem benutzerdefinierten ASP.NET-Konto die erforderlichen NTFS-Berechtigungen im lokalen Dateisystem gewährt.

Hinweis: Die Schritte in diesem Verfahren beziehen sich auf das Dateisystem auf dem Webserver (und nicht auf einem Remotecomputer, auf dem Sie evtl. das Konto zum Zwecke der Netzwerkauthentifizierung duplizieren).

  • So weisen Sie NTFS-Berechtigungen zu

    1. Starten Sie den Windows Explorer und weisen Sie für die in Tabelle 1 aufgeführten Ordner die geeigneten Berechtigungen zu.

      Das in Tabelle 1 genannte Konto für den Wechsel zu einer festen Identität bezieht sich auf das Konto, das optional unter Verwendung des <identity<-Elements in web.config wie nachstehend gezeigt konfiguriert werden kann.

      <identity impersonate="true"
                userName="registry:HKLM\SOFTWARE\YourSecureApp\
                          identity\ASPNET_SETREG,userName"
                password="registry:HKLM\SOFTWARE\YourSecureApp\
                          identity\ASPNET_SETREG,password" />
      

      In diesem Beispiel wurde aspnet_setreg.exe verwendet, um die benutzerdefinierten Kontoanmeldeinformationen in verschlüsselter Form in der Registrierung zu speichern.

      Tabelle 1: Erforderliche NTFS-Berechtigungen

      Speicherort Erforderliche Berechtigung Konto Kommentare Temporäre ASP.NET-Dateien:
      C:\WINNT\Microsoft.NET\
      Framework\Version\
      Temporary ASP.NET Files Vollzugriff Prozesskonto und Konten für den Wechsel zu einer festen Identität Dies ist die
      dynamische Kompilierungsposition
      von ASP.NET. Der Anwendungscode wird
      für jede Anwendung in diesem
      Ordner in einem getrennten Verzeichnis erzeugt.
      Zum Ändern dieser Standardposition kann das tempdir-Attribut
      des <compilation>-Elements
      verwendet werden. Temporärer Ordner:
      C:\WINNT\Temp Lesen/Schreiben/Löschen Prozesskonto Von Webdiensten
      zum Erzeugen von Serialisierungsproxys
      verwendete Position.
      Beachten Sie, dass die Berechtigung
      zum Löschen unter Verwendung der Schaltfläche
      Erweitert auf der Registerkarte
      Sicherheitseinstellungen des
      Windows Explorer-Dialogfeldes
      Eigenschaften von [Ordner] festgelegt wird. Virtuelles Anwendungsverzeichnis:
      C:\inetpub\wwwroot\webapp1 Lesen Prozesskonto Die Position der Dateien Ihrer
      Webanwendung (d. h. das virtuelle
      Stammverzeichnis der
      Anwendung.
      Die Gruppe Benutzer
      verfügt standardmäßig über die entsprechenden
      Zugriffsrechte.

      Installationshierarchie (%installroot):

      (C:\WINNT\Microsoft.Net\
      Framework\v1.0.3705) Lesen Prozesskonto und Konten für den Wechsel zu einer festen Identität ASP.NET muss in der Lage sein, auf
      NET Framework-Assemblys zuzugreifen.
      Die Gruppe Benutzer verfügt
      standardmäßig über die entsprechenden
      Zugriffsrechte. Globaler Assemblycache:
      C:\WINNT\Assembly Lesen Prozesskonto und Konten für den Wechsel zu einer festen Identität Dies ist der globale
      Assemblycache. Die Bearbeitung der ACLs für
      diesen Ordner kann nicht direkt
      vom Windows Explorer aus erfolgen.
      Verwenden Sie stattdessen ein
      Befehlsfenster und führen Sie den
      folgenden Befehl aus:
      cacls %windir%\assembly /e
      /t /p domain\useraccount:R

      Wahlweise können Sie vor der
      Verwendung des Windows Explorer auch
      die Registrierung der Datei shfusion.dll mit
      dem folgenden Befehl aufheben:
      regsvr32 -u shfusion.dll
      Nach der Festlegung von
      Berechtigungen mit dem Windows Explorer registrieren
      Sie die Datei shfusion.dll mit dem
      folgenden Befehl erneut:
      regsvr32 shfusion.dll Websitestamm:
      C:\inetpub\
      wwwroot oder der Pfad, auf den die
      Standardwebsite verweist Lesen Prozesskonto ASP.NET liest Konfigurationsdateien und überwacht Dateiänderungen in diesem Ordner. Systemstamm:
      C:\WINNT\system32 Lesen Prozesskonto Für System-DLLs, die vom Framework geladen werden. Hierarchie der Anwendungsordner
      C:
      \C:\inetpub\
      C:\inetpub\wwwroot\
      C:\inetpub\wwwroot\ mywebapp1 Ordner auflisten/Lesen Prozesskonto Für Dateiänderungsbenachrichtigungen und den C#-Compiler (aus Kanonisierungsgründen) benötigt das Prozesskonto Berechtigungen zum Auflisten von Ordnern und Lesen von Daten für die Hierarchie der Anwendungsordner, also für alle übergeordneten Ordner bis hin zum Stamm.

Konfigurieren von ASP.NET für die Ausführung unter Verwendung des neuen Kontos

Mit diesem Verfahren wird machine.config bearbeitet und ASP.NET so konfiguriert, dass es mit dem neuen Konto ausgeführt werden kann.

  • So konfigurieren Sie ASP.NET für die Ausführung mit dem neuen Konto

    1. Führen Sie an einer Eingabeaufforderung aspnet_setreg.exe aus, um der Registrierung eine verschlüsselte Version des Benutzernamens und des Kennworts Ihres benutzerdefinierten Kontos hinzuzufügen. Informationen zu diesem Dienstprogramm und Anweisungen für den Download finden Sie im Artikel 329290, "HOWTO: Use the ASP.NET Utility to Encrypt Credentials and Session State Connection Strings" (englischsprachig) der Knowledge Base unter: http://support.microsoft.com/default.aspx?scid=329290.

      aspnet_setreg -k:SOFTWARE\YourSecureApp\processModel 
                    -u:"CustomASPNET" -p:"YourStrongPassword"
      
    2. Öffnen Sie machine.config mit Visual Studio.NET oder Notepad.
      Die Datei machine.config befindet sich im folgenden Ordner:

      C:\WINNT\Microsoft.NET\Framework\v1.0.3705\CONFIG
      
    3. Suchen Sie das <processModel>-Element, und legen Sie die Benutzernnamen- und Kennwort-Attribute so fest, dass sie folgende Zeichenfolgen enthalten, die auf die verschlüsselten Anmeldeinformationen verweisen.

      Default: 
      <processModel userName="machine" password="AutoGenerate" . . ./>
      Becomes: 
      <processModel 
        userName="registry:HKLM\SOFTWARE\YourSecureApp\processModel\
                  ASPNET_SETREG,userName" 
        password="registry:HKLM\SOFTWARE\YourSecureApp\processmodel\
                  ASPNET_SETREG,password" . . . />
      
    4. Speichern Sie die Änderungen an machine.config.


© 2008 Microsoft Corporation. Alle Rechte vorbehalten. Nutzungsbedingungen  |  Markenzeichen  |  Informationen zur Datensicherheit
Page view tracker