Compartir a través de


Configuración de seguridad para almacenes de persistencia

El acceso a la base de datos de persistencia de SQL Server se protege a través de los siguientes roles de SQL Server:

  • InstanceStoreUsers. Los miembros de este rol pueden cargar instancias de flujo de trabajo del almacén de instancias o guardarlas en él. La aplicación que usa WorkflowServiceHost o WorkflowApplication para hospedar servicios y usa SqlWorkflowInstanceStore para persistencia debe ejecutarse bajo una identidad miembro de este rol.

  • InstanceStoreObservers. Los miembros de este rol pueden consultar el almacén de instancias. La aplicación que usa WorkflowServiceHost o WorkflowApplication para hospedar servicios y usa SqlWorkflowInstanceStore para persistencia debe ejecutarse bajo una identidad miembro de este rol.

  • WorkflowAdministrators. Los miembros de este rol pueden poner (agregar) comandos de control a la cola de comandos del almacén de instancias.

  • WorkflowActivationUsers. Los miembros de este rol pueden consultar el almacén de instancias para instancias de flujo de trabajo activables. El Servicio de administración de flujos de trabajo (WMS) debe ejecutarse bajo una identidad miembro de este rol.

  • WorkflowManagementServiceUsers. Los miembros de este rol pueden quitar (recuperar) comandos de control de la cola de comandos del almacén de instancias. El WMS debe ejecutarse bajo una identidad miembro de este rol.

El acceso al almacén de persistencia de SQL se concede para cada almacén individual. Los usuarios que tengan acceso a las instancias de un servicio de flujo de trabajo almacenado en un almacén de instancias tendrán acceso a todas las instancias, incluidas las instancias de un servicio de flujo de trabajo diferente en el almacén. Para impedir que los usuarios con acceso a instancias de un servicio obtengan acceso a instancias de otro servicio, debe asegurarse de que se usen almacenes de instancias independientes para estos dos servicios.

Por ejemplo, supongamos que Service1 se ejecuta bajo la identidad User1; Reader1 puede consultar instancias de Service1 y Admin1 puede controlar instancias de Service1. Y Service2 se ejecuta bajo la identidad User2, Reader2 puede solicitar instancias de Service2 y Admin2 puede controlar instancias de Service2. Para impedir que User1/Reader1/Admin1 cargue, consulte o controle instancias de Service2 y que User2/Reader2/Admin2 cargue, consulte o controle instancias de Service1, todas las instancias de Service1 deben almacenarse en un almacén de instancias Store1, y todas las instancias de Service2 deben almacenarse en un almacén de instancias Store2.

En este escenario, un usuario debe agregar los siguientes usuarios o grupos de Windows a estos roles:

  • Agregar User1 al rol InstanceStoreUsers de la base de datos Store1. Como alternativa, agregar User1 al grupo de Windows UserGroup1 y agregar UserGroup1 al rol InstanceStoreUsers de la base de datos Store1.

  • Agregar Reader1 o ReaderGroup1, un grupo de Windows del que Reader1 es miembro, para el rol InstanceStoreObservers de la base de datos Store1.

  • Agregar Admin1 o AdminGroup1, un grupo de Windows del que Admin1 es miembro, al rol WorkflowAdminstrators de la base de datos Store1.

  • Agregar User2 o UserGroup2, un grupo de Windows del que User2 es miembro, al rol InstanceStoreUsers de la base de datos Store2.

  • Agregar Reader2 o ReaderGroup2, un grupo de Windows del que Reader2 es miembro, al rol InstanceStoreObservers de la base de datos Store2.

  • Agregar Admin2 o AdminGroup2, un grupo de Windows del que Admin2 es miembro, al rol WorkflowAdminstrators de la base de datos Store2.

  • Agregar el identificador de seguridad (SID) del WMS a los grupos de Windows AdminGroup1 y AdminGroup2.

Ejemplo de seguridad de persistencia

Para aumentar la seguridad, puede ejecutar varias instancias del WMS. Por ejemplo, supongamos que dispone de dos instancias WMS1 y WMS2 del servicio de administración de flujos de trabajo en ejecución, y que ambas instancias se ejecutan bajo la cuenta BUILTIN\Local Services. Supongamos que WMS1 tiene asignado el identificador de seguridad WMS-SID1 y que WMS2 tiene asignado el identificador de seguridad WMS-SID2. En este caso, debe seguir los pasos siguientes en lugar de realizar el último paso de la lista de pasos anterior:

  • Agregar WMS-SID1 al grupo de Windows WMSGroup1 y agregar WMSGroup1 a WorkflowActivationUsers y WorkflowManagementServiceUsers de la base de datos Store1.

  • Agregar WMS-SID2 al grupo de Windows WMSGroup2 y agregar WMSGroup2 a WorkflowActivationUsers y WorkflowManagementServiceUsers de la base de datos Store2.

Autorización de extremos de control de instancias

Debe cambiar la autorización de extremos de control de instancias (ICE) de todos los servicios que persistan en Store1 a WMSGroup1 para el escenario descrito en la sección anterior. De manera similar, debe cambiar la autorización de los ICE de todos los servicios que persisten en Store2 a WMSGroup2. En el siguiente ejemplo se muestra el modo de proteger el acceso a un ICE mediante un archivo de configuración.

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

Autorización de extremos de administración de servicios

Debe cambiar la autorización de extremos de administración de servicios (SME) de todos los servicios que persistan en Store1 a WMSGroup1 para el escenario descrito al principio de este tema. De manera similar, debe cambiar la autorización de los SME de todos los servicios que persisten en Store2 a WMSGroup2. En el siguiente ejemplo se muestra el modo de proteger el acceso a un SME mediante un archivo de configuración.

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

Configuración del servicio de administración de flujos de trabajo

Debe configurar WMS1 para que supervise Store1 y WMS2 para que supervise Store2 para el escenario descrito al principio de este tema. Para ello, modifique la sección de configuración del Servicio de administración de flujos de trabajo del archivo Web.config raíz, tal como se muestra en la siguiente configuración de ejemplo.

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

Asistente para configuración de Windows Server AppFabric

El Asistente para configuración de AppFabric permite asociar grupos de Windows a tres tipos de usuarios: Administradores, Lectores y Usuarios. De manera predeterminada, los grupos de Windows AS_Administrators, AS_Observers e IIS_USRS están asociados con Administradores, Lectores y Usuarios, respectivamente. El asistente agrega AS_Administrators a los roles InstanceStoreObservers, WorkflowActivationUsers, WorkflowAdministrators y WorkflowManagementServiceUsers de SQL Server, agrega AS_Observers al rol InstanceStoreObservers y agrega IIS_USRS al rol InstanceStoreUsers.

El asistente configura en AS_Administrators el valor del atributo authorizedWindowsGroup del elemento workflowInstanceManagement y el valor del atributo authorizedWindowsGroup del elemento serviceManagement.

  2011-12-05