Sicherheitskonfiguration für Persistenzspeicher
Der Zugriff auf die SQL Server-Persistenzdatenbank wird durch die folgenden SQL Server-Rollen gesichert:
InstanceStoreUsers. Mitglieder dieser Rolle können Workflowinstanzen im Instanzspeicher speichern bzw. aus ihm laden. Die Anwendung, die WorkflowServiceHost oder WorkflowApplication zum Bereitstellen von Diensten und SqlWorkflowInstanceStore für die Persistenz verwendet, sollte unter einer Identität ausgeführt werden, die Mitglied dieser Rolle ist.
InstanceStoreObservers. Mitglieder dieser Rolle können den Instanzspeicher abfragen. Die Anwendung, die WorkflowServiceHost oder WorkflowApplication zum Bereitstellen von Diensten und SqlWorkflowInstanceStore für die Persistenz verwendet, sollte unter einer Identität ausgeführt werden, die Mitglied dieser Rolle ist.
WorkflowAdministrators. Mitglieder dieser Rolle können der Befehlswarteschlange im Instanzspeicher Steuerungsbefehle hinzufügen (in die Warteschlange einstellen).
WorkflowActivationUsers. Mitglieder dieser Rolle können den Instanzspeicher auf aktivierbare Workflowinstanzen abfragen. Der Workflowverwaltungsdienst (Workflow Management Service, WMS) muss unter einer Identität ausgeführt werden, die Mitglied dieser Rolle ist.
WorkflowManagementServiceUsers. Mitglieder dieser Rolle können Steuerungsbefehle aus der Befehlswarteschlange im Instanzspeicher entfernen (aus der Warteschlange abrufen). Der WMS muss unter einer Identität ausgeführt werden, die Mitglied dieser Rolle ist.
Der Zugriff auf den SQL-Persistenzspeicher wird pro Speicher erteilt. Ein Benutzer, der Zugriff auf die in einem Instanzspeicher gespeicherten Instanzen eines Workflows besitzt, hat Zugriff auf alle Instanzen, einschließlich der Instanzen eines anderen Workflowdiensts im Speicher. Damit Benutzer, die Zugriff auf die Instanzen eines Diensts haben, am Zugriff auf Instanzen eines anderen Diensts gehindert werden, müssen Sie sicherstellen, dass für die zwei Dienste separate Instanzspeicher verwendet werden.
Wenn z. B. Dienst1 unter der Identität Benutzer1 ausgeführt wird, kann Leser1 auf Instanzen von Dienst1 abfragen, und Admin1 kann die Instanzen von Dienst1 steuern. Und analog wird Dienst2 unter der Identität Benutzer2 ausgeführt, Leser2 kann Instanzen von Dienst2 abfragen, und Admin2 kann die Instanzen von Dienst2 steuern. Damit Benutzer1/Leser1/Admin1 am Laden/Abfragen/Steuern der Instanzen von Dienst2 und Benutzer2/Leser2/Admin2 am Laden/Abfragen/Steuern der Instanzen von Dienst1 gehindert werden können, müssen alle Instanzen von Dienst1 in einem Instanzspeicher Speicher1 und alle Instanzen von Dienst2 in einem Instanzspeicher Speicher2 gespeichert sein.
In diesem Szenario muss ein Benutzer diesen Rollen die folgenden Benutzer oder Windows-Gruppen hinzufügen:
Benutzer1 muss der Rolle InstanceStoreUsers der Datenbank von Speicher1 hinzugefügt werden. Alternativ kann Benutzer1 auch einer Windows-Gruppe BenutzerGruppe1 und BenutzerGruppe1 der Rolle InstanceStoreUsers der Datenbank von Speicher1 hinzugefügt werden.
Fügen Sie Leser1 oder LeserGruppe1, eine Windows-Gruppe, in der Leser1 Mitglied ist, zur Rolle InstanceStoreObservers der Datenbank von Speicher1 hinzu.
Fügen Sie Admin1 oder AdminGruppe1, eine Windows-Gruppe, in der Admin1 Mitglied ist, zur Rolle WorkflowAdminstrators der Datenbank von Speicher1 hinzu.
Fügen Sie Benutzer2 oder BenutzerGruppe2, eine Windows-Gruppe, in der Benutzer2 Mitglied ist, zur Rolle InstanceStoreUsers der Datenbank von Speicher2 hinzu.
Fügen Sie Leser2 oder LeserGruppe2, eine Windows-Gruppe, in der Leser2 Mitglied ist, zur Rolle InstanceStoreObservers der Datenbank von Speicher2 hinzu.
Fügen Sie Admin2 oder AdminGruppe2, eine Windows-Gruppe, in der Admin2 Mitglied ist, zur Rolle WorkflowAdminstrators der Datenbank von Speicher2 hinzu.
Fügen Sie die Sicherheits-ID (SID) von WMS zur Windows-Gruppe AdminGroup1 und AdminGroup2 hinzu.
Durch Ausführen mehrerer Instanzen von WMS kann die Sicherheit weiter erhöht werden. Angenommen, es werden die zwei Instanzen WMS1 und WMS2 des Workflowverwaltungsdiensts zusammen unter dem Konto VORDEFINIERT\Lokale Dienste ausgeführt. Nehmen Sie ferner an, dass WMS1 die Sicherheits-ID WMS-SID1 und WMS2 die Sicherheits-ID WMS-SID2 zugewiesen ist. In diesem Fall müssen Sie die folgenden Schritte anstelle des letzten Schritts in der vorhergehenden Liste ausführen:
Fügen Sie WMS-SID1 der Windows-Gruppe WMSGruppe1 und WMSGruppe1 den Rollen WorkflowActivationUsers und WorkflowManagementServiceUsers der Datenbank von Speicher1 hinzu.
Fügen Sie WMS-SID2 der Windows-Gruppe WMSGruppe2 und WMSGruppe2 den Rollen WorkflowActivationUsers und WorkflowManagementServiceUsers der Datenbank von Speicher2 hinzu.
Autorisierung der Instanzsteuerungsendpunkte
Die Autorisierung der Instanzsteuerungsendpunkte (Instance Control Endpoints, ICEs) sollte für alle Dienste, die bei dem im vorherigen Abschnitt beschriebenen Szenario persistent Speicher1 zugewiesen sind, in WMSGruppe1 geändert werden. Analog dazu sollte die Autorisierung der ICEs aller Dienste, die persistent Speicher2 zugeordnet sind, in WMSGruppe2 geändert werden. Im folgenden Beispiel wird das Sichern des Zugriffs auf einen ICE mithilfe einer Konfigurationsdatei veranschaulicht.
<configuration>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="myServiceBehavior">
<workflowInstanceManagement authorizedWindowsGroup="WMSGroup1" />
</behavior>
</serviceBehaviors >
</behaviors>
</system.serviceModel>
</configuration>
Autorisierung der Dienstverwaltungsendpunkte
Für das am Anfang des Themas beschriebene Szenario sollte die Autorisierung der Dienstverwaltungsendpunkte (Service Management Endpoints, SMEs) aller dauerhaft Speicher1 zugeordneten Dienste in WMSGruppe1 geändert werden. Analog dazu sollte die Autorisierung der SMEs aller Dienste, die persistent Speicher2 zugeordnet sind, in WMSGruppe2 geändert werden. Im folgenden Beispiel wird das Sichern des Zugriffs auf einen SME mithilfe einer Konfigurationsdatei veranschaulicht.
<configuration>
<microsoft.applicationServer>
<hosting>
<serviceManagement enabled="true" authorizedWindowsGroup="WMSGroup1" endpointConfiguration="ServiceManagementNetPipeEndpoint" />
</hosting>
</microsoft.applicationServer>
</configuration>
Konfiguration des Workflowverwaltungsdiensts
Für das am Anfang des Themas beschriebene Szenario sollte WMS1 für die Überwachung von Speicher1 und WMS2 für die Überwachung von Speicher2 konfiguriert werden. Ändern Sie zu diesem Zweck den Konfigurationsabschnitt des Workflowverwaltungsdiensts in der Web.config-Stammdatei, wie in der folgenden Beispielkonfiguration veranschaulicht.
<configuration>
<microsoft.applicationServer>
<persistence>
<workflowManagement>
<workflowManagementServiceInstances>
<workflowManagementServiceInstance name="WMS1">
<instanceStores>
<instanceStore name="Store1" location="[root, SiteName or VPath]" />
</instanceStores>
</workflowManagementServiceInstance>
<workflowManagementServiceInstance name="WMS2">
<instanceStores>
<instanceStore name="Store2" location="[root, SiteName or VPath]" />
</instanceStores>
</workflowManagementServiceInstance>
</workflowManagementServiceInstances>
</workflowManagement>
</persistence>
</microsoft.applicationServer>
</configuration>
Windows Server AppFabric-Konfigurations-Assistent
Im AppFabric-Konfigurations-Assistenten können Windows-Gruppen drei Arten von Benutzern zugeordnet werden: Administratoren, Lesern und Benutzern. Standardmäßig sind die Windows-Gruppen AS_Administrators, AS_Observers und IIS_USRS den Administratoren, Lesern bzw. Benutzern zugeordnet. Der Assistent fügt AS_Administrators den Rollen InstanceStoreObservers, WorkflowActivationUsers, WorkflowAdministrators und WorkflowManagementServiceUsers in SQL Server sowie AS_Observers der Rolle InstanceStoreObservers und IIS_USRS der Rolle InstanceStoreUsers hinzu.
Der Assistent legt den Wert des Attributs authorizedWindowsGroup des workflowInstanceManagement-Elements und den Wert des authorizedWindowsGroup-Attributs des serviceManagement-Elements auf AS_Administrators fest.
2011-12-05