Partager via


Configuration de la sécurité pour les magasins de persistance

L'accès à la base de données de persistance SQL Server est sécurisé via les rôles SQL Server suivants :

  • InstanceStoreUsers. Les membres de ce rôle peuvent charger/enregistrer les instances de flux de travail à partir du/vers le magasin d'instances. L'application qui utilise WorkflowServiceHost ou WorkflowApplication pour l'hébergement des services et SqlWorkflowInstanceStore pour la persistance doit être exécutée sous une identité membre de ce rôle.

  • InstanceStoreObservers. Les membres de ce rôle peuvent interroger le magasin d'instances. L'application qui utilise WorkflowServiceHost ou WorkflowApplication pour l'hébergement des services et SqlWorkflowInstanceStore pour la persistance doit être exécutée sous une identité membre de ce rôle.

  • WorkflowAdministrators. Les membres de ce rôle peuvent placer (ajouter) des commandes de contrôle dans la file d'attente de commandes du magasin d'instances.

  • WorkflowActivationUsers. Les membres de ce rôle peuvent rechercher les instances de flux de travail activables dans le magasin d'instances. Le service de gestion du flux de travail (WMS, Workflow Management Service) doit être exécuté sous une identité membre de ce rôle.

  • WorkflowManagementServiceUsers. Les membres de ce rôle peuvent enlever (récupérer) des commandes de contrôle de la file d'attente de commandes du magasin d'instances. Le service WMS doit être exécuté sous une identité membre de ce rôle.

L'accès à la base de données de persistance SQL est octroyé sur la base du magasin. Un utilisateur autorisé à accéder aux instances d'un service de flux de travail stockées dans un magasin d'instances peut également accéder aux instances d'un autre service de flux de travail dans le magasin. Pour empêcher les utilisateurs autorisés à accéder aux instances d'un service d'accéder aux instances d'un autre service, vous devez vérifier que des magasins d'instances distincts sont utilisés pour les deux services.

Par exemple, supposons que Service1 est exécuté sous l'identité User1, que Reader1 peut rechercher les instances de Service1 et qu'Admin1 peut contrôler les instances de Service1. Service2 est exécuté sous l'identité User2, Reader2 peut rechercher les instances de Service2 et Admin2 peut contrôler les instances de Service2. Pour empêcher User1/Reader1/Admin1 de charger/rechercher/contrôler les instances de Service2 et User2/Reader2/Admin2 de charger/rechercher/contrôler les instances de Service1, toutes les instances de Service1 doivent être stockées dans un magasin d'instances Store1 et toutes les instances de Service2 doivent être stockées dans un magasin d'instances Store2.

Dans ce cas, un utilisateur doit ajouter les utilisateurs ou groupes Windows suivants à ces rôles :

  • Ajouter User1 au rôle InstanceStoreUsers de la base de données Store1. Ou ajouter User1 au groupe Windows UserGroup1 et ajouter UserGroup1 au rôle InstanceStoreUsers de la base de données Store1.

  • Ajouter Reader1 ou ReaderGroup1 (groupe Windows dont fait partie Reader1) au rôle InstanceStoreObservers de la base de données Store1.

  • Ajouter Admin1 ou AdminGroup1 (groupe Windows dont fait partie Admin1) au rôle WorkflowAdminstrators de la base de données Store1.

  • Ajouter User2 ou UserGroup2 (groupe Windows dont fait partie User2) au rôle InstanceStoreUsers de la base de données Store2.

  • Ajouter Reader2 ou ReaderGroup2 (groupe Windows dont fait partie Reader2) au rôle InstanceStoreObservers de la base de données Store2.

  • Ajouter Admin2 ou AdminGroup2 (groupe Windows dont fait partie Admin2) au rôle WorkflowAdministrators de la base de données Store2.

  • Ajouter l'identificateur de sécurité (SID) du service WMS aux groupes Windows AdminGroup1 et AdminGroup2.

Exemple de sécurité de la persistance

Pour une sécurité accrue, vous pouvez exécuter plusieurs instances du service WMS. Par exemple, supposons que deux instances du service de gestion du flux de travail (WMS1 et WMS2) sont exécutées sous le compte BUILTIN\Local Services. WMS1 est associé à l'identificateur de sécurité WMS-SID1, tandis que WMS2 est associé à l'identificateur de sécurité WMS-SID2. Dans ce cas, vous devez suivre les étapes suivantes plutôt que d'effectuer la dernière étape de la procédure précédente :

  • Ajouter WMS-SID1 au groupe Windows WMSGroup1 et ajouter WMSGroup1 aux rôles WorkflowActivationUsers et WorkflowManagementServiceUsers de la base de données Store1.

  • Ajouter WMS-SID2 au groupe Windows WMSGroup2 et ajouter WMSGroup2 aux rôles WorkflowActivationUsers et WorkflowManagementServiceUsers de la base de données Store2.

Autorisation des points de terminaison de contrôle des instances

Vous devez modifier l'autorisation des points de terminaison de contrôle des instances pour tous les services rendus persistants vers Store1 sur WMSGroup1 pour le scénario décrit dans la section précédente. De même, vous devez modifier l'autorisation des points de terminaison de contrôle des instances pour tous les services rendus persistants vers Store2 sur WMSGroup2. L'exemple suivant montre comment sécuriser l'accès à un point de terminaison de contrôle des instances à l'aide d'un fichier de configuration.

<configuration>
    <system.serviceModel>
        <behaviors>
            <serviceBehaviors>
                <behavior name="myServiceBehavior">
                    <workflowInstanceManagement authorizedWindowsGroup="WMSGroup1" />
                </behavior>
            </serviceBehaviors >
        </behaviors>
    </system.serviceModel>
</configuration>

Autorisation des points de terminaison de gestion des services

Vous devez modifier l'autorisation des points de terminaison de gestion des services pour tous les services rendus persistants vers Store1 sur WMSGroup1 pour le scénario décrit au début de la rubrique. De même, vous devez modifier l'autorisation des points de terminaison de gestion des services pour tous les services rendus persistants vers Store2 sur WMSGroup2. L'exemple suivant montre comment sécuriser l'accès à un point de terminaison de gestion des services à l'aide d'un fichier de configuration.

<configuration>
    <microsoft.applicationServer>
        <hosting>
            <serviceManagement enabled="true" authorizedWindowsGroup="WMSGroup1" endpointConfiguration="ServiceManagementNetPipeEndpoint" />
        </hosting>
    </microsoft.applicationServer>
</configuration>

Configuration du service de gestion du flux de travail

Vous devez configurer WMS1 pour surveiller Store1 et WMS2 pour surveiller Store2 pour le scénario décrit au début de la rubrique. Pour ce faire, modifiez la section de configuration du service de gestion du flux de travail dans le fichier Web.config racine, comme indiqué dans l'exemple de configuration suivant.

<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>

Assistant Configuration de Windows Server AppFabric

L'Assistant Configuration d'AppFabric permet d'associer des groupes Windows à trois types d'utilisateurs : Administrateurs, Lecteurs et Utilisateurs. Par défaut, les groupes Windows AS_Administrators, AS_Observers et IIS_USRS sont associés aux types Administrateurs, Lecteurs et Utilisateurs respectivement. L'Assistant ajoute le groupe AS_Administrators aux rôles InstanceStoreObservers, WorkflowActivationUsers, WorkflowAdministrators et WorkflowManagementServiceUsers dans SQL Server, le groupe AS_Observers au rôle InstanceStoreObservers et le groupe IIS_USRS au rôle InstanceStoreUsers.

L'Assistant définit la valeur de l'attribut authorizedWindowsGroup de l'élément workflowInstanceManagement et la valeur de l'attribut authorizedWindowsGroup de l'élément serviceManagement sur AS_Administrators.

  2011-12-05