Segurança de componentes em fila

Quando um cliente faz uma chamada de método para um objeto em fila, a chamada é realmente feita para o gravador, que a empacota como parte de uma mensagem para o servidor. O ouvinte lê a mensagem da fila e a passa para o player. O jogador invoca o componente de servidor real e faz a mesma chamada de método. O componente de servidor deve observar o contexto de chamada de segurança do cliente (não o contexto de chamada de segurança do jogador) quando o jogador faz a chamada de método. O gravador marca o contexto da chamada de segurança do cliente na mensagem e o player a desmarca no servidor antes de fazer a chamada do método. No que diz respeito ao objeto do servidor, não há diferença no contexto de segurança entre uma chamada direta do cliente e uma chamada indireta do player. Em particular, os métodos invocados são executados com os privilégios do remetente.

Um componente em fila COM+ oferece suporte à semântica de segurança baseada em função, assim como outros componentes criados para uso com aplicativos COM+. Os componentes de um aplicativo em fila podem, portanto, usar interfaces programáticas para descobrir a associação de função de seu chamador (ISecurityCallContext::IsCallerInRole) ou um usuário específico (ISecurityCallContext::IsUserInRole). É recomendável que qualquer componente enfileirado com um possível impacto na segurança use essas interfaces para verificar explicitamente as credenciais do remetente.

A identidade do chamador é a identidade associada a uma chamada de método. A identidade do chamador é usada pela segurança baseada em função e está presente no contexto da chamada de segurança. Em componentes enfileirados, a identidade do chamador é representada como dados na mensagem do serviço de enfileiramento de mensagens. O serviço de enfileiramento de mensagens autentica a identidade do remetente da mensagem. Quando a identidade do chamador e a identidade do remetente da mensagem são iguais, o serviço de enfileiramento de mensagens autentica a mensagem e o chamador. Este é o caso habitual.

Observação

Os componentes em fila COM+ não oferecem suporte à segurança de estilo de representação, o que permite que um servidor obtenha um token de acesso correspondente à identidade do cliente e use-o para executar verificações de controle de acesso ou agir sob o contexto de segurança do cliente.

 

Quando o chamador de um componente em fila está interagindo com o componente por meio de um gravador fora de processo, as identidades do chamador e do remetente da mensagem (gravador) podem ser diferentes. Nesse caso, os componentes em fila COM+ verificam se o remetente da mensagem é membro da função de Usuário Confiável do QC no servidor. Além disso, o gravador fora de processo requer um certificado de autenticação porque está sendo autenticado pelo serviço de enfileiramento de mensagens.

Os membros da função de Usuário Confiável do QC têm permissão para especificar uma identidade arbitrária, o que significa que um membro mal-intencionado pode executar uma chamada de componente em fila com privilégios elevados. Recomenda-se, por conseguinte, que o número desses utilizadores seja reduzido ao mínimo absoluto.

Devido ao risco de um ataque sofisticado associado a qualquer mecanismo que propague a identidade através de uma rede, bem como o risco de um simples ataque de negação de serviço inundando as filas com solicitações não executáveis, é recomendável implantar o serviço de componentes em fila COM+ somente em uma rede de hosts confiáveis — por exemplo, em uma rede privada ou em uma rede virtual privada, ou atrás de um firewall configurado adequadamente.

Os componentes em fila COM+ são executados sobre DCOM, para que você possa ajudar a proteger a integridade e o sigilo das chamadas de método em fila selecionando Privacidade de Pacote como a configuração Nível de Autenticação de Chamadas na guia Segurança da folha Propriedades do aplicativo em fila.

Segurança COM+

Limitações de segurança no modo de grupo de trabalho

Especificando o protocolo de autenticação