Freigeben über


Freigegebene Konfiguration und Remotebereitstellung

von Walter Oliver

Wenn Sie die freigegebene IIS 7-Konfiguration in einer Umgebung verwenden, in der Standortbereitstellungsaufgaben von einem Remotecomputer gesteuert werden, können Sie bemerken, was als „Problem der Double-Hop-Authentifizierung“ bekannt ist. Dieses Problem verhindert, dass Sie Bereitstellungsaufgaben ausführen. In diesem Artikel wird das Problem beschrieben, und es werden Problemumgehungen aufgezeigt.

Problembeschreibung

Die im folgenden Diagramm dargestellte Bereitstellungstopologie könnte eine gängige Option für die Nutzung der neuen, in IIS 7 verfügbaren gemeinsamen Konfigurationsfunktion sein, bei der die Konfiguration auf einer Netzwerkfreigabe zentralisiert ist und ein zentralisierter Bereitstellungsserver Bereitstellungsvorgänge in mehreren Webserverfarmen durchführt. Es wird davon ausgegangen, dass alle Webserverfarmen Windows Server® 2008 R2 mit IIS 7 ausführen.

Diagram that shows links between Provisioning Server, Web Server Farms, and Network Share Shared Configuration. File Share connects Network Share Shared Configuration to the Web Server Farms.
Typische Bereitstellungstopologie

Freigegebene Konfiguration kann einfach über IIS-Manager aktiviert werden, wie im folgenden Screenshot gezeigt.

Screenshot that shows the I I S Manager. The Shared Configuration pane is open.
Eine Reihe neuer verwalteter APIs wurde in IIS 7 im Microsoft.Web.Administration-Namespace bereitgestellt. Die APIs enthalten eine OpenRemote-Methode, die Remoteverwaltungen über das Netzwerk hinweg ermöglicht, wie im folgenden Diagramm dargestellt.

Diagram that shows links between Provisioning Server, Web Server Farms, and Network Share Shared Configuration. Provisioning Calls connects Provisioning Server to the Web Server Farms.

Der folgende Codeschnipsel veranschaulicht die Verwendung von OpenRemote zum Bereitstellen einer Anwendung auf einem anderen Webserver.

Screenshot that shows the code snippet demonstrating the use of Open Remote.

Wenn die freigegebene Konfiguration für den Remotewebserver aktiviert ist, wird beim Ausführen des Beispielcodes die folgende Fehlermeldung angezeigt:

Screenshot that shows Command Prompt. Remote is entered in the command line, and the operation failed due to insufficient permissions.

Das Problem ist nicht vorhanden, wenn der Remotewebserver anstelle der freigegebenen Konfiguration lokale Konfiguration verwendet.

Deaktivieren Sie die freigegebene IIS-Konfiguration:

Screenshot that shows the Shared Configuration pane. Enable shared configuration checkbox is cleared.

Führen Sie die Beispielanwendung erneut aus:

Screenshot that shows Command Prompt. Remote is entered in the command line, and the operation succeeded.

Die Änderung wurde erfolgreich übernommen.

Screenshot that shows the Default Web Site Home pane. Test is circled under the Default Web Site node in the Connections pane.

Dies ist ein Problem mit der Doppel-Hop-Authentifizierung, das durch die gemeinsame Konfiguration auf mehreren Servern verursacht wird. Der OpenRemote-Aufruf ruft einfach remote das COM-Objekt über DCOM auf. Wenn die Konfiguration nicht lokal konfiguriert ist, versucht das COM-Objekt, den doppelten Hop zu erledigen, der bei der Verwendung von COM nicht zulässig ist. Beachten Sie, dass dies nur im Schreibvorgang in die freigegebene Konfiguration erfolgt.

Wenn ein Lesevorgang durchgeführt wird, verwendet das Underline-Konfigurationssystem die in der Datei redirection.config gespeicherten Anmeldeinformationen, um sich auf dem entfernten Netzwerkfreigabeserver zu authentifizieren, bei dem dieses Doppel-Hop-Problem nicht auftritt. Bei Schreibvorgängen verwendet die unterstrichene Konfiguration das Sicherheitstoken des Aufrufers, um die Vorgänge durchzuführen, bei denen das Sicherheitstoken auf dem entfernten Netzwerkfreigabeserver ungültig ist.

Problemumgehungen

Option 1: Ändern der DCOM-Konfiguration für das COM-Konfigurationsobjekt mithilfe eines angegebenen Kontos

Um das Doppel-Hop-Problem mit dem Konfigurations-COM-Objekt zu umgehen, müssen wir die DCOM-Konfiguration so ändern, dass ein bestimmtes Konto anstelle des Sicherheitskontextes des Aufrufers verwendet wird, damit sich das Konfigurations-COM-Objekt am Remote-Netzwerkfreigabeserver mit den angegebenen Anmeldeinformationen authentifizieren kann.
Sie können das COM-Objekt für die IIS 7-Konfiguration - ahadmin - unter DCOM Config finden, indem Sie die Komponentendienste auf dem Remote-Webserver verwenden, wie in der folgenden Abbildung dargestellt:

Screenshot that shows the a h admin Properties dialog box. The launching user radio is selected.

Klicken Sie mit der rechten Maustaste auf den Knoten ahadmin und wählen Sie Eigenschaften..., wählen Sie die Registerkarte Identität, ändern Sie die Option in „Dieser Benutzer“ anstelle von „Der startende Benutzer“ und geben Sie ein Benutzerkonto mit den folgenden Berechtigungen an:

  1. Sie verfügen über Änderungsberechtigungen für die freigegebenen Konfigurationsdateien auf dem Netzwerkfreigabeserver.
  2. Sie verfügen über die Leseberechtigung für die Datei redirection.config, die unter system32\inetsrv\config gespeichert ist
  3. Mitglied der lokalen Administratorgruppe, andernfalls können Sie die Ausnahme nicht entschlüsseln.

Screenshot that shows the a h admin Properties dialog box. The This user radio is selected with entries for User, Password, and Confirm Password.

Klicken Sie auf OK.

Führen Sie die Beispielanwendung nach der Änderung erneut aus, und sie funktioniert erfolgreich.

Screenshot that shows Command Prompt. Remote is entered in the command line, and the remote admin operation succeeded.

Die Testanwendung wird ordnungsgemäß bereitgestellt.

Screenshot that shows the test Home pane. Test is selected and circled in the Connections pane.

Die Verwendung eines bestimmten Kontos für das Konfigurations-COM-Objekt könnte zusätzliche Sicherheitsrisiken bergen (d.h. jeder Benutzer könnte die Konfiguration ändern, solange er die Berechtigung hat, das COM-Objekt aufzurufen). Um die Sicherheitsrisiken zu verringern, konfigurieren Sie nur einen Webserver in der Webserver-Farm, der diese Option für die Bereitstellung verwendet, und konfigurieren Sie die Firewall so, dass nur bestimmte IP-Adressen auf den Server zugreifen können.

**Sicherheitswarnung**

Bei diesem Ansatz kann ein Nicht-Administrator möglicherweise Änderungen auf administrativer Ebene am Server vornehmen, da die Komponente nicht im Sicherheitskontext des Aufrufers läuft.

Option 2: Verwenden eines Beispielansatzes für Hostingdienste

Eine alternative Möglichkeit ist, OpenRemote nicht über einen DCOM-Aufruf zu verwenden und stattdessen einen Dienst wie das Codebeispiel für Hosting-Services zu erstellen, bei dem es sich um eine Reihe von Webdiensten handelt, die auf WCF (Windows Communication Foundation) aufbauen, und zwar auf einem der Webserver in der Webfarm, wie im folgenden Diagramm dargestellt:
Diagram that shows links between Provisioning Server, Web Server Farms, and Network Share Shared Configuration. Web Service connects Provisioning Server to the Web Server Farms.
Sie können den Windows Service verwenden, um die Dienste zu hosten, wenn Sie Probleme beim Hosten in IIS 7 haben. Der Webdienst baut auf den Microsoft.Web.Administration-APIs auf und bietet eine bessere Integrationsmöglichkeit, außerdem muss die Firewall nicht wie bei OpenRemote geöffnet werden.

Sicherheitsüberlegung

Der Dienst sollte geschützt werden, damit nur autorisierte und authentifizierte Benutzer den Dienst aufrufen können.

Option 3: Verwendung von WMI

Eine weitere Möglichkeit zur Vermeidung des Doppel-Hop-Problems ist die Verwendung des WMI-Dienstes, wie im folgenden Diagramm dargestellt.

Der WMI-Dienst hat die Möglichkeit, die Anmeldeinformationen für die Verbindung zum Remote-Webserver anzugeben. Der WMI-Dienst auf dem Remote-Server gibt die Identität vor, während er die Bereitstellungsoption durchführt, wie im folgenden Codeausschnitt gezeigt. Um die Vorgänge zu aktivieren, die mit einer freigegebenen Konfiguration arbeiten, müssen Sie die Identitätswechseloption angeben, während Sie eine Verbindung mit WMI auf dem Remoteserver herstellen. WMI erfordert außerdem, dass bestimmte Ports in der Firewall für Remoteaufrufe geöffnet sind.
Diagram that shows links between Provisioning Server, Web Server Farms, and Network Share Shared Configuration. W M I connects Provisioning Server to the Web Server Farms.