Informações de privacidade do Windows Communication Foundation
A Microsoft está comprometida em proteger sua privacidade. Quando você cria um aplicativo usando o WCF (Windows Communication Foundation), versão 3.0, seu aplicativo pode afetar a privacidade dos usuários finais. Por exemplo, seu aplicativo pode coletar explicitamente informações de contato do usuário ou pode solicitar ou enviar informações pela Internet para seu site. Se você inserir a tecnologia da Microsoft em seu aplicativo, essa tecnologia poderá ter seu próprio comportamento que pode afetar a privacidade. O WCF não envia informações do seu aplicativo para a Microsoft, a menos que você ou o usuário final optem por enviá-las para nós.
Resumo do WCF
O WCF é uma estrutura de envio de mensagens distribuídas usando o .NET Framework da Microsoft, que permite aos desenvolvedores criar aplicativos distribuídos. As mensagens comunicadas entre dois aplicativos contêm informações de cabeçalho e corpo.
Os cabeçalhos podem conter roteamento de mensagens, informações de segurança, transações e muito mais, dependendo dos serviços usados pelo aplicativo. Normalmente, as mensagens são criptografadas por padrão. A única exceção é ao usar a BasicHttpBinding
, que foi projetada para uso com serviços Web não protegidos e herdados. Como designer de aplicativo, você é responsável pelo design final. As mensagens no corpo SOAP contêm dados específicos do aplicativo. No entanto, esses dados, como informações pessoais definidas pelo aplicativo, podem ser protegidos usando recursos de criptografia ou confidencialidade do WCF. As seções a seguir descrevem os recursos que têm o poder de afetar a privacidade.
Mensagens
Cada mensagem do WCF tem um cabeçalho de endereço que especifica o destino da mensagem e para onde a resposta deve ir.
O componente de endereço de um endereço de ponto de extremidade é um URI (Uniform Resource Identifier) que identifica o ponto de extremidade. O endereço pode ser um endereço de rede ou um endereço lógico. O endereço pode conter o nome do computador (nome do host, nome de domínio totalmente qualificado) e um endereço IP. O endereço do ponto de extremidade também pode conter um GUID (identificador global exclusivo) ou uma coleção de GUIDs para endereçamento temporário usado para discernir cada endereço. Cada mensagem contém uma ID de mensagem que é um GUID. Esse recurso segue o padrão de referência WS-Addressing.
A camada de mensagens do WCF não grava informações pessoais no computador local. No entanto, ele poderá propagar informações pessoais no nível da rede se um desenvolvedor de serviço tiver criado um serviço que exponha essas informações (por exemplo, usando o nome de uma pessoa em um nome de ponto de extremidade ou incluindo informações pessoais na Linguagem de Descrição dos Serviços Web do ponto de extremidade, mas não exigindo que os clientes usem https para acessar a linguagem WSDL). Além disso, se um desenvolvedor executar a ferramenta ServiceModel Metadata Utility Tool (Svcutil.exe) em um ponto de extremidade que expõe informações pessoais, a saída da ferramenta poderá conter essas informações e o arquivo de saída será gravado no disco rígido local.
Hosting
O recurso de hospedagem no WCF permite que os aplicativos iniciem sob demanda ou habilitem o compartilhamento de porta entre vários aplicativos. Um aplicativo WCF pode ser hospedado no IIS (Serviços de Informações da Internet), semelhante ao ASP.NET.
A hospedagem não expõe nenhuma informação específica na rede e não mantém os dados no computador.
Segurança de mensagem
A segurança do WCF fornece os recursos de segurança para aplicativos de mensagens. As funções de segurança fornecidas compreendem autenticação e autorização.
A autenticação é executada passando credenciais entre os clientes e os serviços. A autenticação pode ser por meio da segurança no nível do transporte ou por meio da segurança no nível da mensagem SOAP, da seguinte maneira:
Na segurança da mensagem SOAP, a autenticação é executada por meio de credenciais como nome de usuário/senhas, certificados X.509, tíquetes Kerberos e tokens SAML, que podem conter informações pessoais, dependendo do emissor.
Usando a segurança de transporte, a autenticação é feita por meio de mecanismos tradicionais de autenticação de transporte, como esquemas de autenticação HTTP (Basic, Hash, Negotiate, Integrated Windows Authorization, NTLM, None e Anonymous) e autenticação de formulário.
A autenticação pode resultar em uma sessão segura estabelecida entre os pontos de extremidade de comunicação. A sessão é identificada por um GUID que dura o tempo de vida da sessão de segurança. A tabela a seguir mostra o que é mantido e onde.
Dados | Armazenamento |
---|---|
Credenciais de apresentação, como nome de usuário, certificados X.509, tokens Kerberos e referências a credenciais. | Mecanismos padrão de gerenciamento de credenciais do Windows, como o repositório de certificados do Windows. |
Informações de associação do usuário, como nomes de usuário e senhas. | Provedores de associação do ASP.NET. |
Informações de identidade sobre o serviço usado para autenticar o serviço para clientes. | Endereço do ponto de extremidade do serviço. |
Informações do chamador. | Logs de auditoria. |
Auditoria
A auditoria registra o êxito e a falha de eventos de autenticação e autorização. Os registros de auditoria contêm os seguintes dados: URI de serviço, URI de ação e identificação do chamador.
A auditoria também registra quando o administrador modifica a configuração do registro em log de mensagens (ativando ou desativando), porque o registro em log de mensagens pode registrar dados específicos do aplicativo em cabeçalhos e corpos. Para o Windows XP, um registro é registrado no log de eventos do aplicativo. Para o Windows Vista e o Windows Server 2003, um registro é registrado no log de eventos de segurança.
Transactions
O recurso de transações fornece serviços transacionais para um aplicativo WCF.
Os cabeçalhos de transação usados na propagação de transações podem conter IDs de transação ou IDs de inscrição, que são GUIDs.
O recurso Transações usa o Coordenador de Transações Distribuídas da Microsoft (MSDTC) Transaction Manager (um componente do Windows) para gerenciar o estado da transação. Por padrão, as comunicações entre os Gerenciadores de Transações são criptografadas. Os Gerenciadores de Transações podem registrar referências de ponto de extremidade, IDs de transação e IDs de inscrição como parte de seu estado durável. O tempo de vida desse estado é determinado pelo tempo de vida do arquivo de log do Gerenciador de Transações. O serviço MSDTC possui e mantém esse log.
O recurso Transações implementa os padrões de transação WS-Coordination e WS-Atomic.
Sessões confiáveis
Sessões confiáveis no WCF fornecem a transferência de mensagens quando ocorrem falhas de transporte ou intermediárias. Elas fornecem uma transferência de mensagens exatamente uma vez, mesmo quando o transporte subjacente se desconecta (por exemplo, uma conexão TCP em uma rede sem fio) ou perde uma mensagem (um proxy HTTP removendo uma mensagem de saída ou de entrada). As sessões confiáveis também recuperam a reordenação de mensagens (como pode acontecer no caso do roteamento de vários caminhos), preservando a ordem na qual as mensagens foram enviadas.
Sessões confiáveis são implementadas usando o protocolo WS-ReliableMessaging (WS-RM). Elas adicionam cabeçalhos WS-RM que contêm informações de sessão, que são usados para identificar todas as mensagens associadas a uma sessão confiável específica. Cada sessão do WS-RM tem um identificador, que é um GUID.
Nenhuma informação pessoal é mantida no computador do usuário final.
Canais na fila
Filas armazenam mensagens de um aplicativo emissor em nome de um aplicativo receptor e, posteriormente, encaminham essas mensagens ao aplicativo receptor. Eles ajudam a garantir a transferência de mensagens de aplicativos emissores a aplicativos receptores quando, por exemplo, o aplicativo receptor é transitório. O WCF fornece suporte para enfileiramento usando o MSMQ (Enfileiramento de Mensagens da Microsoft) como transporte.
O recurso de canais enfileirados não adiciona cabeçalhos a uma mensagem. Em vez disso, ele cria uma mensagem de Enfileiramento de Mensagens com as propriedades de mensagem de enfileiramento de mensagens apropriadas definidas e invoca métodos de Enfileiramento de Mensagens para colocar a mensagem na fila de Enfileiramento de Mensagens. O Enfileiramento de Mensagens é um componente opcional fornecido com o Windows.
Nenhuma informação é mantida no computador do usuário final pelo recurso de canais enfileirados, pois ele usa o Enfileiramento de Mensagens como a infraestrutura de enfileiramento.
Integração de COM+
Esse recurso encapsula a funcionalidade COM e COM+ existentes para criar serviços compatíveis com serviços WCF. Esse recurso não usa cabeçalhos específicos e não retém dados no computador do usuário final.
Moniker de serviço COM
Isso fornece um wrapper não gerenciado para um cliente WCF padrão. Esse recurso não tem cabeçalhos específicos vinculados à Internet nem retém dados no computador.
Canal par
Um canal par permite o desenvolvimento de aplicativos de várias partes usando o WCF. O sistema de mensagens de várias partes ocorre no contexto de uma malha. As malhas são identificadas por um nome que os nós podem ingressar. Cada nó no canal par cria um ouvinte TCP em uma porta especificada pelo usuário e estabelece conexões com outros nós na malha para garantir a resiliência. Para se conectar a outros nós na malha, os nós também trocam alguns dados, incluindo o endereço do ouvinte e os endereços IP do computador, com outros nós na malha. As mensagens enviadas na malha podem conter informações de segurança pertencentes ao remetente para evitar falsificação e adulteração de mensagens.
Nenhuma informação pessoal é mantida no computador do usuário final.
Experiência profissional de TI
Rastreamento
O recurso de diagnóstico da infraestrutura do WCF registra mensagens que passam pelas camadas do modelo de transporte e serviço e as atividades e eventos associados a essas mensagens. Este recurso está desativado por padrão. Ele é habilitado usando o arquivo de configuração de aplicativo e o comportamento de rastreamento pode ser modificado usando o provedor WMI do WCF em tempo de execução. Quando habilitada, a infraestrutura de rastreamento emite um rastreamento de diagnóstico que contém mensagens, atividades e eventos de processamento para ouvintes configurados. O formato e o local da saída são determinados pelas opções de configuração do ouvinte do administrador, mas normalmente é um arquivo formatado em XML. O administrador é responsável por definir a ACL (lista de controle de acesso) nos arquivos de rastreamento. Em particular, quando hospedado pelo WAS (Sistema de Ativação do Windows), o administrador deve garantir que os arquivos não sejam atendidos do diretório raiz virtual público, se isso não for desejado.
Há dois tipos de rastreamento: registro em log de mensagens e rastreamento de diagnóstico do Modelo de Serviço, descritos na seção a seguir. Cada tipo é configurado por meio de sua própria fonte de rastreamento: MessageLogging e System.ServiceModel. Ambas as fontes de rastreamento de registro em log capturam dados que são locais para o aplicativo.
Registro em log de mensagens
A origem do rastreamento do registro em log de mensagens (MessageLogging) permite que um administrador registre as mensagens que fluem pelo sistema. Por meio da configuração, o usuário pode decidir registrar somente mensagens inteiras ou cabeçalhos de mensagem, se deseja fazer logon nas camadas de transporte e/ou modelo de serviço e se deve incluir mensagens malformadas. Além disso, o usuário pode configurar a filtragem para restringir quais mensagens são registradas.
Por padrão, o registro em log de mensagens está desabilitado. O administrador do computador local pode impedir que o administrador no nível do aplicativo ative o registro em log de mensagens.
Registro em log de mensagens criptografadas e descriptografadas
As mensagens são registradas, criptografadas ou descriptografadas, conforme descrito nos termos a seguir.
O log de transporte registra mensagens recebidas e enviadas no nível do transporte. Essas mensagens contêm todos os cabeçalhos e podem ser criptografadas antes de serem enviadas na rede e ao serem recebidas.
Se as mensagens forem criptografadas antes de serem enviadas na rede e quando forem recebidas, elas também serão registradas criptografadas. Uma exceção é quando um protocolo de segurança é usado (https): elas são então registradas descriptografadas antes de serem enviadas e depois de recebidas, mesmo que sejam criptografadas na rede.
O log de serviço registra mensagens recebidas ou enviadas no nível do modelo de serviço, depois que o processamento de cabeçalho de canal ocorreu, pouco antes e depois de inserir o código do usuário.
As mensagens registradas nesse nível são descriptografadas mesmo que tenham sido protegidas e criptografadas na rede.
O log de mensagens malformadas registra mensagens que a infraestrutura do WCF não pode entender nem processar.
As mensagens são registradas como se apresentam, ou seja, criptografadas ou não
Quando as mensagens são registradas no formulário descriptografado ou não criptografado, por padrão, o WCF remove chaves de segurança e informações potencialmente pessoais das mensagens antes de as registrar em log. As próximas seções descrevem quais informações são removidas e quando. O administrador do computador e o implantador de aplicativos devem executar determinadas ações de configuração a fim de alterar o comportamento padrão para registrar chaves e informações potencialmente pessoais.
Informações removidas de cabeçalhos de mensagem ao registrar mensagens descriptografadas/não criptografadas em log
Quando as mensagens são registradas no formulário descriptografado ou não criptografado, as chaves de segurança e informações potencialmente pessoais são removidas por padrão de cabeçalhos de mensagem e corpos de mensagem antes de serem registradas. A lista a seguir mostra o que o WCF considera chaves e informações potencialmente pessoais.
Chaves removidas:
Para
xmlns:wst="http://schemas.xmlsoap.org/ws/2004/04/trust"
exmlns:wst="http://schemas.xmlsoap.org/ws/2005/02/trust"
wst:BinarySecret
wst:Entropy
Para
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.1.xsd"
exmlns:wsse="http://docs.oasis-open.org/wss/2005/xx/oasis-2005xx-wss-wssecurity-secext-1.1.xsd"
wsse:Password
wsse:Nonce
Informações potencialmente pessoais removidas:
Para
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.1.xsd"
exmlns:wsse="http://docs.oasis-open.org/wss/2005/xx/oasis-2005xx-wss-wssecurity-secext-1.1.xsd"
wsse:Username
wsse:BinarySecurityToken
Para
xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion"
os seguintes itens embold
, são removidos:
<Assertion MajorVersion="1" MinorVersion="1" AssertionId="[ID]" Issuer="[string]" IssueInstant="[dateTime]"
<Conditions NotBefore="[dateTime]" NotOnOrAfter="[dateTime]"><AudienceRestrictionCondition><Audience>[uri]</Audience>+ </AudienceRestrictionCondition>* <DoNotCacheCondition />* <!-- abstract base type <Condition />*
</Conditions>?
<Advice><AssertionIDReference>[ID]</AssertionIDReference>* <Assertion>[assertion]</Assertion>* [any]* </Advice>?
<!-- Abstract base types <Statement />* <SubjectStatement><Subject>
<NameIdentifier
NameQualifier="[string]"?
Format="[uri]"?
>
[string]
</NameIdentifier>?
<SubjectConfirmation><ConfirmationMethod>[anyUri]</ConfirmationMethod>+ <SubjectConfirmationData>[any]</SubjectConfirmationData>?
<ds:KeyInfo>...</ds:KeyInfo>?
</SubjectConfirmation>?
</Subject></SubjectStatement>*
<AuthenticationStatement AuthenticationMethod="[uri]" AuthenticationInstant="[dateTime]"
[Subject] <SubjectLocality
IPAddress="[string]"?
DNSAddress="[string]"?
/>?
<AuthorityBinding AuthorityKind="[QName]" Location="[uri]" Binding="[uri]" />* </AuthenticationStatement>* <AttributeStatement> [Subject] <Attribute AttributeName="[string]" AttributeNamespace="[uri]"
<AttributeValue>[any]</AttributeValue>+
</Attribute>+ </AttributeStatement>* <AuthorizationDecisionStatement Resource="[uri]" Decision="[Permit|Deny|Indeterminate]"
[Subject] <Action Namespace="[uri]">[string]</Action>+ <Evidence><AssertionIDReference>[ID]</AssertionIDReference>+ <Assertion>[assertion]</Assertion>+ </Evidence>? </AuthorizationDecisionStatement>* </Assertion>
Informações removidas de cabeçalhos de mensagem ao registrar mensagens descriptografadas/não criptografadas em log
Conforme descrito anteriormente, o WCF remove chaves e informações potencialmente pessoais conhecidas de cabeçalhos de mensagem para mensagens descriptografadas e não criptografadas registradas. Além disso, o WCF remove chaves e informações potencialmente pessoais conhecidas dos corpos da mensagem para os elementos e ações do corpo na lista a seguir, que descrevem as mensagens de segurança envolvidas na troca de chaves.
Para os seguintes namespaces:
xmlns:wst="http://schemas.xmlsoap.org/ws/2004/04/trust"
e xmlns:wst="http://schemas.xmlsoap.org/ws/2005/02/trust"
(por exemplo, se não houver ação disponível)
As informações são removidas para esses elementos do corpo, que envolvem a troca de chaves:
wst:RequestSecurityToken
wst:RequestSecurityTokenResponse
wst:RequestSecurityTokenResponseCollection
As informações também são removidas para cada uma das seguintes Ações:
http://schemas.xmlsoap.org/ws/2005/02/trust/RST/Issue
http://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/Issue
http://schemas.xmlsoap.org/ws/2005/02/trust/RST/Renew
http://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/Renew
http://schemas.xmlsoap.org/ws/2005/02/trust/RST/Cancel
http://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/Cancel
http://schemas.xmlsoap.org/ws/2005/02/trust/RST/Validate
http://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/Validate
http://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT
http://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/SCT
http://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT/Amend
http://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/SCT/Amend
http://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT/Renew
http://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/SCT/Renew
http://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT/Cancel
http://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/SCT/Cancel
http://schemas.xmlsoap.org/ws/2004/04/security/trust/RST/SCT
http://schemas.xmlsoap.org/ws/2004/04/security/trust/RSTR/SCT
http://schemas.xmlsoap.org/ws/2004/04/security/trust/RST/SCT-Amend
http://schemas.xmlsoap.org/ws/2004/04/security/trust/RSTR/SCT-Amend
Nenhuma informação é removida dos cabeçalhos e dados do corpo específicos do aplicativo
O WCF não rastreia informações pessoais em cabeçalhos específicos do aplicativo (por exemplo, cadeias de caracteres de consulta) ou dados do corpo (por exemplo, número do cartão de crédito).
Quando o registro em log de mensagens está ativado, as informações pessoais em cabeçalhos específicos do aplicativo e informações do corpo podem estar visíveis nos logs. Mais uma vez, o implantador de aplicativos é responsável por configurar as ACLs nos arquivos de configuração e de log. Também poderá desativar o registro em log, se não quiser que essas informações tornem-se visíveis ou descartar essas informações dos arquivos de log depois que elas forem registradas.
Rastreamento de modelo de serviço
A origem de rastreamento do Modelo de Serviço (System.ServiceModel) permite o rastreamento de atividades e eventos relacionados ao processamento de mensagens. Esse recurso usa a funcionalidade de diagnóstico .NET Framework do System.Diagnostics. Assim como acontece com a propriedade MessageLogging, o local e sua ACL são configuráveis pelo usuário usando os arquivos de configuração do aplicativo do .NET Framework. Assim como no registro em log de mensagens, o local do arquivo sempre é configurado quando o administrador habilita o rastreamento; assim, o administrador controla a ACL.
Os rastreamentos contêm cabeçalhos de mensagem quando uma mensagem está no escopo. As mesmas regras para ocultação de informações potencialmente pessoais em cabeçalhos de mensagem na seção anterior se aplicam: as informações pessoais identificadas anteriormente são removidas por padrão dos cabeçalhos em rastreamentos. O administrador do computador e o implantador de aplicativos devem modificar a configuração para que registrem informações potencialmente pessoais. No entanto, as informações pessoais contidas em cabeçalhos específicos do aplicativo são registradas em rastreamentos. O implantador de aplicativos é responsável por configurar as ACLs nos arquivos de configuração e de log. Ele também podem desativar o rastreamento para ocultar essas informações ou filtrar essas informações dos arquivos de rastreamento depois que elas forem registradas.
Como parte do Rastreamento do ServiceModel, IDs exclusivas (chamadas de IDs de atividade e, normalmente, um GUID) vinculam diferentes atividades, a medida que uma mensagem flui por diferentes partes da infraestrutura.
Ouvinte de rastreamento personalizado
Para registro em log de mensagens e rastreamento, um ouvinte de rastreamento personalizado pode ser configurado, o qual poderá enviar rastreamentos e mensagens na rede (por exemplo, para um banco de dados remoto). O implantador de aplicativos é responsável por configurar ouvintes personalizados ou permitir que os usuários o façam. Eles também são responsáveis por todas as informações pessoais expostas no local remoto e pela aplicação correta de ACLs a esse local.
Outros recursos para profissionais de TI
O WCF tem um provedor WMI que expõe as informações de configuração de infraestrutura do WCF por meio do WMI (fornecido com o Windows). Por padrão, a interface WMI está disponível para administradores.
A configuração do WCF usa o mecanismo de configuração .NET Framework. Os arquivos de configuração são armazenados no computador. O desenvolvedor do aplicativo e o administrador criam os arquivos de configuração e a ACL para cada um dos requisitos do aplicativo. Um arquivo de configuração pode conter endereços de ponto de extremidade e links para certificados no repositório de certificados. Os certificados podem ser usados para o fornecimento de dados do aplicativo para configurar várias propriedades dos recursos usados pelo aplicativo.
O WCF também usa a funcionalidade de despejo de processo .NET Framework chamando o método FailFast.
Ferramentas profissionais de TI
O WCF também fornece as seguintes ferramentas profissionais de TI, que são enviadas no SDK do Windows.
SvcTraceViewer.exe
O visualizador exibe arquivos de rastreamento WCF. O visualizador mostra qualquer informação contida nos rastreamentos.
SvcConfigEditor.exe
O editor permite que o usuário crie e edite arquivos de configuração do WCF. O editor mostra todas as informações contidas nos arquivos de configuração. A mesma tarefa pode ser realizada com um editor de texto.
ServiceModel_Reg
Essa ferramenta permite que o usuário gerencie instalações do ServiceModel em um computador. A ferramenta exibe mensagens de status em uma janela do console quando é executada e, no processo, pode exibir informações sobre a configuração da instalação do WCF.
WSATConfig.exe e WSATUI.dll
Essas ferramentas permitem que profissionais de TI configurem o suporte de rede interoperável WS-AtomicTransaction no WCF. As ferramentas exibem e permitem que o usuário altere os valores das configurações de WS-AtomicTransaction mais usadas armazenadas no Registro.
Recursos transversais
Os recursos a seguir são transversais. Ou seja, eles podem ser compostos com qualquer dos recursos anteriores.
Estrutura de serviço
Os cabeçalhos podem conter uma ID de instância, que é um GUID que associa uma mensagem a uma instância de uma classe CLR.
A Linguagem de Descrição dos Serviços Web (WSDL) contém uma definição da porta. Cada porta tem um endereço de ponto de extremidade e uma associação que representa os serviços usados pelo aplicativo. A exposição do WSDL pode ser desativada usando a configuração. Nenhuma informação é mantida no computador.