Freigeben über


Verwenden der Konfigurationsdelegierung in IIS 7.0

von Saad Ladki

Abstract

In diesem Artikel wird erläutert, wie Sie die delegierte Konfiguration auf dem Server aktivieren. Hier wird erläutert, wie Konfigurationseinstellungen für den Server und für Ihre Anwendungen zusammen mit den Inhaltsseiten und Anwendungscode bereitgestellt werden.

Nachdem der Computeradministrator die Anwendung oder das virtuelle Verzeichnis für die Verwendung in der Masterkonfigurationsdatei %windir%\system32\inetsrv\config\applicationHost.config definiert und die Delegierung bestimmter Abschnitte zugelassen hat, können Sie die Einstellungen auf Anwendungsebene steuern: Durch Festlegen von Einstellungen in der Datei „web.config“ der Anwendung setzen Sie globale Standardwerte außer Kraft. Dies ist möglich, wenn Sie Zugriff auf das Verzeichnis der Anwendung haben, auch wenn Sie kein lokaler Administrator auf dem Computer sind.

Nach der Lektüre dieses Dokuments wissen Sie, wie Sie Anwendungen und virtuelle Verzeichnisse auf globaler Ebene definieren, Konfigurationsabschnitte für die Delegierung entsperren und Konfigurationseinstellungen für einzelne Anwendungen auf einer niedrigeren Ebene der Konfigurationshierarchie außer Kraft setzen.

Einführung

IIS ermöglicht Computeradministratoren, die Aufgabe zum Festlegen und Ändern der Konfiguration an Website- und Anwendungsbesitzer zu delegieren. Dazu werden web.config-Dateien in den Inhaltsverzeichnissen verwendet. In diesen Dateien werden Konfigurationsabschnitte angegeben, die auf ihrer Ebene in der Hierarchie und abwärts wirksam werden. Der Computeradministrator muss ausdrücklich Abschnitte auf der globalen Ebene entsperren, um eine solche Delegierung zu ermöglichen. Standardmäßig sind die meisten IIS-Abschnitte für die Delegierung gesperrt, und alle .NET Framework-Abschnitte (einschließlich ASP.NET) sind nicht auf globaler Ebene gesperrt.

In diesem Dokument wird erläutert, wie neue Anwendungen und virtuelle Verzeichnisse auf globaler Ebene definiert werden. (Nur Computeradministratoren können diese Aufgabe ausführen, sie kann niemals delegiert werden.)

In diesem Dokument wird dann erläutert, wie Sie „web.config“ mit dem Anwendungsinhalt mithilfe von „xcopy“ bereitstellen, um einige Einstellungen für die entsprechende Ebene außer Kraft zu setzen. Außerdem werden die Kernkonzepte des Konfigurationssystems erläutert, und es wird erklärt, wie diese Aufgaben mithilfe der direkten Bearbeitung von Konfigurationsdateien ausgeführt werden, ohne die Benutzeroberfläche oder andere Abstraktionen auf dem Konfigurationssystem zu verwenden.

Voraussetzungen

  • Stellen Sie sicher, dass IIS 7.0 oder höher auf dem Computer installiert ist. Navigieren Sie in IE zu http://localhost/. Sie sehen, dass die standardmäßige Seite „In Bearbeitung“ geöffnet wird. Wenn IIS nicht installiert ist, finden Sie die Installationsanweisungen in der Setupanleitung.
  • Stellen Sie sicher, dass Sie über Administratorrechte auf dem Computer verfügen. Standardmäßig verfügen Sie nicht über diese Berechtigungen, wenn Sie als anderer Benutzer als der Administrator angemeldet sind, auch wenn dieser Benutzer der lokalen Administratorgruppe auf dem Computer hinzugefügt wurde. Dies ist ein neues Sicherheitsfeature in Windows Server® 2008, das als Benutzerkontensteuerung bezeichnet wird und über den Rahmen von IIS hinausgeht. Melden Sie sich entweder mit dem integrierten Administratorkonto an, oder rufen Sie Anwendungen bei Bedarf explizit als integrierter Administrator mithilfe des Befehlszeilentools „runas“ auf:

Beispiel: Um „notepad.exe“ zu starten, führen Sie den folgenden Befehl aus: „runas /user:administrator notepad.exe“. Sie werden zur Eingabe des Kennworts für das Administratorkonto aufgefordert. Es ist nützlich, eine Befehlsfeld-Shell zu verwenden, die bereits mit erhöhten Rechten versehen ist, indem Sie „runas /user:administrator cmd.exe“ ausführen. Jede Anwendung, die Sie über dieses Befehlsfeld ausführen, wird ebenfalls mit erhöhten Rechten versehen, und Sie müssen die Syntax „runas“ in diesem Befehlsfeld nicht verwenden.

  • Stellen Sie sicher, dass die Masterkonfigurationsdatei gesichert wird. Kopieren Sie einfach die Datei „applicationHost.config“ in eine andere Datei, damit Sie sie später wiederherstellen können. Sie finden die Datei „applicationHost.config“ im Verzeichnis „inetsrv\“, das sich wiederum unter dem Systemverzeichnis befindet.

Hinweis

Sie müssen ein Administrator sein, um diesen Schritt ausführen zu können (siehe vorheriger Aufzählungspunkt oben).

  • Stellen Sie zunächst sicher, dass ein „bereinigter Zustand“ vorliegt. Machen Sie hierfür die Änderungen rückgängig, die Sie möglicherweise in früheren Übungen an der Datei „applicationHost.config“ vorgenommen haben. (Wenn Sie ein VPC-Image verwenden, besteht die einfachste Möglichkeit darin, das Image neu zu starten, ohne seinen Zustand zu speichern.)
  • Es wird außerdem empfohlen, benutzerfreundliche HTTP-Fehlermeldungen in IE zu deaktivieren (Tools>Optionen>Erweitert), um eine schnellere Problembehandlung zu ermöglichen.

Schritt 1: Definieren einer neuen Anwendung

  1. Öffnen Sie mithilfe eines Text-Editors wie Windows-Editor die Datei „ApplicationHost.config“ am folgenden Ort:

    %windir%\system32\inetsrv\config\applicationHost.config
    
  2. Navigieren Sie zum Abschnitt <sites>, der etwa wie folgt aussieht:

    <sites>
        <siteDefaults>
            <logFile directory="C:\WINDOWS\System32\LogFiles" />
        </siteDefaults>
         <applicationDefaults applicationPool="DefaultAppPool"/>
         <site name="Default Web Site" id="1">
            <bindings>
              <binding protocol="http" bindingInformation="*:80:" />
            </bindings>
                    <application path="/">
              <virtualDirectory path="/" physicalPath="C:\inetpub\wwwroot" />
            </application>
             <logFile directory="C:\WINDOWS\System32\LogFiles" />
        </site>
    </sites>
    
  3. Stellen Sie sicher, dass der Webserver ausgeführt wird und Sie auf die Standardwebsite zugreifen können. Starten Sie dazu den Browser, und fordern Sie http://localhost/ an.

  4. Die Anforderung sollte eine Webseite zurückgeben. Wenn dies nicht der Fall ist, starten Sie den IIS-Server, indem Sie net start w3svc über das Befehlsfeld eingeben oder Probleme mit der Windows-Ereignisprotokollanzeige beheben.

  5. Fordern Sie im Browser http://localhost/ an.

    Diese Anforderung gibt keine Seite zurück (es wird eine Fehlerseite angezeigt), da der virtuelle Pfad in der Konfiguration noch nicht definiert ist. Dieser wird im nächsten Verfahren festgelegt.

  6. Fügen Sie in der Datei „ApplicationHost.config“ ein <application>-Element mit dem Pfad /app hinzu, der ein <virtualDirectory>-Element der obersten Ebene enthält. Ein virtuelles Verzeichnis der obersten Ebene ist ein Verzeichnis mit dem Pfad /. Geben Sie für den physischen Pfad des virtuellen Verzeichnisses C:\tmp an (oder ein ähnliches Verzeichnis, mit dem Sie später arbeiten werden).

    Wenn Sie fertig sind, sehen die <sites>-Abschnitte wie folgt aus:

    <sites>
        <siteDefaults>
            <logFile directory="C:\WINDOWS\System32\LogFiles" />
        </siteDefaults>
         <applicationDefaults applicationPool="DefaultAppPool"/>
         <site name="Default Web Site" id="1">
           <bindings>
             <binding protocol="http" bindingInformation="*:80:" />
           </bindings>
                   <application path="/">
             <virtualDirectory path="/" physicalPath="C:\inetpub\wwwroot" />
           </application>
           <application path="/app" >
            <virtualDirectory path="/" physicalPath="C:\tmp" />
          </application>
            <logFile directory="C:\WINDOWS\System32\LogFiles" />
        </site>
    </sites>
    

    Sie haben gerade eine neue Anwendung in der Konfigurationsdatei definiert.

  7. Fordern Sie im Browser http://localhost/ an.

    Der Webserver gibt eine Fehlerseite mit dem Hinweis zurück, dass die Verzeichnissuche nicht aktiviert ist. Dies liegt daran, dass c:\tmp noch keine Inhalte enthält, sodass der Server die Anforderung als Anforderung zum Durchsuchen des Verzeichnisses verarbeitet. Kopieren Sie „iisstart.htm“ aus dem Verzeichnis \inetpub\wwwroot in c:\tmp, und aktualisieren Sie den Browser. Nun wird die Seite „In Bearbeitung“ angezeigt.

Schritt 2: Entsperren von Konfigurationsabschnitten

  1. Öffnen Sie „applicationHost.config“ in einem Text-Editor wie Windows-Editor, und suchen Sie nach der Abschnittsgruppe <authentication>.

  2. Verschieben Sie die Abschnitte <anonymousAuthentication> und <windowsAuthentication> von der aktuellen Position in der Datei in ein neues Speicherorttag unten in der Datei, die „overrideMode="Allow"“ enthält:

    <configuration>
      <system.webServer>
        <security>
          <authentication>
           <!-- cut the anonymousAuthentication and windowsAuthentication -->
           <!-- XML elements from this area in the file, and paste below  -->
          </authentication>
        </security>
      </system.webServer>
       <location overrideMode="Allow">
        <system.webServer>
          <security>
            <authentication>
              <!-- paste the 2 sections from above here -->
            </authentication>
          </security>
        </system.webServer>
      </location>
    </configuration>
    

    Diese Abschnitte können jetzt durch niedrigere Ebenen des Namespace außer Kraft gesetzt werden, da sie sich in einem Speicherorttag befinden, das „overrideMode="Allow"“ angibt. Alle web.config-Dateien auf niedrigerer Ebene können diese Einstellungen jetzt außer Kraft setzen.

Schritt 3: Außerkraftsetzen von Einstellungen auf Anwendungsebene

  1. Erstellen Sie mithilfe eines Texteditors wie Windows-Editor im Anwendungsordner (z. B. c:\tmp) eine neue Textdatei mit dem Namen web.config.

  2. Erstellen Sie in der Datei „web.config“ ein <configuration>-Element mit dem untergeordneten Element <system.webServer>. Erstellen Sie innerhalb des <system.webServer>-Elements ein <security>-Element, das ein <authentication>-Element enthält.

  3. Geben Sie die Einstellungen ein, um die Schemas für die Windows-Authentifizierung und die anonyme Authentifizierung zu deaktivieren, die standardmäßig auf globaler Ebene aktiviert sind.

    Wenn Sie fertig sind, sieht die Datei „web.config“ wie folgt aus:

    <configuration>
      <system.webServer>
        <security>
          <authentication>
            <windowsAuthentication enabled="false" />
            <anonymousAuthentication enabled="false" />
          </authentication>
        </security>
      </system.webServer>
    </configuration>
    
  4. Fordern Sie im Browser http://localhost/app an.

    Hinweis

    Sie sind nicht berechtigt, die Seite anzuzeigen, da Sie alle Authentifizierungsmethoden für diese Seite in der Datei „web.config“ deaktiviert haben.

  5. Fordern Sie im Browser http://localhost/ an, und vergewissern Sie sich, dass Sie auf die Seite zugreifen können. Die Konfiguration in der Datei „web.config“ gilt nur auf Anwendungsebene.

  6. Aktivieren Sie in der Datei „web.config“ die Standardauthentifizierung, indem Sie ein <basicAuthentication>-Element hinzufügen, dessen Attribut enabled auf „true“ festgelegt ist.

    Wenn Sie fertig sind, sieht die Datei „web.config“ wie folgt aus:

    <configuration>
      <system.webServer>
        <security>
          <authentication>
            <windowsAuthentication enabled="false" />
            <anonymousAuthentication enabled="false" />
           <basicAuthentication enabled="true" />
          </authentication>
        </security>
      </system.webServer>
    </configuration>
    
  7. Fordern Sie http://localhost/app erneut an. Es wird eine Fehlerseite mit dem Hinweis angezeigt, dass einige Konfigurationen auf globaler Ebene gesperrt sind, und Sie sehen, dass die Dateien vom Typ „web.config“ versuchen, sie außer Kraft zu setzen. Daher handelt es sich um einen Konfigurationsfehler. Lassen Sie zur Behebung des Problems wie für die beiden anderen Abschnitte zu, dass der Abschnitt <basicAuthentication> auf globaler Ebene (applicationHost.config) außer Kraft gesetzt wird. Aktualisieren Sie dann den Browser.

    Sie werden jetzt zur Eingabe eines Benutzernamens und eines Kennworts aufgefordert, was darauf hinweist, dass die Standardauthentifizierung ausgeführt wird.

  8. Geben Sie den Benutzernamen und das Kennwort des angemeldeten Benutzers ein, und beachten Sie, dass die Seite angezeigt wird.

    Wenn Sie http://localhost/ anfordern, werden Sie nicht zur Eingabe von Benutzername und Kennwort aufgefordert, da die von Ihnen vorgenommenen Änderungen an der Konfiguration nur auf Anwendungsebene gelten.

    Hinweis

    Der Server und der Browser speichern beide das Benutzertoken zwischen. Wenn Sie von Grund auf neu beginnen möchten und die Eingabeaufforderung für den Benutzernamen nicht mehr angezeigt wird, schließen Sie den Browser, und beenden Sie den IIS-Arbeitsprozess. (Oder führen Sie „net stop /y http“ über die Windows-Befehlszeile und dann „net start w3svc“, um IIS neu zu starten.)

Zusammenfassung

In diesem Dokument wird erläutert, wie Anwendungen und virtuelle Verzeichnisse in der Masterkonfigurationsdatei „applicationHost.config“ definiert werden. Außerdem wird erläutert, wie anwendungsspezifische Konfigurationsdateien bereitgestellt werden, die Servereinstellungen im Abschnitt <system.webServer> enthalten. Sie können der Datei „web.config“ in der Abschnittsgruppe <system.web> Einstellungen (etwa ASP.NET-Einstellungen) hinzufügen.

Es empfiehlt sich, Zugriffssteuerungslisten (Access Control Lists, ACLs) in der Datei „web.config“ oder für das gesamte Verzeichnis Ihrer Anwendung festzulegen, damit Nicht-Administratoren nicht auf die Datei zugreifen können.