Compartilhar via


Preocupações de segurança e dicas úteis para rastreamento

Este tópico descreve como você pode proteger informações confidenciais contra a exposição, bem como dicas úteis ao usar o WebHost.

Usar um ouvinte de rastreamento personalizado com o WebHost

Se estiver escrevendo seu próprio ouvinte de rastreamento, você deverá estar ciente da possibilidade de que os rastreamentos podem ser perdidos no caso de um serviço hospedado na Web. Quando o WebHost é reciclado, ele encerra o processo ao vivo enquanto uma duplicata assume o comando. No entanto, os dois processos ainda devem ter acesso ao mesmo recurso por algum tempo, o que depende do tipo de ouvinte. Nesse caso, XmlWriterTraceListener cria um novo arquivo de rastreamento para o segundo processo; enquanto o rastreamento de eventos do Windows gerencia vários processos na mesma sessão e dá acesso ao mesmo arquivo. Se o próprio ouvinte não fornecer funcionalidades semelhantes, os rastreamentos poderão ser perdidos quando o arquivo for bloqueado pelos dois processos.

Você também deve estar ciente de que um ouvinte de rastreamento personalizado pode enviar rastreamentos e mensagens no fio, por exemplo, para um banco de dados remoto. Como um implantador de aplicativo, você deve configurar ouvintes personalizados com o controle de acesso apropriado. Você também deve aplicar controle de segurança a qualquer informação pessoal que possa ser exposta no local remoto.

Registrar informações confidenciais

Os rastreamentos contêm cabeçalhos de mensagem quando uma mensagem está no escopo. Quando o rastreamento está habilitado, informações pessoais em cabeçalhos específicos do aplicativo, como uma cadeia de caracteres de consulta, e informações do corpo, como um número de cartão de crédito, podem ficar visíveis nos logs. O implantador de aplicativos é responsável por impor o controle de acesso nos arquivos de configuração e de rastreamento. Se você não quiser que esse tipo de informação fique visível, desabilite o rastreamento ou filtre parte dos dados se quiser compartilhar os logs de rastreamento.

As dicas a seguir podem ajudar a evitar que o conteúdo do arquivo de rastreamento seja exposto de maneira não intencional:

  • Verifique se os arquivos de log estão protegidos por ACL (listas de controle de acesso) em cenários de host da Web e auto-host.

  • Escolha uma extensão de arquivo que não possa ser facilmente atendida usando uma solicitação da Web. Por exemplo, a extensão de arquivo .xml não é uma opção segura. Você pode conferir o guia de administração de ISS para ver uma lista das extensões que podem ser usadas.

  • Especifique um caminho absoluto para o local do arquivo de log, que deverá estar fora da vroot do host da web para evitar que seja acessado por terceiros usando um navegador da Web.

Por padrão, chaves e PII (informações de identificação pessoal), como nome de usuário e senha, não são registradas em rastreamentos e mensagens registradas. No entanto, um administrador de computador pode usar o atributo enableLoggingKnownPII no elemento machineSettings do arquivo Machine.config para permitir que aplicativos em execução no computador registrem PII (informações de identificação pessoal) conhecidas como segue:

<configuration>  
   <system.ServiceModel>  
      <machineSettings enableLoggingKnownPii="Boolean"/>  
   </system.ServiceModel>  
</configuration>

Em seguida, um implantador de aplicativo pode usar o atributo logKnownPii no arquivo App.config ou Web.config para habilitar o registro em log das PII da seguinte maneira:

<system.diagnostics>  
  <sources>  
      <source name="System.ServiceModel.MessageLogging"  
        logKnownPii="true">  
        <listeners>  
                 <add name="messages"  
                 type="System.Diagnostics.XmlWriterTraceListener"  
                 initializeData="c:\logs\messages.svclog" />  
          </listeners>  
      </source>  
  </sources>  
</system.diagnostics>  

Somente quando ambas as configurações estiverem true é que o registro em log das PII é habilitado. A combinação de duas opções permite a flexibilidade de registrar as PII conhecias para cada aplicativo.

Você deve estar ciente de que, se especificar duas ou mais fontes personalizadas em um arquivo de configuração, somente os atributos da primeira fonte serão lidos. Os outros são ignorados. Isso significa que, para o arquivo App.config a seguir, as PII não estão registradas em log para ambas as fontes, embora o registro em log de PII esteja explicitamente habilitado para a segunda origem.

<system.diagnostics>  
  <sources>  
      <source name="System.ServiceModel.MessageLogging"  
        logKnownPii="false">  
        <listeners>  
           <add name="messages"  
                type="System.Diagnostics.XmlWriterTraceListener"  
                initializeData="c:\logs\messages.svclog" />  
          </listeners>  
      </source>  
      <source name="System.ServiceModel"
         logKnownPii="true">  
         <listeners>  
            <add name="xml" />  
         </listeners>  
      </source>  
  </sources>  
</system.diagnostics>  

Se o elemento <machineSettings enableLoggingKnownPii="Boolean"/> existir fora do arquivo Machine.config, o sistema gerará um ConfigurationErrorsException.

As alterações só são efetivas quando o aplicativo é iniciado ou reiniciado. Um evento é registrado na inicialização quando ambos os atributos são definidos como true. Um evento também é registrado se logKnownPii estiver definido como true, mas se enableLoggingKnownPii for false.

Para obter mais informações sobre o log do PII, consulte o exemplo de Bloqueio de segurança do PII .

O administrador do computador e o implantador de aplicativos devem ter extrema cautela ao usar essas duas opções. Se o log das PII estiver habilitado, as chaves de segurança e as PII serão registradas. Se estiver desabilitado, os dados confidenciais e específicos do aplicativo ainda estarão registrados em cabeçalhos e corpos de mensagens. Para obter uma discussão mais completa sobre privacidade e proteção de PII contra a exposição, consulte Privacidade do usuário.

Além disso, o endereço IP do remetente da mensagem é registrado uma vez por conexão para transportes orientados à conexão e uma vez por mensagem enviada de outra forma. Isso é feito sem o consentimento do remetente. No entanto, esse registro em log ocorre apenas nos níveis de rastreamento de Informações ou Detalhados, que não são os níveis de rastreamento padrão ou recomendados na produção, exceto para depuração dinâmica.

Confira também