Seguridad del flujo de trabajo
Windows Workflow Foundation (WF) se integra con varias tecnologías diferentes, como Microsoft SQL Server y Windows Communication Foundation (WCF). Al interactuar con estas tecnologías, se pueden introducir problemas de seguridad en su flujo de trabajo si no se hace de manera correcta.
Nota:
Los flujos de trabajo describen el orden de ejecución y las dependencias entre tareas de corta o larga duración. Como mecanismo de ejecución de código, solo se debe cargar y ejecutar código de confianza. Los desarrolladores deben asegurarse de que solo se usan flujos de trabajo de confianza con aplicaciones que usan WF.
Problemas de seguridad de persistencia
Los flujos de trabajo que usan una actividad Delay y persistencia se deben reactivar mediante un servicio. Windows AppFabric usa el Servicio de administración de flujos de trabajo (WMS) para reactivar flujos de trabajo con temporizadores expirados. WMS crea un WorkflowServiceHost para hospedar el flujo de trabajo reactivado. Si se detiene el servicio de WMS, los flujos de trabajo conservados no se reactivarán cuando sus temporizadores expiren.
El acceso a la creación de instancias duraderas debe protegerse contra entidades malintencionadas externas al dominio de aplicación. Además, los desarrolladores deben asegurarse de que el código malintencionado no se pueda ejecutar en el mismo dominio de aplicación que el código de creación de instancias duraderas.
La creación de instancias duraderas no se debe ejecutar con permisos elevados (administrador).
Los datos que se procesan fuera del dominio de aplicación deben ser protegidos.
Las aplicaciones que necesitan aislamiento de seguridad no deben compartir la misma instancia de abstracción de esquema. Dichas aplicaciones deben usar proveedores de almacén diferentes o proveedores de almacén configurados usar diferentes instancias de almacén.
Problemas de seguridad de SQL Server
Cuando se usan numerosas actividades secundarias, ubicaciones, marcadores, extensiones de host o ámbitos, o cuando se usan marcadores con grandes cantidades de carga, puede ocurrir que la memoria se acabe o que se asignen cantidades indebidas de espacio a la base de datos durante la persistencia. Este hecho se puede reducir usando la seguridad del nivel de objeto o de la base de datos.
Al usar SqlWorkflowInstanceStore, se debe proteger el almacén de instancias.
Se deberían cifrar los datos confidenciales del almacén de instancias. Para más información, consulte SQL Server Encryption.
Puesto que la cadena de conexión a bases de datos se suele incluir en un archivo de configuración, la seguridad de nivel de Windows (ACL) se debe usar para asegurarse de que el archivo de configuración (Web.Config normalmente) es seguro, y que la información de inicio de sesión y contraseña no se incluyen en la cadena de conexión. La autenticación de Windows se debe usar entre la base de datos y el servidor web en su lugar.
Consideraciones para WorkflowServiceHost
Los puntos de conexión de Windows Communication Foundation (WCF) que se usan en los flujos de trabajo deben protegerse. Para más información, consulte Información general sobre seguridad de WCF.
La autorización en el nivel de host puede implementarse mediante ServiceAuthorizationManager. Para más información, consulte Procedimiento para crear un administrador de autorización personalizado para un servicio.
El ServiceSecurityContext para el mensaje entrante también está disponible desde el flujo de trabajo mediante el acceso a OperationContext.
CTP del paquete de seguridad de WF
Community Technology Preview (CTP) 1 del paquete de seguridad de Microsoft WF es un conjunto de actividades y su implementación se basa en Windows Workflow Foundation en .NET Framework 4 (WF 4) y Windows Identity Foundation (WIF). El CTP 1 del paquete de seguridad de Microsoft WF contiene ambas actividades y sus diseñadores que muestran cómo habilitar fácilmente diferentes escenarios relacionados con la seguridad usando el flujo de trabajo, incluidas:
Suplantar una identidad del cliente en el flujo de trabajo
Autorización en el flujo de trabajo, como PrincipalPermission y validación de notificaciones
Mensajería autenticada mediante ClientCredentials especificadas en el flujo de trabajo, como nombre de usuario/contraseña o un token recuperado de un Servicio de token de seguridad (STS)
Llevar un token de seguridad de cliente a un servicio de fondo (delegación basada en notificaciones) mediante ActAs de WS-Trust