Segurança do fluxo de trabalho
O Windows Workflow Foundation (WF) é integrado com várias tecnologias diferentes, como o Microsoft SQL Server e o Windows Communication Foundation (WCF). A interação com essas tecnologias pode introduzir problemas de segurança em seu fluxo de trabalho, se feita incorretamente.
Nota
Os fluxos de trabalho descrevem a ordem de execução e as dependências entre tarefas de curta ou longa execução. Como um mecanismo de execução de código, apenas o código confiável deve ser carregado e executado. Os desenvolvedores devem garantir que apenas fluxos de trabalho confiáveis sejam usados com aplicativos que usam WF.
Preocupações com a segurança de persistência
Os fluxos de trabalho que usam uma atividade e persistência Delay precisam ser reativados por um serviço. O Windows AppFabric usa o WMS (Serviço de Gerenciamento de Fluxo de Trabalho) para reativar fluxos de trabalho com temporizadores expirados. O WMS cria um WorkflowServiceHost para hospedar o fluxo de trabalho reativado. Se o serviço WMS for interrompido, os fluxos de trabalho persistentes não serão reativados quando seus temporizadores expirarem.
O acesso à instanciação duradoura deve ser protegido contra entidades maliciosas externas ao domínio da aplicação. Além disso, os desenvolvedores devem garantir que o código mal-intencionado não possa ser executado no mesmo domínio do aplicativo que o código de instanciação durável.
A instanciação durável não deve ser executada com permissões elevadas (Administrador).
Os dados que estão a ser processados fora do domínio da aplicação devem ser protegidos.
Os aplicativos que exigem isolamento de segurança não devem compartilhar a mesma instância da abstração do esquema. Esses aplicativos devem usar provedores de armazenamento diferentes ou provedores de armazenamento configurados para usar instanciações de armazenamento diferentes.
Preocupações com a segurança do SQL Server
Quando um grande número de atividades filhas, locais, marcadores, extensões de host ou escopos são usados, ou quando marcadores com cargas úteis muito grandes são usados, a memória pode ser esgotada ou quantidades indevidas de espaço no banco de dados podem ser alocadas durante a persistência. Isso pode ser atenuado usando segurança no nível do objeto e no nível do banco de dados.
Ao usar SqlWorkflowInstanceStoreo , o armazenamento de instâncias deve ser protegido.
Os dados confidenciais no armazenamento de instâncias devem ser criptografados. Para obter mais informações, consulte Criptografia do SQL Server.
Como a cadeia de conexão do banco de dados é frequentemente incluída em um arquivo de configuração, a ACL (segurança no nível do Windows) deve ser usada para garantir que o arquivo de configuração (Web.Config normalmente) seja seguro e que as informações de login e senha não sejam incluídas na cadeia de conexão. Em vez disso, a autenticação do Windows deve ser usada entre o banco de dados e o servidor Web.
Considerações para WorkflowServiceHost
Os pontos de extremidade do Windows Communication Foundation (WCF) usados em fluxos de trabalho devem ser protegidos. Para obter mais informações, consulte Visão geral de segurança do WCF.
A autorização no nível do host pode ser implementada usando ServiceAuthorizationManagero . Consulte Como: Criar um Gerenciador de Autorização Personalizado para um Serviço para obter detalhes.
O ServiceSecurityContext para a mensagem de entrada também está disponível no fluxo de trabalho acessando OperationContext.
Pacote de Segurança WF CTP
O Microsoft WF Security Pack community technology preview (CTP) 1 é um conjunto de atividades e sua implementação com base no Windows Workflow Foundation no .NET Framework 4 (WF 4) e no Windows Identity Foundation (WIF). O Microsoft WF Security Pack CTP 1 contém atividades e seus designers que ilustram como habilitar facilmente vários cenários relacionados à segurança usando o fluxo de trabalho, incluindo:
Representar uma identidade de cliente no fluxo de trabalho
Autorização no fluxo de trabalho, como PrincipalPermission e validação de declarações
Mensagens autenticadas usando ClientCredentials especificadas no fluxo de trabalho, como nome de usuário/senha ou um token recuperado de um STS (Serviço de Token de Segurança)
Fluindo um token de segurança do cliente para um serviço back-end (delegação baseada em declarações) usando WS-Trust Atas