Visão Geral de Segurança do Windows Communication Foundation

O WCF (Windows Communication Foundation) é uma plataforma de programação distribuída baseada em mensagens SOAP e a proteção de mensagens entre clientes e serviços é essencial para proteger os dados. O WCF fornece uma plataforma versátil e interoperável para trocar mensagens seguras com base na infraestrutura de segurança existente e nos padrões de segurança reconhecidos de mensagens SOAP.

O WCF usa conceitos familiares se você tiver criado aplicativos seguros e distribuídos com tecnologias existentes, como HTTPS, segurança integrada do Windows ou nomes de usuário e senhas para autenticar usuários. O WCF não só se integra às infraestruturas de segurança existentes, mas também estende a segurança distribuída além dos domínios somente do Windows usando mensagens SOAP seguras. Considere o WCF como uma implementação de mecanismos de segurança existentes com a maior vantagem de usar o SOAP como o protocolo, além dos protocolos existentes. Por exemplo, as credenciais que identificam um cliente ou um serviço, como nome de usuário e senha ou certificados X.509, possuem perfis SOAP interoperáveis baseados em XML. Usando esses perfis, as mensagens são trocadas com segurança aproveitando as especificações abertas, como assinaturas digitais XML e criptografia XML. Para obter uma lista de especificações, consulte Protocolos de serviços Web com suporte em associações de interoperabilidade fornecidas pelo sistema.

Outro paralelo é o COM (Component Object Model) na plataforma Windows, que permite aplicativos seguros e distribuídos. O COM tem um mecanismo de segurança abrangente pelo qual o contexto de segurança pode ser fluido entre componentes; esse mecanismo impõe integridade, confidencialidade e autenticação. No entanto, o COM não habilita mensagens seguras multiplataforma, como o WCF. Usando o WCF, você pode criar serviços e clientes que se estendem de domínios do Windows pela Internet. As mensagens interoperáveis do WCF são essenciais para a criação de serviços dinâmicos e orientados por negócios que ajudam você a se sentir confiante na segurança de suas informações.

Benefícios de Segurança do Windows Communication Foundation

O WCF é uma plataforma de programação distribuída baseada em mensagens SOAP. Usando o WCF, você pode criar aplicativos que funcionam como serviços e clientes de serviço, criando e processando mensagens de um número ilimitado de outros serviços e clientes. Em um aplicativo distribuído, as mensagens podem fluir de nó para nó, por meio de firewalls, para a Internet e por meio de vários intermediários SOAP. Isso introduz diversas ameaças à segurança de mensagens. Os exemplos a seguir ilustram algumas ameaças comuns que a segurança do WCF pode ajudar a atenuar ao trocar mensagens entre entidades:

  • Observação do tráfego de rede para obter informações confidenciais. Por exemplo, em um cenário de banco online, um cliente solicita a transferência de fundos de uma conta para outra. Um usuário mal-intencionado intercepta a mensagem e, tendo o número da conta e a senha, executa posteriormente uma transferência de fundos da conta comprometida.

  • Entidades invasoras atuando como serviços sem reconhecimento do cliente. Nesse cenário, um usuário mal-intencionado (o invasor) atua como um serviço online e intercepta mensagens do cliente para obter informações confidenciais. Em seguida, o invasor usa os dados roubados para transferir fundos da conta comprometida. Esse ataque também é conhecido como um ataque de phishing.

  • Alteração de mensagens para obter um resultado diferente do pretendido pelo chamador. Por exemplo, alterar o número da conta para a qual um depósito é feito permite que os fundos acessem uma conta invasora.

  • Reproduções de hacker em que um hacker reproduz a mesma ordem de compra. Por exemplo, uma livraria online recebe centenas de pedidos e envia os livros para um cliente que não os encomendou.

  • Incapacidade de um serviço se autenticar a um cliente. Nesse caso, o serviço não pode garantir que a pessoa apropriada realizou a transação.

Em resumo, a segurança de transferência fornece as seguintes garantias:

  • Autenticação do ponto de extremidade de serviço (entrevistado).

  • Autenticação da entidade de segurança do cliente (iniciador).

  • Integridade da mensagem.

  • Confidencialidade da mensagem.

  • Detecção de reprodução.

Integração com infraestruturas de segurança existentes

Muitas vezes, as implantações de serviço Web têm soluções de segurança existentes em vigor, por exemplo, o protocolo SSL ou Kerberos. Alguns aproveitam uma infraestrutura de segurança que já foi implantada, como domínios do Windows usando o Active Directory. Geralmente, é necessário integrar-se a essas tecnologias existentes enquanto avalia e adota as mais recentes.

A segurança do WCF integra-se aos modelos de segurança de transporte existentes e pode aproveitar a infraestrutura existente para modelos de segurança de transferência mais recentes com base na segurança da mensagem SOAP.

Integração com modelos de autenticação existentes

Uma parte importante de qualquer modelo de segurança de comunicação é a capacidade de identificar e autenticar entidades na comunicação. Essas entidades na comunicação usam "identidades digitais", ou credenciais, para se autenticarem com os pares de comunicação. À medida que as plataformas de comunicação distribuídas evoluíram, várias autenticações de credencial e modelos de segurança relacionados foram implementados. Por exemplo, na Internet, é comum utilizar um nome de usuário e senha para identificar usuários. Na intranet, o uso de um controlador de domínio Kerberos para fazer backup da autenticação de usuário e serviço está se tornando comum. Em determinados cenários, como entre dois parceiros de negócios, os certificados podem ser usados para autenticar mutuamente os parceiros.

Assim, no mundo dos serviços Web, em que o mesmo serviço pode ser exposto a clientes corporativos internos, bem como a parceiros externos ou clientes na Internet, é importante que a infraestrutura forneça integração com esses modelos de autenticação de segurança existentes. A segurança do WCF dá suporte a diversos tipos de credencial (modelos de autenticação), incluindo:

  • Chamador anônimo.

  • Credencial de cliente de nome de usuário.

  • Credencial de cliente de certificado.

  • Windows (protocolo Kerberos e NT LanMan [NTLM]).

Padrões e interoperabilidade

Em um mundo com grandes implantações existentes, a homogeneidade é rara. As plataformas de computação/comunicações distribuídas precisam interoperar com as tecnologias oferecidas por diferentes fornecedores. Da mesma forma, a segurança também deve ser interoperável.

Para habilitar sistemas de segurança interoperáveis, as empresas ativas no setor de serviços Web criaram diversos padrões. Especificamente em relação à segurança, alguns padrões notáveis foram propostos: WS-Security: SOAP Message Security (aceito pelo órgão regulador do OASIS e anteriormente conhecido como WS-Security), WS-Trust, WS-SecureConversation e WS-SecurityPolicy.

O WCF dá suporte a diversos cenários de interoperabilidade. A classe BasicHttpBinding é direcionada ao BSP (Perfil de Segurança Básico) e a classe WSHttpBinding é direcionada aos padrões de segurança mais recentes, como WS-Security 1.1 e WS-SecureConversation. Ao aderir a esses padrões, a segurança do WCF pode interoperar e integrar-se aos serviços Web hospedados nos diferentes sistemas operacionais e plataformas do Microsoft Windows.

Áreas Funcionais de Segurança do WCF

A segurança do WCF é dividida em três áreas funcionais: segurança de transferência, controle de acesso e auditoria. As seções a seguir discutem brevemente essas áreas e fornecem links para obter mais informações.

Segurança de transferência

A segurança de transferência abrange três funções de segurança principais: integridade, confidencialidade e autenticação. A integridade é a capacidade de detectar se uma mensagem foi adulterada. A confidencialidade é a capacidade de manter uma mensagem ilegível por qualquer pessoa que não seja o destinatário pretendido; isso é obtido por meio da criptografia. A autenticação é a capacidade de verificar uma identidade reivindicada. Juntas, essas três funções ajudam a garantir que as mensagens cheguem com segurança de um ponto para outro.

Modos de segurança de transporte e mensagem

Dois mecanismos principais são usados para implementar a segurança de transferência no WCF: modo de segurança de transporte e modo de segurança de mensagem.

  • O modo de segurança de transporte usa um protocolo de nível de transporte, como HTTPS, para obter segurança de transferência. O modo de transporte tem a vantagem de ser amplamente adotado, disponível em muitas plataformas e menos complexo em termos computacionais. No entanto, ele tem a desvantagem de proteger mensagens apenas de ponto a ponto.

  • O modo de segurança de mensagem, por outro lado, usa WS-Security (e outras especificações) para implementar a segurança de transferência. Como a segurança da mensagem é aplicada diretamente às mensagens SOAP e está contida dentro dos envelopes SOAP, juntamente com os dados do aplicativo, ela tem a vantagem de ser independente do protocolo de transporte, mais extensível e garantir a segurança de ponta a ponta (versus ponto a ponto); ela tem a desvantagem de ser muito mais lenta do que o modo de segurança de transporte porque precisa lidar com a natureza XML das mensagens SOAP.

Para obter mais informações sobre essas diferenças, consulte Proteção de serviços e clientes.

Um terceiro modo de segurança usa ambos os modos anteriores e possui as vantagens de ambos. Esse modo é chamado de TransportWithMessageCredential. Nele, a segurança da mensagem é usada para autenticar o cliente e a segurança de transporte é usada para autenticar o servidor e fornecer confidencialidade e integridade da mensagem. Graças a isso, o modo de segurança TransportWithMessageCredential é quase tão rápido quanto o modo de segurança de transporte e fornece extensibilidade de autenticação do cliente da mesma forma que a segurança da mensagem. No entanto, ao contrário do modo de segurança da mensagem, ele não fornece segurança completa de ponta a ponta.

Controle de acesso

O controle de acesso também é conhecido como autorização. A autorização permite que diferentes usuários tenham privilégios diferentes para exibir dados. Por exemplo, como os arquivos de recursos humanos de uma empresa contêm dados confidenciais dos funcionários, somente os gerentes têm permissão para exibir os dados dos funcionários. Além disso, os gerentes podem exibir apenas os dados para seus relatórios diretos. Nesse caso, o controle de acesso é baseado tanto na função ("gerente") quanto na identidade específica do gerente (para impedir que um gerente analise os registros de funcionários de outro gerente).

No WCF, os recursos de controle de acesso são fornecidos pela integração com o CLR (Common Language Runtime) PrincipalPermissionAttribute e por um conjunto de APIs conhecidas como o modelo de identidade. Para obter detalhes sobre o controle de acesso e a autorização baseada em declarações, consulte Segurança estendida.

Auditoria

A auditoria é o log de eventos de segurança no log de eventos do Windows. Você pode registrar eventos relacionados à segurança, como falhas (ou êxitos) de autenticação. Para obter mais informações, consulte Auditoria. Para obter detalhes de programação, consulte Como auditar eventos de segurança.

Confira também