Compartilhar via


Informações de privacidade do Windows Communication Foundation

A Microsoft está comprometida em proteger a privacidade do usuário final. Quando você cria um aplicativo usando o Windows Communication Foundation (WCF), 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 à Microsoft do seu aplicativo, a menos que você ou o usuário final optem por enviá-la para nós.

WCF em breve

O WCF é uma estrutura de mensagens distribuídas usando o Microsoft .NET Framework que permite que os desenvolvedores criem 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 o BasicHttpBinding, que foi projetado para uso com serviços Web herdados não protegidos. 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 potencialmente afetam a privacidade.

Messaging

Cada mensagem 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 incluir 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 um identificador 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 nenhuma informação pessoal 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 o 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 da mensagem

A segurança do WCF fornece os recursos de segurança para aplicativos de mensagens. As funções de segurança fornecidas incluem 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 em nível de transporte ou por meio da segurança em nível de mensagem SOAP, da seguinte maneira:

  • Na segurança de mensagens 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, Digest, 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 dispositivos de comunicação. A sessão é identificada por um GUID que permanece ativo durante toda a 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 endpoint 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 do 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 Windows Vista e Windows Server 2003, um registro é registrado no log de eventos de segurança.

Transações

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 Gerenciador de Transações Distribuídas da Microsoft (MSDTC) (um componente do Windows) para gerenciar o estado da transação. Por padrão, as comunicações entre os Gerenciador 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. Eles fornecem uma transferência exatamente uma vez de mensagens 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 descartando 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 multicaminho), preservando a ordem na qual as mensagens foram enviadas.

Sessões confiáveis são implementadas usando o protocolo WS-ReliableMessaging (WS-RM). Eles adicionam cabeçalhos WS-RM que contêm informações de sessão, que são usadas para identificar todas as mensagens associadas a uma sessão confiável específica. Cada sessão WS-RM possui um identificador, um GUID.

Nenhuma informação pessoal é mantida no computador do usuário final.

Canais em fila

As filas armazenam mensagens de um aplicativo de envio em nome de um aplicativo receptor e, posteriormente, encaminham essas mensagens para o aplicativo receptor. Eles ajudam a garantir a transferência de mensagens do envio de aplicativos para o recebimento de aplicativos 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 na fila 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 COM+

Esse recurso encapsula as funcionalidades COM e COM+ existentes para criar serviços compatíveis com os serviços do 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 no fio nem mantém dados no computador.

Canal par

Um canal par permite o desenvolvimento de aplicativos multipartidários usando o WCF. A comunicação multipartidária ocorre no contexto de uma malha. As malhas são identificadas por um nome que os nós podem ingressar. Cada nó no canal de pares cria um listener TCP em uma porta especificada pelo usuário e estabelece conexões com outros nós na rede 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 que pertencem ao remetente para evitar falsificação e adulteração de mensagens.

Nenhuma informação pessoal é armazenada 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. Esta funcionalidade está desativada por predefinição. Ele está habilitado usando o arquivo de configuração do aplicativo e o comportamento de rastreamento pode ser modificado usando o provedor WMI do WCF em runtime. 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 especial, quando hospedado pelo WAS (Sistema de Ativação do Windows), o administrador deve garantir que os arquivos não sejam servidos a partir 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, descrito 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 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 mensagens inteiras ou cabeçalhos de mensagem somente, 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 log de mensagens.

Registro de mensagens criptografadas e descriptografadas

As mensagens são registradas, criptografadas ou descriptografadas, conforme descrito nos termos a seguir.

Registro de Transporte Registra mensagens recebidas e enviadas no nível de transporte. Essas mensagens contêm todos os cabeçalhos e podem ser criptografadas antes de serem enviadas na transmissão e ao serem recebidas.

Se as mensagens forem criptografadas antes de serem enviadas e quando forem recebidas, elas também serão registradas em formato criptografado. Uma exceção é quando um protocolo de segurança é usado (https): eles são então descriptografados antes de serem enviados e depois de recebidos, mesmo que sejam criptografados na transmissão.

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 transmissão.

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 em forma descriptografada ou sem criptografia, o WCF remove, por padrão, chaves de segurança e informações potencialmente pessoais das mensagens antes de 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 para alterar o comportamento padrão para chaves de log e informações potencialmente pessoais.

Informações removidas dos cabeçalhos de mensagem ao registrar mensagens descriptografadas/não criptografadas

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 mensagens 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" e xmlns: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" e xmlns: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 que são removidas:

  • Para xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.1.xsd" e xmlns: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" são removidos os seguintes itens em bold:

<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 />*

</Condições>? <Advice><AssertionIDReference>[ID]</AssertionIDReference>* <Assertion>[assertion]</Assertion>* [any]* </Advice>? <-- Instrução de tipos <base abstratos />* <SubjectStatement SubjectStatement><> <NameIdentifier NameQualifier="[string]"? Format="[uri]"? > [string] </NameIdentifier>? <SubjectConfirmation><ConfirmationMethod>[anyUri]</ConfirmationMethod>+ <SubjectConfirmationData>[any]</SubjectConfirmationData>? <ds:KeyInfo>...</ds:KeyInfo>? </ConfirmaçãoDoAssunto>? </Subject></SubjectStatement>*

<DeclaraçãoDeAutenticação MétodoDeAutenticação="[uri]" InstanteDeAutenticação="[dateTime]"

[Assunto] <SubjectLocality IPAddress="[string]"? DNSAddress="[string]"? />? <AuthorityBinding AuthorityKind="[QName]" Location="[uri]" Binding="[uri]" />* </AuthenticationStatement>* <AttributeStatement> [Subject] <AttributeName="[string]" AttributeNamespace="[uri]"

<AttributeValue>[any]</AttributeValue>+ </Attribute>+ </AttributeStatement>* <AuthorizationDecisionStatement Resource="[uri]" Decision="[Permit|Negar|Indeterminado]"

[Assunto] <Action Namespace="[uri]">[string]</Action+ >Evidence<>< AssertionIDReference>[ID]</AssertionIDReference>+ <Assertion>[assertion]</Assertion>+ </Evidence?> </DeclaraçãoDeDecisãoDeAutorização>* </Afirmação>

Informações removidas dos corpos de mensagens ao registrar mensagens descriptografadas/não criptografadas

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 nenhuma ação estiver 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 a gravação de logs de mensagens estiver ativada, informações pessoais em cabeçalhos específicos do aplicativo e informações do corpo da mensagem podem estar visíveis nos logs. Novamente, o implantador de aplicativos é responsável por definir as ACLs nos arquivos de configuração e de log. Eles também poderão desativar o registro em log se não quiserem que essas informações fiquem visíveis ou filtrar 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 do .NET Framework de System.Diagnostics. Assim como acontece com a MessageLogging propriedade, o local e sua ACL são configuráveis pelo usuário usando arquivos de configuração de aplicativo do .NET Framework. Assim como acontece com o 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 ocultar 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 registrar em log informações potencialmente pessoais. No entanto, as informações pessoais contidas em cabeçalhos específicos do aplicativo são registradas em logs. O implantador de aplicativos é responsável por definir as ACLs nos arquivos de configuração e rastreamento. Eles 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.

Ouvintes de rastreamento personalizados

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 façam isso. Eles também são responsáveis por quaisquer 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 do .NET Framework. Os arquivos de configuração são armazenados no computador. O desenvolvedor de aplicativos 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 endpoints e links para certificados no repositório de certificados. Os certificados podem ser usados para fornecer dados de aplicativo para configurar várias propriedades dos recursos usados pelo aplicativo.

O WCF também usa a funcionalidade de despejo de processo do .NET Framework chamando o FailFast método.

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 do 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 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 os profissionais de TI configurem o suporte de rede WS-AtomicTransaction interoperável no WCF. As ferramentas exibem e permitem que o usuário altere os valores das configurações de WS-AtomicTransaction mais usadas no registro.

Características transversais

Os recursos a seguir são transversais. Ou seja, eles podem ser compostos com qualquer um 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.

Consulte também