Partilhar via


Preocupações de segurança para o registo de mensagens

Este tópico descreve como você pode proteger dados confidenciais contra exposição em logs de mensagens, bem como eventos gerados pelo log de mensagens.

Preocupações de segurança

Registro de informações confidenciais

O Windows Communication Foundation (WCF) não modifica nenhum dado em cabeçalhos e corpo específicos do aplicativo. O WCF também não rastreia informações pessoais em cabeçalhos específicos do aplicativo ou dados do corpo.

Quando o log de mensagens 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 registros. O implantador de aplicativos é responsável por impor o controle de acesso nos arquivos de configuração e log. Se você não quiser que esse tipo de informação fique visível, desative o registro ou filtre parte dos dados se quiser compartilhar os logs.

As dicas a seguir podem ajudá-lo a evitar que o conteúdo de um arquivo de log seja exposto involuntariamente:

  • Verifique se os arquivos de log estão protegidos por Listas de Controle de Acesso (ACL) em cenários de host da Web e autohost.

  • 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 escolha segura. Pode consultar o guia de administração dos Serviços de Informação Internet (IIS) para ver uma lista de extensões que podem ser servidas.

  • Especifique um caminho absoluto para o local do arquivo de log, que deve estar fora do diretório público vroot do host da Web para impedir que ele seja acessado por uma parte externa usando um navegador da Web.

Por padrão, chaves e informações de identificação pessoal (PII), como nome de usuário e senha, não são registradas em rastreamentos e mensagens registradas. Um administrador de máquina, no entanto, pode usar o enableLoggingKnownPIImachineSettings atributo no elemento do arquivo Machine.config para permitir que aplicativos em execução na máquina registrem informações de identificação pessoal (PII) conhecidas. A configuração a seguir demonstra como fazer isso:

<configuration>  
   <system.serviceModel>  
      <machineSettings enableLoggingKnownPii="true"/>  
   </system.serviceModel>  
</configuration>

Um implantador de aplicativo pode usar o atributo no arquivo App.config ou Web.config para habilitar o logKnownPii log de 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 de PII está habilitado. A combinação de dois switches permite a flexibilidade de registrar PII conhecidas para cada aplicativo.

Importante

No .NET Framework 4.6.1, os logEntireMessage sinalizadores e logKnownPii também devem ser definidos como true no arquivo Web.config ou no arquivo App.config para habilitar o log PII, como mostra o exemplo <system.serviceModel><messageLogging logEntireMessage="true" logKnownPii="true" …a seguir.

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 seguinte arquivo App.config, a PII não é registrada para ambas as fontes, embora o log de PII esteja explicitamente habilitado para a segunda fonte.

<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="traces"  
                      type="System.Diagnostics.XmlWriterTraceListener"  
                      initializeData="c:\logs\traces.svclog" />  
              </listeners>  
      </source>  
   </sources>  
</system.diagnostics>  

Se o <machineSettings enableLoggingKnownPii="Boolean"/> elemento existir fora do arquivo Machine.config, o sistema lançará um ConfigurationErrorsExceptionarquivo .

As alterações só entram em vigor 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 enableLoggingKnownPii for false.

O administrador da máquina e o implantador de aplicativos devem ter extrema cautela ao usar esses dois switches. Se o registro de PII estiver habilitado, as chaves de segurança e as PII serão registradas. Se estiver desativado, os dados confidenciais e específicos do aplicativo ainda serão registrados nos cabeçalhos e corpos das mensagens. Para uma discussão mais aprofundada sobre privacidade e proteção de PII de serem expostas, consulte Privacidade do usuário.

Atenção

A PII não está oculta em mensagens malformadas. Tais mensagens são registradas como estão, sem qualquer modificação. Os atributos mencionados anteriormente não têm efeito sobre isso.

Ouvinte de rastreamento personalizado

Adicionar um ouvinte de rastreamento personalizado na fonte de rastreamento do Log de Mensagens é um privilégio que deve ser restrito ao administrador. Isso ocorre porque ouvintes personalizados mal-intencionados podem ser configurados para enviar mensagens remotamente, o que leva à divulgação de informações confidenciais. Além disso, se você configurar um ouvinte personalizado para enviar mensagens no fio, como, por exemplo, para um banco de dados remoto, deverá impor o controle de acesso adequado nos logs de mensagens na máquina remota.

Eventos acionados pelo registro de mensagens

A lista a seguir lista todos os eventos emitidos pelo registro de mensagens.

  • Logon de mensagens: esse evento é emitido quando o log de mensagens está habilitado na configuração ou por meio do WMI. O conteúdo do evento é "O log de mensagens foi ativado. Informações confidenciais podem ser registradas em texto não criptografado, mesmo que tenham sido criptografadas no fio, por exemplo, corpos de mensagens."

  • Log off de mensagens: esse evento é emitido quando o log de mensagens é desabilitado por meio do WMI. O conteúdo do evento é "O registro de mensagens foi desativado".

  • Log Known PII On: Este evento é emitido quando o registro de PII conhecidas está habilitado. Isso acontece quando o enableLoggingKnownPiimachineSettings atributo no elemento do arquivo Machine.config é definido como true, e o logKnownPiisource atributo do elemento no arquivo App.config ou Web.config é definido como true.

  • Registrar PII conhecidas não permitidas: esse evento é emitido quando o registro de PII conhecidas não é permitido. Isso acontece quando o logKnownPiisource atributo do elemento no arquivo App.config ou Web.config é definido como true, mas o enableLoggingKnownPiimachineSettings atributo no elemento do arquivo Machine.config é definido como false. Não é gerada nenhuma exceção.

Esses eventos podem ser visualizados na ferramenta Visualizador de Eventos que vem com o Windows. Para obter mais informações sobre isso, consulte Log de eventos.

Consulte também