Compartilhar via


Segurança de componentes na fila

Quando um cliente faz uma chamada de método para um objeto na fila, a chamada é realmente feita para o gravador, que o empacota como parte de uma mensagem para o servidor. O ouvinte lê a mensagem da fila e a passa para o player. O player invoca o componente do servidor real e faz a mesma chamada de método. O componente do servidor deve observar o contexto de chamada de segurança do cliente (não o contexto de chamada de segurança do player) quando o player faz a chamada de método. O gravador envia o contexto de chamada de segurança do cliente para a mensagem e o player o 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 enfileirado COM+ dá 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 na 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 de 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 de chamada de segurança. Em componentes enfileirados, a identidade do chamador é representada como dados na mensagem Enfileiramento de Mensagens. O 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 Enfileiramento de Mensagens autentica a mensagem e o chamador. Esse é o caso comum.

Nota

Os componentes enfileirados COM+ não dão suporte à segurança no 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 no contexto de segurança do cliente.

 

Quando o chamador de um componente enfileirado 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 enfileirados COM+ verificam se o remetente da mensagem é um membro da função de Usuário Confiável DO QC no servidor. Além disso, o gravador fora do processo requer um certificado de autenticação porque ele está sendo autenticado pelo Enfileiramento de Mensagens.

Os membros da função de Usuário Confiável 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 na fila com privilégios elevados. Portanto, é recomendável que o número desses usuários seja mantido no mínimo absoluto.

Devido ao risco de um ataque sofisticado associado a qualquer mecanismo que propaga a identidade em uma rede, bem como o risco de um simples ataque de negação de serviço inundando as filas com solicitações inexecutáveis, é recomendável implantar o serviço de componentes enfileirados COM+ apenas 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 enfileirados COM+ são executados por DCOM, para que você possa ajudar a proteger a integridade e o sigilo das chamadas de método enfileirados selecionando de Privacidade de Pacotes como a configuração Nível de Autenticação de Chamadas na guia de Segurança do da folha Propriedades do aplicativo na fila.

de segurança com+

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

especificando o protocolo de autenticação